MATLAB程序设计实验.docx
- 文档编号:4705672
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:25
- 大小:483.74KB
MATLAB程序设计实验.docx
《MATLAB程序设计实验.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计实验.docx(25页珍藏版)》请在冰豆网上搜索。
MATLAB程序设计实验
科学计算与数据处理实验报告
学 号
姓 名
实验名称
MATLAB程序设计实验
实验目的
1、掌握M文件的编辑、调试和性能剖析方法
2、掌握MATLAB脚本和函数的设计方法
3、掌握MATLAB程序的基本语法、关系运算和控制结构
4、掌握串演算函数的用法
实验方案
1、编写两段简短的代码,演示MATLAB脚本和函数的不同。
a)新建一个文件为randplt.m,
b)编写函数stderr验误差
2、编写程序演示循环(for、while)、分支(if-else-end、switch-case)和异常处理(try-catch)控制结构的用法,并尽量体现各种关系运算符(==、~=、<、>、<=、>=)的用法。
c)演示循环(for、while)
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
实验记录
1、编写两段简短的代码,演示MATLAB脚本和函数的不同。
a)新建一个文件为randplt.m,
data=randn(1,20);
plot(data);
运行结果:
保存后选择debug/run菜单或按F5键运行,观察workspace中多出了一个变量data。
b)编写函数stderr验误差
functionerr=stderr(arr)
%实验误差(标准差估计)evaluatealongeachcolumnofarr
err=std(arr)./sqrt(size(arr,1)-1);
文件存为stderr.m,运行时输入a=[1;2;3];建立一个列数组a,然后输入stderr(a)则给出a的方差
运行结果:
2、编写程序演示循环(for、while)、分支(if-else-end、switch-case)和异常处理(try-catch)控制结构的用法,并尽量体现各种关系运算符(==、~=、<、>、<=、>=)的用法。
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;
n=input('请输入一个数:
')
>>ifn<2
disp('输入的数大于等于3')
else
whilen>=0
sum11=sum11+1
sum22=sum22+2
n=n-1
end
end
运行结果:
b)分支(if-else-end、switch-case)
if-else-end分支结构:
>>%if-else-end分支:
a=input('请输入一个数字:
')
ifa>1
a=a+1
else
a=a+2
end
运行结果:
switch-case分支结构:
>>%switch-case
>>n=input('请输入成绩:
');
>>k=floor(n/10);
switchk
case{8,9,10}
disp('优秀')
case7
disp('良好')
case6
disp('一般')
otherwise
disp('不及格')
end
运行结果:
c)异常处理(try-catch)
>>a=magic(4);b=eye(3);
try
c=a*b
c=a(1:
3,1:
3)*b
catch
c=a(1:
3,1:
3)*b
end
运行结果:
3、编写程序演示return、input、keyboard、pause、break、error、lasterr、warning、lastwarn等指令的功能和用法。
a)return的功能和用法
>>%return
>>n=input('请输入成绩:
');
>>k=floor(n/10);
switchk
case{8,9,10}
disp('优秀')
return
case7
disp('良好')
return
case6
disp('一般')
return
otherwise
disp('不及格')
return
end
运行结果:
b)input的功能和用法
>>%input
>>n=input('请输入一个数字:
');
>>k=mod(n,2);
switchk
case1
disp('您输入的为奇数')
return
case0
disp('您输入的为偶数')
return
end
运行结果:
c)keyboard的功能和用法
%keyboard启动键盘管理pause暂停执行
>>n=input('请输入成绩:
');
ifn<=0
errordlg('请输入大于0的数');
keyboard
else
k=floor(n/10);
switchk
case{8,9,10}
disp('优秀')
return
case7
disp('良好')
return
case6
disp('一般')
return
otherwise
disp('不及格')
return
end
end
运行结果:
d)pause的功能和用法
%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');
运行结果:
暂停之后:
e)break的功能和用法
>>%break
forn=1:
100
ifmod(n,17)~=0
continue
end
break
end
disp('100以的自然数中第一个能被17整除的数是:
')
disp(n)
运行结果:
f)error的功能和用法
n=input('请输入一个数字:
');
if(n>0)
y=log(n);
else
error('定义域大于0');
end
运行结果:
g)lasterr的功能和用法
>>lasterr
运行结果:
h)warning的功能和用法
%warning
>>n=input('请输入成绩:
');
ifn<=0
warning('请输入大于0的数');
else
k=floor(n/10);
switchk
case{8,9,10}
disp('优秀')
return
case7
disp('良好')
return
case6
disp('一般')
return
otherwise
disp('不及格')
return
end
end
运行结果:
i)lastwarn的功能和用法
>>warning('定义域大于0');
>>warning('定义域小于0');
>>lastwarn
运行结果:
4、串演算实验:
设计实验演示验证eval与feval的功能和用法。
a)eval的功能和用法
K>>a='b=magic(4)';
eval(a)
运行结果:
b)feval的功能和用法
K>>h=sin;
x=-pi:
pi/10:
pi;
y=feval(h,x);
运行结果:
5、程序调试实验。
a)出错时
运行结果:
b)改正后
把原程序中的xxmu=xmu*size(yy)改为
xxmu=xmu*ones(size(yy))。
运行结果:
改正后,函数实现的功能:
6、程序性能剖析实验
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结构。
通过自己调试一个程序,明白了程序调试的基本方法。
自己通过对一个程序的性能剖析,知道了性能剖析的基本方法。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 程序设计 实验