- 编写两段简短的代码,演示MATLAB脚本和函数的不同。
- 编写程序演示循环(for、while)、分支(if-else-end、switch-case)和异常处理(try-catch)控制结构的用法,并尽量体现各种关系运算符(==、~=、<、>、<=、>=)的用法。
- 编写程序演示return、input、keyboard、pause、break、error、lasterr、warning、lastwarn等指令的功能和用法。
- 串演算实验:设计实验演示验证eval与feval的功能和用法。
- 程序调试实验:将以下代码保存为Debug_Test.m文件
function [nn,xx,xmu,xstd]=Debug_Test(x)
%本程序供调试实验用
xmu=mean(x);
xstd=std(x);
[nn,xx]=hist(x);
if nargout==0
barzzy0(nn,xx,xmu,xstd)
end
function barzzy0(nn,xx,xmu,xstd)
clf,
bar(xx,nn);hold on
Ylimit=get(gca,'YLim');
yy=0:Ylimit(2);
xxmu=xmu*size(yy);
xxL=xxmu/xmu*(xmu-xstd);
xxR=xxmu/xmu*(xmu+xstd);
plot(xxmu,yy,'r','Linewidth',3)
plot(xxL,yy,'rx','MarkerSize',8)
plot(xxR,yy,'rx','MarkerSize',8),hold off
然后,在命令窗口中执行以下命令:
randn('seed',1),x=randn(1,100);Debug_Test(x)
对程序错误进行调试,总结调试过程,指出并改正所给程序的出错语句,记录程序出错时和调通后显示的图形。
- 程序性能剖析实验:将以下代码保存为relaxzzy.m文件
function elapt=relaxzzy(iter)
% 本程序供性能剖析实验用
sz=102;
plate=magic(sz)*64/(sz*sz);
newplate=plate;
im=image(plate);
axis off
set(gcf,'DoubleBuffer','on')
shg
tic
for i=1:iter
for j=2:(sz-1)
jm1=j-1;
jp1=j+1;
for k=2:(sz-1)
km1=k-1;
kp1=k+1;
newplate(j,k)=(plate(jm1,km1)/2+plate(jm1,k)+...
plate(jm1,kp1)/2+plate(j,km1)+plate(j,kp1)+...
plate(jp1,km1)/2+plate(jp1,k)+plate(jp1,kp1)/2)/6;
end
end
plate=newplate;
if (0==rem(i,5))
set(im,'cdata',plate)
drawnow
end
end
elapt=toc;
close
利用剖析器(profile viewer)对relaxzzy(300)进行运行分析,找出relaxzzy函数中最耗时的语句,记录其执行时间、被调用次数,并指出该语句是否可以被加速。