实验三MATLAB的基本语法二.docx
- 文档编号:6012905
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:17
- 大小:269.25KB
实验三MATLAB的基本语法二.docx
《实验三MATLAB的基本语法二.docx》由会员分享,可在线阅读,更多相关《实验三MATLAB的基本语法二.docx(17页珍藏版)》请在冰豆网上搜索。
实验三MATLAB的基本语法二
实验三:
MATLAB的基本语法实验
(二)
一、实验目的
1、掌握基本绘图方法;
2、掌握M文件的编写;
二、实验仪器
1、计算机
2、MATLAB软件环境
三、实验内容
1、画出课本图2-4至2-7、图2-10、2-12至2-14;练习例题2-6-1/2-6-2以及函数文件mean.m/logspace.m/humps.m;
2、利用plot()将函数:
y=x,y=sin(x),y=x+sin(x)画在同一画面上;
3、画函数y=sin(x)图。
要求:
用subplot()将画面分成四个,并且绘制的形式不同;
4、利用plot3()画空间曲线:
x=sin(t),y=cos(t),z=cos(2t);
5、分别用mesh和surf画空间曲面:
z=x*exp(-x*x-y*y);
6、编写主程序文件:
计算1+2+…+n<2000时的最大n值;
7、编写函数文件:
计算数列的和、均值。
四、实验过程
1、画出课本图2-4至2-7、图2-10、2-12至2-14;练习例题2-6-1/2-6-2以及函数文件mean.m/logspace.m/humps.m;
课本2-4过程及图示:
输入如下指令:
>>clear
>>t=0:
0.5:
4*pi
t=
Columns1through12
00.50001.00001.50002.00002.50003.00003.50004.00004.50005.00005.5000
Columns13through24
6.00006.50007.00007.50008.00008.50009.00009.500010.000010.500011.000011.5000
Columns25through26
12.000012.5000
>>y=exp(-0.1*t).*sin(t);
>>y1=exp(-0.1*t).*sin(t+1);
>>plot(t,y),holdon
>>plot(t,y1,':
'),holdon
>>
得到的图形窗口为:
图2-4两根曲线画在同一图上
课本2-5过程及图示:
程序如下
>>clear
>>t=0:
.2:
2*pi;
>>y=exp(-0.1*t).*sin(t);
>>y2=exp(-0.5*t).*sin(5*t+1);
>>plot(t,y,'+g',t,y2,':
r')
>>title('线型、点型和颜色')
>>xlabel('时间'),ylabel('Y')
>>
图2-5两组长度不同的【t,y】画在同一图上
课本2-6过程及图示:
程序如下
>>clear
>>t=0:
.5:
4*pi;
>>t2=0:
.2:
2*pi;
>>y=exp(-0.1*t).*sin(t);
>>y2=exp(-0.5*t2).*sin(5*t2+1);
>>y3=5*y2;
>>plotyy(t,y,t2,y3)
>>grid
>>gtext('t,t2')
>>gtext('y'),gtext('y3')
>>
>>
图2-6双纵坐标绘图
课本2-7过程及图示:
程序如下
>>clear
>>t=0:
.5:
4*pi;
>>y=exp(-0.1*t).*sin(t);
>>subplot(2,2,1),stem(t,y)
>>title('stem(t,y)'),pause
>>subplot(2,2,2),stairs(t,y)
>>title('stairs(t,y)'),pause
>>subplot(2,2,3),bar(t,y)
>>title('bar(t,y)'),pause
>>subplot(2,2,4),fill(t,y,'r')
>>title('fill(t,y,''r'')')
图2-7同一函数的几种不同的绘制形式
课本2-10过程及图示:
程序如下
>>clear
>>z=0:
0.1:
4*pi;
>>x=cos(z);
>>y=sin(z);
>>plot3(x,y,z)
>>
图2-10空间螺旋线
课本2-12、13过程及图示:
程序如下
>>clear
>>x=-8:
0.5:
8;
>>y=x';
>>X=ones(size(y))*x;Y=y*ones(size(x));
>>R=sqrt(X.*Y+Y.*X);
>>z=sin(R)./R;
Warning:
Dividebyzero.
(Type"warningoffMATLAB:
divideByZero"tosuppressthiswarning.)
>>mesh(z),pause
>>R=sqrt(X.*X+Y.*Y)+eps;z=sin(R)./R;figure
(1),mesh(z)
>>R=abs(X)+abs(Y)+eps;z1=sin(R)./R;figure
(2),surf(z1)
>>
图2-12z=sin(R)./(R)的三维曲面图
图2-13当R取一范数时z=sin(R)./(R)的三维曲面图
课本2-14过程及图示:
程序如下
>>clear
>>[X,Y]=meshgrid(-8:
0.5:
8,-8:
0.5:
8);
>>subplot(2,2,1),R=sqrt(X.^2+Y.*Y);z=sin(R)./(R);meshc(z),pause
Warning:
Dividebyzero.
(Type"warningoffMATLAB:
divideByZero"tosuppressthiswarning.)
>>title('meshc(z),shadingflat'),shadingflat
>>subplot(2,2,2),R=sqrt(X.^2+Y.*Y)+eps;z=sin(R)./(R);meshz(z),pause
>>title('meshz(z),shadinginterp'),shadinginterp
>>subplot(2,2,3),R=abs(X)+abs(Y)+eps;z1=sin(R)./(R);surfc(z1),pause
>>title('meshc(z1),shadingflat'),shadingflat,%colormap(gray)
>>subplot(2,2,4),surfl(z1),view(20,0)
>>title('surfl(z1),view(20,0)')
>>
图2-14mesh和surf命令的其它形式
课本2-6-1及2-6-2程序:
程序如下
%求fibonacci.m文件的程序
clear,closeall
R=input('输入fibonacci数的最大范围R='),f=[11];i=1;
whilef(i)+f(i+1) end f,plot(f) %求素数prime.m文件的程序 disp('求素数(primenumber)的程序'),pause N=input('输入素数的最大范围N='),x=2: N; foru=2: sqrt(N) n=find(rem(x,u)==0&x~=u); x(n)=[]; end,x panse,x=rand(4,4), pause,mean(x) >> %mean.m文件的程序 functiony=mean(x,dim)%函数定义行 ifnargin==1,%函数主体 dim=min(find(size(x)~=1)); ifisempty(dim),dim=1;end y=sum(x)/size(x,dim); else y=sum(x,dim)/size(x,dim); end >> %logspace.m文件的程序 functiony=logspace(a1,a2,n) %logspace对数的均分数组 %logspace(a1,a2)在10^a1与10^a2之间生成长度为50的对数数组 %如果a2为pi,则这些点在10^a1和pi之间 %logspace(a1,a2,n)的数组长度为n ifnargin==2%输入变量分析及n的默认值设置 n=50; end; ifa2==pi%a2为pi时的设置 a2=log10(pi); end y=(10).^[a1+(0: n-2)*(a2-a1)/(n-1),a2];%将结果返回到输出变量 >> %humps.m文件的程序 function[out1,out2]=humps(x) ifnargin==0 x=0: 0.05: 1; end y=1./((x-0.3).^2+0.1)+1./((x-0.9).^2+0.4)-6; ifnargout==2 out1=x; out2=y; else out1=y; end 2、利用plot()将函数: y=x,y=sin(x),y=x+sin(x)画在同一画面上的过程如下: 程序如下所示: >>clear >>x=0: 0.5: 4*pi; >>y1=x;y2=sin(x);y3=x+sin(x); >>plot(x,[y1;y2;y3]) >>title('y=x,y=sin(x),y=x+sin(x)的图像') >>xlabel('x'),ylabel('Y') >>gridon >>gtext('y1'),gtext('y2'),gtext('y3') >> 图2y=x,y=sin(x),y=x+sin(x)在同一个图上面显示 3、画函数y=sin(x)图。 要求: 用subplot()将画面分成四个,并且绘制的形式不同; 程序如下所示: >>clear >>x=0: 0.5: 4*pi; >>y=sin(x); >>subplot(2,2,1),stem(x,y) >>title('抽样图stem(x,y)'),pause >>subplot(2,2,2),stairs(x,y) >>title('梯形图stair(x,y)'),pause >>subplot(2,2,3),bar(x,y) >>title('条状图bar(x,y)'),pause >>subplot(2,2,4),fill(x,y,'r') >>title('填充图fill(x,y)') >> 图3y=sin(x)几种不同形式的图在同一个图上面显示 4、利用plot3()画空间曲线: x=sin(t),y=cos(t),z=cos(2t); 程序如下所示: >>clear >>t=0: 0.5: 4*pi; >>x=sin(t);y=cos(t);z=cos(2*t); >>plot3(x,y,z) >> 图4画空间曲线x=sin(t),y=cos(t),z=cos(2*t)的图像 5、分别用mesh和surf画空间曲面: z=x*exp(-x*x-y*y); 程序如下所示: >>clear >>x=-10: 0.5: 10;y=x'; >>X=ones(size(y))*x;Y=y*ones(size(x)); >>z=X.*exp(-X.*X-Y.*Y); >>subplot(2,1,1),mesh(z) >>title('mesh(z)网格图') >>subplot(2,1,2),surf(z) >>title('surf(z)曲面图') >> 图5分别用mesh和surf画z=x*exp(-x*x-y*y)的图像 6、编写主程序文件: 计算1+2+…+n<2000时的最大n值; 写出的函数命名为fsumx.m文件,意思是求求和的逆函数,写好后只要在命令窗口(commandwindows)中输入fsumx(2000)即可得到最大的n值。 程序如下所示: functionfsumx(q) n=0;p=0; whilep n=n+1; p=p+n; end n=n-1 然后再命令窗口中输入以下指令即可得出结果: >>clear >>fsumx(2000) n= 62 >> 7、编写函数文件: 计算数列的和、均值。 等差求和函数如下所示: 命名为shulie_sum.m文件(求等差数列) 说明: 函数中a0是首项,d是公差,n是等差数列的项数。 程序如下所示: functionshulie_sum(a0,d,n) p=a0;ax=a0;n=n-1; whilen>0 n=n-1; ax=ax+d; p=p+ax; end p 可以试几个例子,知道结果 >>clear >>shulie_sum(0,1,4) p= 6 >>shulie_sum(2,3,5) p= 40 >> 写完求和函数后,很容易就可以写出求均值函数,命名为shulie_junzhi.m 程序如下所示: functionshulie_junzhi(a0,d,n) p=a0;ax=a0;m=n;m=m-1; whilem>0 m=m-1; ax=ax+d; p=p+ax; end p=p/n 这里很容易验证其正确性,我就不给出运行的实例了。 等比求和函数如下所示: 命名为dengbi_shulie_sum.m文件(求等差数列) 说明: 函数中a0是首项,q是公比,n是等比数列的项数。 程序如下所示: functiondengbi_shulie_sum(a0,q,n) p=a0;ax=a0;n=n-1; whilen>0 n=n-1; ax=ax*q; p=p+ax; end p 等比数列求平均值函数如下所示: functiondengbi_shulie_junzhi(a0,q,n) p=a0;ax=a0;m=n;m=m-1; whilem>0 m=m-1; ax=ax*q; p=p+ax; end p=p/n 五、实验的收获、心得、问题、困难和建议 本次实验的题目很适合入门的我们训练,花了大概4、5个小时,终于做完了,感觉就是不很熟练,以后会去多阅读些程序,并且实时运用,多读、多练才能达到融会贯通的境界!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 MATLAB 基本 语法