在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3930|回复: 4

M文件和面向对象编程

[复制链接]
发表于 2008-10-14 13:15:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 eecsseudl 于 2013-4-29 10:23 编辑

文中有大量的例子,是一份很好的资料。
【例7.10.2-1】本例演示:创建“先进先出”fifo队列queue类的全过程。在本例中,读者应充分注意:构架域(Fields of a structure array)和定义在其上的方法函数(Method function)之间的关系。


[@queue\queue.m]
function q=queue(v)
%@QUEUE\QUEUE
% 调用格式
%
%
superiorto('double','sparse','struct','cell','char','inline','sym');

%
<6>

if nargin>1;error('Too many arguments.');end;
if nargin==0
%


q.value=[];

q.name='';


q=class(q,'queue');
elseif isa(v,'queue');
%


q=v;
%

else
%

q.value=v;
%


q.name=inputname(1);

if isempty(q.name)

q.name=['(' class(v) ')'];

end

q=class(q,'queue');
%
<20>

end

4
[@queue\display.m]
function display(q,ki,kj)
%QUEUE\DISPLAY
% 调用格式
%
%
%
if nargin==0;error('缺少输入宗量,即被显示对象!');end
switch nargin
case 1

[m,n]=size(q);

vname=inputname(1);


if isempty(vname)



fprintf('ans=\n');

elseif fprintf('%s=\n',vname);

end;

if isempty(q)


fprintf('
[ empty
'
)
%<17>


fprintf('%s',class(q))
%<18>


fprintf(' ]\n\n');
%<19>


elseif m*n==1;


fprintf('
%s: '
,q.name);



disp(q.value);



fprintf('\n');

else


fprintf('
[ %d*%d '
,m,n]
%<25>


fprintf('%s',class(q))
%<26>


fprintf(' ]\n\n');
%<27>


end
case 2

disp(['The content of ',inputname(1),'(',int2str(ki),')'])

disp(['is a ''',class(q(ki).value),''' object'])


fprintf('
%s=\n'
,q(ki).name);


disp(q(ki).value);


fprintf('\n');

case 3

disp(['The content of ',inputname(1),'(',int2str(ki),',',int2str(kj),')'])

disp(['is a ''',class(q(ki,kj).value),''' object'])


fprintf('
%s=\n'
,q(ki,kj).name);


disp(q(ki,kj).value);


fprintf('\n');

end

5
[@queue\isempty.m]
function f=isempty(q)
%@QUEUE\ISEMPTY
f=0;
[m,n]=size(q);
if m*n==1;

if isempty(q.value) & isempty(q.name)
%<6>


f=1;


end;

end;

6
[ @queue\comein.m]
function q=comein(p,varargin)
% @QUEUE\COMEIN

% 调用格式
%
%
%
if nargin<2 error('comein needs at least two arguments.');end;
if ~isa(p,'queue') error([inputname(1),' is not a queue']);end;
q0=p;
qzzy=class(p);
%
<10>

for i=1:length(varargin)

temp=varargin{i};


s=eval([qzzy,'(temp)']);
%
<13>


s.name=inputname(i+1);


if isempty(s.name)


s.name=['(' class(temp) ')'];


end


if isempty(q0)


q0=s;


else


q0=[q0 s];


end

end
if nargout==0;

assignin('caller',inputname(1),q0);


evalin('caller',inputname(1));

else

q=q0;

end

[@queue\goout.m]
function [n,v,q]=goout(p)
% @QUEUE\GOOUT

% 调用格式
%
%
%
%
%
if nargin==0 ;error('No queue specifide.');end;
if nargout>3;error('Too many output arguments.');end;
if nargin>1 error('Too many input arguments.');end;
if ~isa(p,'queue');error([inputname(1),' is not a queue.']);end;
if isempty(p)

q1=p;

else

[m,n]=size(p);

v1=p(1).value;n1=p(1).name;


if m*n==1


q1=queue;


else


q1=p(2:end);

end

end
if nargout<3;

assignin('caller',inputname(1),q1);

end;
if nargout==0,


evalin('caller',inputname(1));

end
if nargout>=1;v=v1;end;
if nargout>=2;n=n1;end;
if nargout==3;q=q1;end;





.

M文件和面向对象编程.doc

3.79 MB, 下载次数: 16 , 下载积分: 资产 -2 信元, 下载支出 2 信元

发表于 2008-10-14 15:09:14 | 显示全部楼层
xia look
发表于 2009-6-1 11:44:00 | 显示全部楼层
下来看看再说
发表于 2009-6-2 01:54:11 | 显示全部楼层
thank you
发表于 2009-6-2 14:43:28 | 显示全部楼层
thank you
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-1 19:16 , Processed in 0.034157 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表