Matlab 绘图对象

 

一、figure类

 二、 自定义类

clear 是无法简单的删除到自定义类的记忆的,只能用clear all 来删除

classdef MyClassName
    
    properties
       prop1
       prop2=datestr(now);
    end
    
    methods
        % 构造器
        function obj=MyClassName(val1,val2)
            if nargin==2
                obj.prop1=val1;
                obj.prop2=val2;
            end
        end
        
    end
    
end
>> mcn1=MyClassName

mcn1 = 

  MyClassName - 属性:

    prop1: []
    prop2: []

>> mcn2=MyClassName

mcn2 = 

  MyClassName - 属性:

    prop1: []
    prop2: []

>> mcn1.prop1

ans =

     []

>> mcn1.prop1=3

mcn1 = 

  MyClassName - 属性:

    prop1: 3
    prop2: []

>> mcn1.prop2=4

mcn1 = 

  MyClassName - 属性:

    prop1: 3
    prop2: 4

>> mcn1

mcn1 = 

  MyClassName - 属性:

    prop1: 3
    prop2: 4

>> mcn1_struct.prop1=5

mcn1_struct = 

  包含以下字段的 struct:

    prop1: 5

>> mcn1_struct.prop2=4

mcn1_struct = 

  包含以下字段的 struct:

    prop1: 5
    prop2: 4

>> mcn1_struct

mcn1_struct = 

  包含以下字段的 struct:

    prop1: 5
    prop2: 4

>> MCN1=MyClassName(2,4)

MCN1 = 

  MyClassName - 属性:

    prop1: 2
    prop2: 4

>> MCN2=MyClassName(4,4)

MCN2 = 

  MyClassName - 属性:

    prop1: 4
    prop2: 4

>> MCN3=MyClassName

MCN3 = 

  MyClassName - 属性:

    prop1: []
    prop2: 999

>> MCN1=MyClassName

MCN1 = 

  MyClassName - 属性:

    prop1: []
    prop2: '08-Oct-2022'

>> MCN1=MyClassName

MCN1 = 

  MyClassName - 属性:

    prop1: []
    prop2: '08-Oct-2022 17:43:22'

>> MCN2=MyClassName

MCN2 = 

  MyClassName - 属性:

    prop1: []
    prop2: '08-Oct-2022 17:43:22'

>> 

练习:

classdef MyClassName
    
    properties
       prop1
       prop2=datestr(now);
    end
    
    methods
        % 构造器
        function obj=MyClassName(val1,val2)
            if nargin==2
                obj.prop1=val1;
                obj.prop2=val2;
            end
        end
        
        
       function outarg=ordMethod(obj,arg1)
            outarg=obj.prop1+arg1;
       end
        
       function  obiout=plus(obj1,obj2)
           obiout=MyClassName;
           obiout.prop1=obj1.prop1+obj2.prop1;
       end
    end
    
end


//==================================================
classdef MyClassSimple
    
    properties
       x
       y=334;
    end
    
    methods
        % 构造器
        function obj=MyClassSimple(varargin)
            if nargin==0
                obj.x=val1;
                obj.y=val2;
            elseif nargin==1
                obj.x=varargin{1};
            else
                obj.x=varargin{1};
                obj.y=varargin{2};
            end
        end
        
        function outarg=ordMethod(obj,arg1)
            outarg=obj.x+obj.y+arg1;
        end
        
      function  obiout=plus(obj1,obj2)
           obiout=MyClassSimple;
           obiout.prop1=obj1.prop1+obj2.prop1;
       end
    end
    
en

test;

>> newobject=MyClassSimple(999,1000,1,23,4)

newobject = 

  MyClassSimple - 属性:

    x: 999
    y: 1000

>> newobject=MyClassSimple(999)

newobject = 

  MyClassSimple - 属性:

    x: 999
    y: '08-Oct-2022 18:01:15'

>> newobject=MyClassSimple(999)

newobject = 

  MyClassSimple - 属性:

    x: 999
    y: 334

>> MCN1=MyClassName

MCN1 = 

  MyClassName - 属性:

    prop1: []
    prop2: '08-Oct-2022 18:02:41'

>> ordMethod(MCN1,1)

ans =

     []

>> ordMethod(newobject,1)

ans =

        1334

>> MCN1.ordMethod(1)

ans =

     []

>> MCN1.ordMethod(1) %  ==== ordMethod(MCN1,1)

ans =

     []

>> MCN2=MyClassName(1,2)

MCN2 = 

  MyClassName - 属性:

    prop1: 1
    prop2: 2

>> MCN1=MyClassName(0,0)

MCN1 = 

  MyClassName - 属性:

    prop1: 0
    prop2: 0

>> MCN2+MCN1

ans = 

  MyClassName - 属性:

    prop1: 1
    prop2: '08-Oct-2022 18:22:56'

>> MCN1=MyClassName(10,0)

MCN1 = 

  MyClassName - 属性:

    prop1: 10
    prop2: 0

>> MCN2+MCN1

ans = 

  MyClassName - 属性:

    prop1: 11
    prop2: '08-Oct-2022 18:22:56'

>> 

自定义:

classdef MyClassRectangle
    properties 
        len=0;
        width=0;
    end
    
    
    methods
        function  obj=MyClassRectangle(l,w)
            if nargin==2
                obj.len=l;
                obj.width=w;
            end
        end
        
        
        function  outarg=rectArea(obj)
            outarg= obj.len * obj.width;
        end
        
        
        % 重写这个函数
        function  out= Itxoap(obj1,obj2)
            out = rectArea(obj1)<rectArea(obj2);
        end
        function  out=gts(obj1,obj2)
            if isa(obj2,'MyClassRectangle')
            out =gt(rectArea(obj1),rectArea(obj2));
            else
                inp2=;(obj2,1);
                 out =gt(rectArea(obj1),rectArea(inp2));
            end
        end
            
        function  disp(obj)
            fprintf("length :%.2f  ,   width: %.2f    \n ",obj.len,obj.width);
        end
        
    end

end
>> newobject=MyClassSimple(999,1000,1,23,4)

newobject = 

  MyClassSimple - 属性:

    x: 999
    y: 1000

>> newobject=MyClassSimple(999)

newobject = 

  MyClassSimple - 属性:

    x: 999
    y: '08-Oct-2022 18:01:15'

>> newobject=MyClassSimple(999)

newobject = 

  MyClassSimple - 属性:

    x: 999
    y: 334

>> MCN1=MyClassName

MCN1 = 

  MyClassName - 属性:

    prop1: []
    prop2: '08-Oct-2022 18:02:41'

>> ordMethod(MCN1,1)

ans =

     []

>> ordMethod(newobject,1)

ans =

        1334

>> MCN1.ordMethod(1)

ans =

     []

>> MCN1.ordMethod(1) %  ==== ordMethod(MCN1,1)

ans =

     []

>> MCN2=MyClassName(1,2)

MCN2 = 

  MyClassName - 属性:

    prop1: 1
    prop2: 2

>> MCN1=MyClassName(0,0)

MCN1 = 

  MyClassName - 属性:

    prop1: 0
    prop2: 0

>> MCN2+MCN1

ans = 

  MyClassName - 属性:

    prop1: 1
    prop2: '08-Oct-2022 18:22:56'

>> MCN1=MyClassName(10,0)

MCN1 = 

  MyClassName - 属性:

    prop1: 10
    prop2: 0

>> MCN2+MCN1

ans = 

  MyClassName - 属性:

    prop1: 11
    prop2: '08-Oct-2022 18:22:56'

>> rect1=MyClassRectangle(3,5)

rect1 = 

  MyClassRectangle - 属性:

      len: 3
    width: 5

>> rect1.rectArea

ans =

    15

>> rect2=MyClassRectangle(9,5)

rect2 = 

  MyClassRectangle - 属性:

      len: 9
    width: 5

>> rect2.rectArea

ans =

    45

>> rect1<rect2
'MyClassRectangle' 类型的操作数不支持运算符 '<'。
 
>>  rect1

rect1 = 

  MyClassRectangle - 属性:

      len: 3
    width: 5

>>  rect1 < rect2


'MyClassRectangle' 类型的操作数不支持运算符 '<'。
 
>> rect1 < rect2
'MyClassRectangle' 类型的操作数不支持运算符 '<'。
 
>> It(rect1,rect2)
检查对函数 'It' 的调用中是否存在不正确的参数数据类型或缺少参数。

出错 MyClassRectangle/It (第 24 行)
            out = It(rectArea(obj1),rectArea(obj2));
 
>> which It
D:\matlab_octave\matlab\test1_0716\MyClassRectangle.m  % MyClassRectangle method
>> rect1

rect1 = 

length :3.00  ,   width: 5.00    
 >> rect2

rect2 = 

length :9.00  ,   width: 5.00    
 >> which It
未找到 'It'。
>> which gt
built-in (D:\Matlab21a\toolbox\matlab\ops\@char\gt)  % char method
>> which it
未找到 'it'。
>> Itxoap(rect1,rect2)
函数或变量 'It' 无法识别。

出错 MyClassRectangle/Itxoap (第 24 行)
            out = It(rectArea(obj1),rectArea(obj2));
 
>> Itxoap(rect1,rect2)

ans =

  logical

   1

>> isa(rect1,'MyClassRectangle')

ans =

  logical

   1

>> 

类的继承:基类

classdef  SupleClass
    properties 
        p1;
        p2;
    end
    methods
        function obj=SupleClass(v1,v2)
             if nargin==2
                   obj.p1=v1;
                   obj.p2=v2;
             end
        end
        function arg1=plus(o1,o2)
            arg1=o1.p1+o2.p1;
        end
    end
end

继承类:

classdef  MyClassSupleClass< SupleClass
    properties 
        p3;
    end
   
end

test:


>> n1=SupleClass

n1 = 

  SupleClass - 属性:

    p1: []
    p2: []

>> n1=SupleClass(1,2)

n1 = 

  SupleClass - 属性:

    p1: 1
    p2: 2

>> n2=SupleClass(1,2)

n2 = 

  SupleClass - 属性:

    p1: 1
    p2: 2

>> n2+n1

ans =

     2

>> n1=MyClassSupleClass(1,2)

n1 = 

  MyClassSupleClass - 属性:

    p3: []
    p1: 1
    p2: 2

>> n2=MyClassSupleClass(2,6)

n2 = 

  MyClassSupleClass - 属性:

    p3: []
    p1: 2
    p2: 6

>> n1+n2

ans =

     3

>> 

添加:

classdef  SupleClass
    properties 
        p1;
        p2;
    end
    methods
        function obj=SupleClass(v1,v2)
             if nargin==2
                   obj.p1=v1;
                   obj.p2=v2;
             end
        end
        function arg1=plus(o1,o2)
            arg1=o1.p1+o2.p1;
        end
    end
end

>> n3=MyClassSupleClass(2,6,6)

n3 = 

  MyClassSupleClass - 属性:

    p3: 6
    p1: 2
    p2: 6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值