MATLAB程序设计实验Word文档格式.docx
《MATLAB程序设计实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计实验Word文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
d)分支(if-else-end、switch-case)
e)异常处理(try-catch)
3、编写程序演示return、input、keyboard、pause、break、error、lasterr、warning、lastwarn等指令的功能和用法。
a)return的功能和用法
b)input的功能和用法
c)keyboard的功能和用法
d)pause的功能和用法
e)break的功能和用法
f)error的功能和用法
g)lasterr的功能和用法
h)warning的功能和用法
i)lastwarn的功能和用法
4、统串演算实验:
设计实验演示验证eval与feval的功能和用法。
a)eval的功能和用法
b)feval的功能和用法
5、程序调试实验。
a)出错时
b)改正后
6、程序性能剖析实验
a)profileon
b)relaxzzy(300)
c)profileviewer
实验记录
data=randn(1,20);
plot(data);
运行结果:
保存后选择debug/run菜单或按F5键运行,观察workspace中多出了一个变量data。
functionerr=stderr(arr)
%实验误差(标准差估计)evaluatealongeachcolumnofarr
err=std(arr)./sqrt(size(arr,1)-1);
文件存为stderr.m,运行时输入a=[1;
2;
3];
建立一个列数组a,然后输入stderr(a)则给出a的方差
a)演示循环(for、while)
For循环
>
%for循环
sum1=0;
sum2=0;
n=input('
请输入一个数:
'
)
ifn<
2
disp('
输入的数大于等于3'
else
fori=1:
n
sum1=sum1+1
sum2=sum2+2
end
end
While循环
%while循环
sum11=0;
sum22=0;
whilen>
=0
sum11=sum11+1
sum22=sum22+2
n=n-1
b)分支(if-else-end、switch-case)
if-else-end分支结构:
%if-else-end分支:
a=input('
请输入一个数字:
ifa>
1
a=a+1
a=a+2
switch-case分支结构:
%switch-case
n=input('
请输入成绩:
);
k=floor(n/10);
switchk
case{8,9,10}
优秀'
case7
良好'
case6
一般'
otherwise
不及格'
c)异常处理(try-catch)
a=magic(4);
b=eye(3);
try
c=a*b
c=a(1:
3,1:
3)*b
catch
%return
return
%input
k=mod(n,2);
case1
您输入的为奇数'
case0
您输入的为偶数'
%keyboard启动键盘管理pause暂停执行
ifn<
errordlg('
请输入大于0的数'
keyboard
k=floor(n/10);
%pause
x=-pi:
pi/10:
pi
y1=(sin(x)).^2;
subplot(1,2,1);
plot(x,y1,'
r'
pause(5)
y2=x.^2+x+3;
subplot(1,2,2);
plot(x,y2,'
g'
暂停之后:
%break
forn=1:
100
ifmod(n,17)~=0
continue
break
100以的自然数中第一个能被17整除的数是:
disp(n)
if(n>
0)
y=log(n);
error('
定义域大于0'
lasterr
%warning
warning('
warning('
定义域小于0'
lastwarn
4、串演算实验:
K>
a='
b=magic(4)'
;
eval(a)
h=sin;
pi;
y=feval(h,x);
把原程序中的xxmu=xmu*size(yy)改为
xxmu=xmu*ones(size(yy))。
改正后,函数实现的功能:
profileon
relaxzzy(300)
profileviewer
函数实现的功能:
ProfileSummary窗口显示:
relaxzzy函数的进行运行分析
由上例图可知,relaxzzy函数中最耗时的语句是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
其执行时间为0.651s,被调用次数为3000000次。
这个语句可以加速,用过向量化改为矩阵的形式,就可以加速了。
实验总结
MATLAB脚本和函数的异同点:
M脚本文件与M函数文件都是由一系列的语句组成的相对独立的一个运行体。
M脚本文件没有参数传递功能,但M函数文件有此功能。
M函数文件的格式有严格规定,它必须以“function”开头。
函数文件与脚本文件的主要区别在于:
函数文件一般都要带参数,都要有返回结果,而脚本文件没有参数与返回结果。
函数文件的变量是局部变量,运行期间有效,运行完毕就自动被清除,而脚本文件的变量是全局变量,执行完毕后仍被保存在存中。
通过这次试验我掌握了M文件的编写,运行和调试。
知道了函数文件和脚本文件的相同点和不同点。
同时也掌握了matlab程序设计中的基本语法,关系运算,以及for和while循环结构,if-else-end和switch的分支结构和异常处理的try-catch结构。
通过自己调试一个程序,明白了程序调试的基本方法。
自己通过对一个程序的性能剖析,知道了性能剖析的基本方法。