一、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