• Matlab 中@ 的用法


            Matlab 中@的用法主要有:函数句柄、函数表达式、调用父类以及类文件夹。

            前两种有很多介绍,后两种涉及类,介绍的人很少。前2个例子,参考了其它博客,总感觉@用法都写的不全,所以在此基础上,补充了3、4 。感兴趣的,可以去看看徐潇编著的《matlab面向对象编程-从入门到设计模式》(注:不是广告、不是推销、纯粹的是觉得这本书很不错吗,想推荐给各位)。

    1. 充当函数句柄的作用

            用法:变量1 = @+(内置)函数名

            调用:变量2 = 变量1参数1,参数2,……);

    注:输入参数是上一行设置是的函数输入参数!,(内置)函数是定义好的(系统定义、自己定义都行)

    1. >> f = @cos
    2. f =
    3. 包含以下值的 function_handle:
    4. @cos
    5. >> f(pi/6)
    6. ans =
    7. 0.8660
    8. >> f(pi/3)
    9. ans =
    10. 0.5000

    2. 构造函数表达式

            用法:变量名=@(输入参数列表)运算表达式

            例如:构造一个一元二次方程函数x2+4x+4=y,求解x=3、x=4时,y的值?

    1. >> y = @(x)(x.^2+4*x+4)
    2. y =
    3. 包含以下值的 function_handle:
    4. @(x)(x.^2+4*x+4)
    5. >> y([3,4])
    6. ans =
    7. 25 36

    3. 调用父类(基类)

            要调用超类方法,方法名称'XXX'必须与子类方法'***'的名称匹配

            比如:新建一个Ponit3D类,该类继承的父类是Point2D。(代码来源于徐潇编著的《matlab面向对象编程-从入门到设计模式》)

    classdef Point2D < handle

    % 定义父类

       properties

          x;

          y;

       end

       methods

           function Obj = Point2D(x0,y0)

                Obj.x = x0;

                Obj.y = y0;

           end

           function print(Obj)

               disp(['x=',num2str(Obj.x)]);

               disp(['y=',num2str(Obj.y)]);

           end

           function Sum = add(Obj)

                Sum = Obj.x+Obj.y;

            end

       end

    end

    classdef Point3D < Point2D

    % 定义子类

        properties

           z;

        end

        methods

            function Obj = Point3D(x0,y0,z0)

                Obj = Obj@Point2D(x0,y0);

                Obj.z = z0;

            end

            function print(Obj)

               print@Point2D(Obj)

               disp(['z=',num2str(Obj.z)]);

            end

            function Sum = add(Obj)

                temp = add@Point2D(Obj);

                Sum = temp+Obj.z;

            end

        end

    end

            本代码共有三个@使用实例(红色标注)。

            用法:父子类同名方法(或对象)@父类名称

             注:“要调用超类方法,方法名称'Obj'必须与子类方法print'的名称匹配”

            如果将Poni3D类中方法名称'Print'改成'Print1',则会显示'print1' 不是基类 'Point2D' 的可访问方法。因此,需注意的是,子类调用父类的方法时,名称必须与父类匹配。

    4. 存放类文件夹

    用法:文件夹命名:@+类名

    eg:@Point2D

     不足之处,敬请斧正!

    路漫漫其修远兮,吾将上下而求索!

  • 相关阅读:
    leaflet 地图遮罩、扣洞
    行深智能亮相乌镇互联网大会,荣获直通乌镇全球互联网大赛一等奖
    centos7环境下安装jdk8
    使用net/http/pprof时,发现6000端口是Chrome限制的非安全端口,报错ERR_UNSAFE_PORT
    Java学生管理系统(纯练手)
    RocketMQ源码(15)—消费者DefaultMQPushConsumer启动主要流程源码
    java毕业设计日租房管理系统源码+lw文档+mybatis+系统+mysql数据库+调试
    如何将 Docsify 项目部署到 CentOS 系统的 Nginx 中?
    【附源码】Python计算机毕业设计社区团购系统
    EF执行迁移时提示provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的
  • 原文地址:https://blog.csdn.net/weixin_41649786/article/details/127978973