matlab如何编写类

来源:互联网 发布:淘宝拓客助手破解版 编辑:程序博客网 时间:2024/06/07 04:15

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
    ifisa(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 '.'
    switchindex(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 '.'
    switchindex(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编写完毕。