MATLAB程序设计实验.docx

上传人:b****4 文档编号:4705672 上传时间:2022-12-07 格式:DOCX 页数:25 大小:483.74KB
下载 相关 举报
MATLAB程序设计实验.docx_第1页
第1页 / 共25页
MATLAB程序设计实验.docx_第2页
第2页 / 共25页
MATLAB程序设计实验.docx_第3页
第3页 / 共25页
MATLAB程序设计实验.docx_第4页
第4页 / 共25页
MATLAB程序设计实验.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

MATLAB程序设计实验.docx

《MATLAB程序设计实验.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计实验.docx(25页珍藏版)》请在冰豆网上搜索。

MATLAB程序设计实验.docx

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结构。

通过自己调试一个程序,明白了程序调试的基本方法。

自己通过对一个程序的性能剖析,知道了性能剖析的基本方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1