Matlab 类函数基本运用

有时候常看文献附带得matlab代码的时候,经常会遇到有一些m文件是类函数,这引起我的注意,也想适当的学习下,以后自己用的时候也比较方便,把相关的函数都放在一个类中,不必有那么多冗杂的文件。

本文只是笔者浅显的研究下写成,只是探讨怎么正确的去用,但是高级用法或者理论上的错误还请海涵,也算是我自己记录下用法,忘记了的话还能自己看看,算是笔记了。

类函数的构造

首先感谢这篇博主的总结:

matlab——之class类(详细总结)_注释远方的博客-CSDN博客_matlab 类

先举个例子

classdef (AllowedSubclasses = ?lxx) lx < handle%<是继承的意思
    %这个是帮助内容 在函数名下方写的注释就是帮助内容
    %
    properties
        a 
    end
    
    methods
        function x = lx(var) %类定义 'lx' 最多只能定义一个构造函数。
            x.a = var;
        end
        
    end
    
    methods(Static) %要被引用必须加(Static),且引用的方式为lx.lx1
        function x = lx1(var)
            x.a = var + 1;
        end
        
        function x = lx2(var)
            x  = var + 1;
        end
        
        function x = lx3(var)
            x  = lx4(var);
        end
    end

end
function x = lx4(var)
   x  = var;
end
classdef lxx < lx %继承lx
    properties
        c
    end
    methods(Static)
        function x = lx1(var)
            x = lx1@lx(var); %继承lx里的lx1计算后的属性值
            x.c = var + 2;
        end
    end
end
clear
import lx.*; % 有这句话就不用lx.lx1了直接用lx1  
A = lx(10); %类定义 'lx' 最多只能定义一个构造函数。
B = lx.lx1(10);%类函数
B1 = lxx.lx1(10);

C = lxxx(10);   %不写handle类对象间的赋值操作,会引发一次所有属性值的拷贝
C1 = C;
C1.a = 11;

A1 = A;   %handle类的对象在赋值时,不创建新的拷贝,只复制一个句柄
A1.a = 12; %会让A里的也变成12,就像是指针

aa = lx.lx2(10);
aa1 = lx.lx3(10);
help lx

首先在新建的脚本里,使用classdef就可以创建一个类,后面lx就是类名。

properties是定义一个类属性变量,它可以在整个类函数中使用。

感觉也没什么能说的,就说几个注意的地方吧。

1.在类函数中,只能有一个名字为类函数名的构造函数

2.我尝试了下,构造函数和成员函数中都不能用其他的成员函数,只能引用非此类的函数。

3.method要使用Static,才能在主程序中使用method里面的函数。

4.关于继承,继承的使用大概是我第三部分代码,这么使用,定义类函数名的时候要用(< 要继承的类),然后在写成员函数的时候,假设如果成员函数a要继承 被继承类函数b里面的成员函数c,a和c的名字要一样,要用(a的名字@被继承的类b名字(a函数的参数))这样的格式给a函数中变量赋值。

5.<号是继承的意思,有个<handle的用法,如果使用了这个,那么handle类的对象在赋值时,不创建新的拷贝,只复制一个句柄,如果a = b,如果更改b值,a也会改。

6.使用import 类函数名.*  可以直接使用其中的成员函数,不需要如lx.lx1这样的写法。

7.函数的help可以直接在函数下面写注释,就是help的内容。

测试代码是随意写的,只是为了试试功能。

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

空花缱绻三分

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值