MATLAB练习作业已做_第1页
MATLAB练习作业已做_第2页
MATLAB练习作业已做_第3页
MATLAB练习作业已做_第4页
MATLAB练习作业已做_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、说明:如在测试时请将程序中的中文字符改为西文(部分程序为手写,并未经matlab验证)2012年春MATLAB基础第一次上机练习与作业练习:脚本文件建立一个文件名为 helloWorld 的脚本文件,运行该文件时显示出如下文字:Hello World!I am going to learn MATLAB提示: 用 disp显示字符串,将要显示的字符号串用单引号引起来。如 'This is a string'练习:变量获取并保存当前的日期与时间l 用函数clock生成一个变量,变量名为startl 用size查看start的维数,它是一个行向量还是一个列向量?l start包含什

2、么内容?用help clock查看l 用函数datestr将向量start转换成字符串,得到新的变量,名为startStringl 将start与startString保存为mat 文件,文件名为startTimel 在练习建立的脚本文件 helloWorld.m文件中,用load函数导入变量startTime, 并显示如下文字:I started learning MATLAB on * start date and time*练习3:标量你将要以指数增长的速度来学习MATLAB, 将如下内容添加到helloWorld.m文件中l 假设你的学习时间是一个常量,为1.5 days,将此时间用秒

3、表示,赋给变量taul 假设课程持续时间为5 days. 将这个时间单位转换为秒,保存在变量endofClass中?l 将学到的知识描述为t的函数,函数方程为:l 用函数datestr将向量start转换成字符串,得到新的变量startStringl 在课程结束时间endofClass,你将学到多少知识?用变量knowledgeAtEnd表示 (指数函数exp)l 用变量knowledgeAtEnd,显示如下语句:At the end of the MATLAB class, I will know X% of MATLAB提示: 将数转换成字符串,用num2str练习:向量运算计算从课程开始

4、到现在经过的时间,用秒表示.l 在helloWorld.m中,建立一系列变量,变量名分别为:secPerMin, secPerHour, secPerDay,secPerMonth(假设每个月30.5天),以及secPerYear.l 将变量按次序 secPerYear,secPerMonth, secPerDay,secPerHour, secPerMin,1 排列,构成一个行向量,命名为secConversion?l 用时钟函数clock生成一个向量currentTimel 计算经过的时间elapsedTime,用currentTime与start相减.l 通过向量secondConver

5、sion 与elapsedTime的数量积运算计算时间t,l 显示当前的时间水平,用变量currentKnowledge表示. ()l 显示如下语句:At this time, I know X% of MATLAB练习5:向量函数计算你的学习轨迹.l 在helloWorld.m中,建立线性时间向量tVec,包含从0到endOfClass的10000个样本点.l 计算在每个时间点处对应的知识值,仍然用函数练习6:向量寻址什么时候你将学到50%的MATLAB知识?.l 在向量knowledgeVec中,查找最接近0.5的元素所在的位置.l 用halfTime保存对应的时间l 显示如下语句:I w

6、ill know half of MATLAB after X days要将halfTime用secPerDay转换成天数练习7:绘图画出学习的轨迹图?.l 在helloWorld.m中,打开一个新的图形窗口(figure)l 用向量tVec与knowledgeVec画出知识轨迹,画图时,将时间单位转换为天l 用图形窗口中的zoom in 查看halfTime,与前面计算结果相比较.clear,clc;disp('Hello World!');disp('I am going to learn MATLAB');start=clock;startx,starty

7、=size(start);if startx>starty disp('一个行向量')else disp('一个列向量');endstartString=datestr(start);save startTime.mat start startString;waittime=input('为使程序达到较好的执行效果,请输入程序需要暂停时间(秒):');state = 0; h = waitbar(0, '请等待.', 'Name', '进度条', 'CreateCancelBtn

8、9;, . 'state = 1; delete(h); clear h'); h1 = findall(h, 'style', 'pushbutton'); set(h1, 'string', '取消', 'fontsize', 10) for i = 1 : 100 waitbar(i/100, h, '已暂停时间百分比' num2str(i) '%'); pause(waittime/100); if state break endendif exist(

9、9;h') = 1 delete(h); endload startTimedisp('I started learning MATLAB on * start date and time*');tau=1.5*24*3600;endofClass=5*24*3600;knowledgeAtEnd=1-exp(-tau/endofClass);disp('At the end of the MATLAB class, I will know ',num2str(knowledgeAtEnd*100),' % of MATLAB');sec

10、PerMin=60;secPerHour=3600;secPerDay=24*secPerHour;secPerMonth=30.5*secPerDay;secPerYear=12*secPerMonth;secondConversion=secPerYear,secPerMonth, secPerDay,secPerHour, secPerMin,1;currentTime=clock;elapsedTime=currentTime-start;elapsedTime=elapsedTime.*secondConversion;currentknowledge=1-exp(-elapsedT

11、ime/endofClass);disp('At this time, I know ',num2str(sum(currentknowledge)*100),'% of MATLAB');tVec=linspace(0,endofClass,1000);knowledgeVec=1-exp(-tVec./endofClass);halfTimeindex=find(abs(knowledgeVec-0.5)<1e-3);halfTime=sum(tVec(halfTimeindex)/length(halfTimeindex)/secPerDay;dis

12、p('I will know half of MATLAB after ',num2str(halfTime),' days');plot(tVec/secPerDay,knowledgeVec);xlabel('Day');2012年春MATLAB基础第二次上机练习与作业练习:函数文件建立一个文件名为 plotSin 的函数文件,要求:l 函数声明为:functon plotSin(f1)l 该函数用于画出频率为的正弦波在区间上的图像.l 每个周期含有16个数据点function plotsin(f1)xnum=16*f1;x=linspace

13、(0,2*pi,xnum);plot(x,sin(f1*x);练习:条件语句l 修改函数plotSin(f1)使之有两个输入变量,形式为plotSin(f1,f2)l 如果输入的变量个数为1,执行以前写的绘图命令.否则显示文字'Two inputs were given'l 提示:输入变量的数目用内置变量名:narginfunction plotsin(f1,f2)if nargin=1xnum=16*f1;x=linspace(0,2*pi,xnum);plot(x,sin(f1*x);else error('Two inputs were given');e

14、nd练习3:绘图命令l 修改PlotSin中的绘图命令,将数据点类型改为正方形,线形改为红色虚线,线宽为2.设置数据点填充色为黑色(属性名为:LineWidth, MarkerFaceColor)l 如果有2个输入变量,新开一个绘图窗口,上下排列,并且激活上面图形窗口plotSin(6)plotSin(2,3) function plotsin(f1,f2)if nargin=1 h1=figure(1); xnum=16*f1; x=linspace(0,2*pi,xnum); plot(x,sin(f1*x),'-rs','MarkerFaceColor',

15、'k','LineWidth',2);else h2=figure(2); h1=figure(1); xnum=16*f1; x=linspace(0,2*pi,xnum); plot(x,sin(f1*x),'-rs','MarkerFaceColor','k','LineWidth',2);end练习:半对数图在过去5年里,某课程学生人数分别为:15,25,55,115,144.班级规模似乎呈指数增长趋势,用半对数图来验证.要求绘制的图形效果如下l 相关函数:semilogy,xlabel,y

16、label,axis,titlel 数据点为玫红,正方形,没有折线相连.点的大小为10,点边线的宽度为4.x=1:5;y=15,25,55,115,144;h=semilogy(x,y,' sr','MarkerSize',10,'Linewidth',4);xlabel('x');ylabel('y');title('My Semilogy plot');axis(0,6,10,300)set(h,'Color',1 0.3 0.6);练习5:条形图生成一个有5个随机数构成的向量,

17、画出一幅条形图,条形块为红色.效果如下:bar(1:5,rand(5,1),'r')练习6:圆的绘制l 建立一个画圆的函数文件.function x y=getCircle(center,r) 运行程序得到的是圆上点的坐标l 调用程序画出同心圆及五环图,效果如下col='b','k','r','y','g'subplot 121r1=1:5;center1=0,0;for i=1:5 x,y=getCircle(center1,r1(i); plot(x,y,col(i),'Linewidt

18、h',2); hold onendaxis equalaxis(-5 5 -5 5)subplot 122r2=0.5;center2=-1 0;0 0;1 0;-0.5 -0.5;0.5 -0.5;for i=1:5 x,y=getCircle(center2(i,:),r2); plot(x,y,col(i),'Linewidth',2); hold onendaxis equalaxis(-1.5 1.5 -1.5 1)2012年春MATLAB基础第三次上机练习与作业练习:演示文件命令窗口中,键入:demo,出现MATLAB的demo演示窗口,然后选择:MATLA

19、B下的Matrices,依次选取其中的Basic Matrix operation 、Matrix manipulation两个示例,进行MATLAB矩阵运算的学习。练习2:一维数组的创建要求在闭区间上产生具有10个等距采样点的一维数组。试用两种不同的指令实现。(提示:冒号生成法,定点生成法)X=0:pi/9:2*pi;X=linspace(0,2*pi,10);练习3:二维数组的标识与寻访l 先运行clear, A=magic(4),然后根据A写出两个矩阵:一个对角阵B,其相应元素由A的对角元素构成;另一个矩阵C,其对角元素全为0,而其余元素与对应的A阵元素相同。(提示:diag)Clear

20、A=magic(4);B=diag(A);C=A;for i=1:4C(i,i)=0;endl 由指令A=rand(3,5)生成二维数组A,试求该数组中所有大于0.5的元素的位置,分别求出它们的“全下标”和“单下标”。(提示:find和sub2ind)A=rand(3,5);B1,B2=find(A>0.5);B=B1;B2;C=sub2ind(size(A),3,2);A(3,2)=A(C);练习4:向量化运算l 在时间区间 0,10中,绘制曲线。要求分别采取“标量循环运算法”和“数组运算法”编写两段程序绘图。(注意:体验数组运算的简捷。)标量循环运算法t=linspace(0,10)

21、;for i=1:length(t)y(i)=1-exp(-0.5*t(i)*cos(2*t(i);endplot(t,y);数组运算法t=linspace(0,10);y=1-exp(-0.5*t).*cos(2*t);plot(t,y);练习5:非数l 先运行指令x=-3*pi:pi/15:3*pi; y=x; X,Y=meshgrid(x,y); warning off; Z=sin(X).*sin(Y)./X./Y; 产生矩阵Z。(1)请问矩阵Z中有多少个“非数”数据?(2)用指令surf(X,Y,Z); shading interp观察所绘的图形。(3)请写出绘制相应的“无裂缝”图形

22、的全部指令。(提示:isnan, sum, eps)x=-3*pi:pi/15:3*pi;y=x; X,Y=meshgrid(x,y);warning off;Z=sin(X).*sin(Y)./X./Y;Z1,Z2=find(isnan(Z);fprintf('矩阵Z中有%d个“非数”数据n',length(Z1);%length(Z1)=sum(Z1)surf(X,Y,Z);shading interp“无裂缝”图形的全部指令x=-3*pi:pi/15:3*pi;y=x; X,Y=meshgrid(x,y);warning off;Z=sin(X).*sin(Y)./X./

23、Y;Znan=find(isnan(Z(1,:);eps=0.1;espe=x(Znan-1):eps:x(Znan+1);x=x(1:Znan-1),espe,x(Znan+1:end);y=x;X,Y=meshgrid(x,y);warning off;Z=sin(X).*sin(Y)./X./Y; surf(X,Y,Z);shading interpl 在图形绘制语句中,或函数值为不定式NaN,则相应的结果不绘制出来,试利用该规律绘制的曲面图,并剪切下的部分(图形效果如下)t=-4:0.05:4;x=t;y=t;X,Y=meshgrid(x,y);Z=sin(X.*Y);count=;f

24、or i=1:length(t) for j=1:length(t) if x(i)2+y(j)2<=0.53 Z(i,j)=nan; end endendsurf(X,Y,Z);练习6:sum的使用下面有一段程序,企图用来解决如下计算任务:有矩阵,当依次取10, 9, 8, 7, 6, 5, 4, 3, 2, 1时,计算矩阵“各列元素的和”,并把此求和结果存放为矩阵Sa的第k行。例如时,A阵为,此时它各列元素 的和是一个行数组,并把它保存为Sa的第3行。问题:该段程序的计算结果对吗?假如计算结果不正确,请指出错误发生的根源,并改正之。for k=10:-1:1; A=reshape(1

25、:10*k,k,10); Sa(k,:)=sum(A); end; Sa(提示:本题专为揭示sum对行数组的作用而设计。仔细观察程序运行后所得到的Sa正确吗? )sum函数求和方式错误for k=10:-1:1; A=reshape(1:10*k,k,10); Sa(k,:)=sum(A,1); end; disp(Sa);2012年春MATLAB基础第四次上机练习与作业练习:矩阵及线性方程组求解l 将矩阵、和组合成新矩阵:l 若,考虑线性方程组,求出系数矩阵的秩及增广矩阵的秩,判断方程组是否有解 (rank)l 若有解,求出一个特解,若无解,求出一个最小二乘解。(用)a=4,2;5,7;b=

26、7,1;8,3;c=5,9;6,2;a=reshape(a,1,4);b=reshape(b,1,4);c=reshape(c,1,4);A=;for i=1:4A=A;a(i),b(i),c(i);endd=1,2,3,4;fprintf('系数矩阵的秩:%dn', rank(A);And=A,d'fprintf('增广矩阵的秩:%dn', rank(And);%无解rank(A)<rank(And)C=d'A;disp('最小二乘解:');disp(C);练习2:一般代数方程的解先画出函数的图形进行观察,再用fzero求

27、该函数的零点。fun=(t)(sin(t).2).*exp(-0.1*t)-0.5*abs(t);gu=-2,-.5,.5,2;for i=1:4 zerosindex(i)=fzero(fun,gu(i);enddisp('零点x=');disp(zerosindex);t=linspace(-10,10);y=(sin(t).2).*exp(-0.1*t)-0.5*abs(t);plot(t,y);hold online(-10,10,0,0);练习3:多项式拟合l 假设产生数据的原始模型为,在-3, 3中取值,受到噪声0.3*(rand(n,1)-0.5) 的污染。l 对含噪声的数据做3次多项式拟合,画出拟合曲线进行比较。l 如果做2次多项式拟合,结果如何?x=linspace(-3,3); t=1 -5 0 2;y=x.3-5*x.2+2;ra

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论