Matlab 中@ 的用法

本文详细介绍了Matlab中@符号的四种用途:作为函数句柄、构造函数表达式、调用父类方法及用于类文件夹的命名。通过具体示例展示了如何使用这些功能,并强调了在面向对象编程中调用父类方法时需注意的方法名匹配问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

1. 充当函数句柄的作用

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

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

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

>> f = @cos
f =
  包含以下值的 function_handle:
    @cos
>> f(pi/6)
ans =
    0.8660
>> f(pi/3)
ans =
    0.5000

2. 构造函数表达式

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

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

>> y = @(x)(x.^2+4*x+4)
y =
  包含以下值的 function_handle:
    @(x)(x.^2+4*x+4)
>> y([3,4])
ans =
    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

 不足之处,敬请斧正!

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心网千结

若有所帮助,请点赞支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值