matlab可以写类,Matlab中如何编写一个类?

Matlab中如何编写一个类?

-- by benbenknight

Matlab中类的编写比较有特色,需要按如下几步进行:

(1)为类建立一个目录

以类MyClass,目录名为@MyClass。

(2)定义构造函数

在@MyClass目录下建立文件MyClass.m,代码清单如下:

---------------------------------------------------

function a = MyClass(varargin)

% MYCLASS 类MyClass的构造函数

%

% a = MyClass

% 定义类MyClass的一个对象a

% a = MyClass(b)

% 定义类MyClass的一个对象a,并将类MyClass的对象b赋值给a

% 实际上,也可用简单方法a=b来实现这一功能。

%

% by benbenknight

switch nargin

case 0

a.x= 0; %

类的一个数据成员

a =

class(a,'MyClass');

case 1

if

isa(varargin{1},'MyClass')

a = varargin{1};

else

error('MyClass: Wrong argument type')

end

otherwise

error('MyClass: Wrong number of input arguments')

end

---------------------------------------------------

(3)定义数据成员取值函数

在@MyClass目录下建立文件subsref.m,代码清单如下:

---------------------------------------------------

function b = subsref(a,index)

% SUBSREF 类MyClass的数据成员取值函数

%

% b = a.x

% 将类MyClass的对象a的成员变量x赋值给b

%

% by benbenknight

switch index(1).type

case '.'

switch

index(1).subs

case 'x'

b = a.x;

otherwise error('MyClass: undefined field');

end

otherwise

error('MyClass: undefined field');

end

---------------------------------------------------

(4)定义数据成员赋值函数

在@MyClass目录下建立文件subsasgn.m,代码清单如下:

---------------------------------------------------

function a = subsasgn(a,index,val)

% SUBSASGN 类MyClass的数据成员赋值函数

%

% a.x = val

% 将b赋值给类MyClass的对象a的成员变量x

%

% by benbenknight

switch index(1).type

case '.'

switch

index(1).subs

case 'x'

a.x = val;

otherwise error('MyClass: undefined field');

end

otherwise error('MyClass: undefined field');

end

---------------------------------------------------

(5)定义显示函数

在@MyClass目录下建立文件display.m,代码清单如下:

---------------------------------------------------

function display(p)

% DISPLAY 类MyClass的显示函数

%

% by benbenknight

disp(struct(p))

---------------------------------------------------

(6)写一个测试脚本

在某个Matlab能搜索到的目录下建立文件test_myclass.m,代码清单如下:

---------------------------------------------------

% test_myclass.m

a = MyClass; % 构造函数

a.x = 1; % 赋值函数

b = a.x; % 取值函数

a % 显示函数

---------------------------------------------------

(7)为类增加其他成员函数。

在目录@MyClass下建立相应的文件,同时修改测试脚本进行测试。

至此,类MyClass编写完毕。

你可能感兴趣的:(matlab可以写类)