MATLAB课后习习题_第1页
MATLAB课后习习题_第2页
MATLAB课后习习题_第3页
MATLAB课后习习题_第4页
MATLAB课后习习题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、5、利用rand函数产生(0,1)间的均匀分布的10*10随机矩阵A,然后统计A中大于等于的元素的个数。解:A=rand(10);B=A >= ;C=sum(B);count=sum(C)运行结果(每次运行结果是不同的,仅作参考):count=326、利用randn函数产生均值为0,方差为1的10*10随机矩阵A,然后统计A中大于且小于的元素的个数。解:A=randn(10);B=(A<&(A>C=sum(sum(B)运行结果(每次运行结果是不同的,仅作参考):C=481、解:if and(a<1,b<=语句1;elseif and(a<1,b>

2、;语句2;elseif and(a>=1,b<=语句3;else语句4;2、有一矩阵A,找出矩阵中值等于1的元素,并将它们重新排列成列向量B。解:A=2*rand(4);k=find(A<=1);A(k)=;%删除下标为k的元素B=A'运行结果(每次运行结果是不同的,仅作参考)B = 3、在一测量矩阵A(100*3)中,存在有奇异值(假设大于100的置认为是奇异值),编程实现删去奇异值所在的行。解:A=120*randn(10,3);i,j=find(A>100);A(i,:)= %删去存在奇异值的行4、在给定的100*100矩阵中,删去整行为0的行,删去整列为

3、0的列。解:A=diag(1 2 3 4,1)B=any(A)i,j=find(B=0)A(:,i)= %删除全为0的列B=any(A')i,j=find(B=0)A(j,:)= %删除全为0的行运行结果:初始值:A = 0 1 0 0 0 0 0 2 0 0 0 0 0 3 0 0 0 0 0 4 0 0 0 0 0操作后:A = 1 0 0 0 0 2 0 0 0 0 3 0 0 0 0 41、将窗口分割成四格,分别绘制正弦、余弦、正切和余切函数曲线,并加上适当的标注。程序为:x=0:pi/50:2*pi;k=1 26 51 76 101;x(k)=;%删除正切和余切的奇异点fig

4、ure(1)subplot(2,2,1)plot(x,sin(x),'k-'),grid onlegend('ity=sin(x)')title('y=sin(x)')xlabel('x'), ylabel('y') subplot(2,2,2)plot(x,cos(x),'r-'),grid onlegend('ity=cos(x)')title('y=con(x)')xlabel('x'), ylabel('y') subplot(

5、2,2,3)plot(x,tan(x),'k'),grid onlegend('ity=tan(x)')title('y=tan(x)')xlabel('x'), ylabel('y') subplot(2,2,4)plot(x,cot(x),'b-'),grid onlegend('ity=cot(x)')title('y=cot(x)')xlabel('x'), ylabel('y')运行如下: 2、绘制多峰函数peaks和三角函数

6、多条曲线。 多峰函数peaks:x,y=meshgrid(-3:3);z=peaks(x,y);x1=x(1,:);figure(1)plot(x1,z),grid ontitle('二维多峰函数')图形为: x,y=meshgrid(-3:3);z=peaks(x,y);figure(1)plot3(x,y,z),grid ontitle('三维多峰函数') 三角函数多条曲线: 程序为:t=-pi:pi/20:pi;y1=sinh(t); %双曲正弦y2=cosh(t); %双曲余弦figure(1)subplot(2,1,1)plot(t,y1,'r

7、-',t,y2,'k-'),grid onlegend('ity1=sinh(t)','ity2=cosh(t)')title('三角函数1')xlabel('t'), ylabel('y') subplot(2,1,2)plot(t,sin(t),'k-'),grid onhold on %保持原有图像函数plot(t,cos(t),'r-')legend('ity2=cos(t)','ity1=sin(t)')title(&

8、#39;三角函数2')xlabel('t'), ylabel('y') 运行图形为: 3、将图形窗口分成两个,分别绘制以下函数在-3,3区间上的曲线,并利用axis调整轴刻度,使他们具有相同缩放尺度。y1=2x+5; y2=x2-3x+1。程序为:x=-3:3;y1=2*x+5; y2=x.2-3*x+1;figure(1)subplot(2,2,1)plot(x,y1,'r-'),grid onlegend('ity1=2*x+5')title('y1=2x+5')xlabel('x'),

9、 ylabel('y1')subplot(2,2,2)plot(x,y2,'k-'),grid onlegend('ity2=x.2-3*x+1')title('y2=x2-3x+1')xlabel('x'), ylabel('y2') subplot(2,2,3)plot(x,y1,'r-'),grid onlegend('ity1=2*x+5')title('调整后的y1=2x+5')axis(-3 3 -10 10)xlabel('x&#

10、39;), ylabel('y1') subplot(2,2,4)plot(x,y2,'k-'),grid onlegend('ity2=x.2-3*x+1')title('调整后的y2=x2-3x+1')axis(-3 3 -10 10) %调整坐标轴xlabel('x'), ylabel('y2') 运行后的图形: 4、绘制饼图。程序为:x=190 33 45 42 45;explode=0 1 0 0 0;figure(1)subplot(2,1,1)colormap hsvpie(x,exp

11、lode)gtext('生活费')gtext('资料费')gtext('电话费')gtext('衣服')gtext('其它')title('二维饼图') subplot(2,1,2)colormap hsvpie3(x,explode)title('三维饼图')图形为: 5、画出函数z=(x-2)2+()2+sin(xy)的三维曲线和网格曲线。程序为:x,y=meshgrid(0:10); %为三维绘图产生x,y数据矩阵z=(x-2).2+.2;figure(1)subplot(2,

12、1,1) mesh(x,y,z),grid on %绘制网格曲线title('网格曲线')subplot(2,1,2)plot3(x,y,z),grid ontitle('三维曲线')6、画出下列函数的曲面及等高线图z=x2+y2+sin(xy)。程序为:x,y=meshgrid(0:pi/10:2*pi);z=x.2+y.2+sin(x*y);figure(1)subplot(2,1,1)surfc(x,y,z), grid ontitle('曲面和等高线') subplot(2,1,2)c,h=contour(x,y,z);set(h,

13、9;showtext','on','textstep',get(h,'levelstep')*2);title('等高线') 1、将图形窗口分成两个,分别绘制正割和余割曲线,并加上标注。程序为:x1=0:pi10:2*pi;figure(1)subplot(2,1,1)plot(x,sec(x),'k-'),grid onlegend('ity=sec(x)')title('y=sec(x)')xlabel('x'), ylabel('y')

14、subplot(2,1,2)plot(x,csc(x),'k-'),grid onlegend('ity=csc(x)')title('y=csc(x)')xlabel('x'), ylabel('y')运行后图形为: 2、画出对数和指数曲线并加上标注。x=:10;y1=log10(x);y2=exp(x);figure(1)subplot(2,1,1)plot(x,y1,'k-'),grid onlegend('ity1=log-10(x)')title('y1=log-1

15、0(x)')xlabel('x'), ylabel('y1') subplot(2,1,2)plot(x,y2,'k-'),grid onlegend('ity2=exp(x)')title('y2=exp(x)')xlabel('x'), ylabel('y2') 3、设有函数y=exp(x+5)+x.3,在半对数坐标系中绘制曲线。程序为:x=1:10;y=exp(x+5)+x.3;figure(1)subplot(2,1,1)plot(x,y,'r-'),

16、grid onlegend('ity=exp(x+5)+x.3')title('平面坐标')xlabel('x'), ylabel('y')subplot(2,1,2)semilogx(x,y,'k-'),grid on %半对数坐标轴legend('ity=exp(x+5)+x.3')title('半对数坐标')xlabel('x'), ylabel('y') 4、画出各种大小和形状的球和柱体。绘制柱体的程序为:t=0:pi/10:2*pi;figu

17、re(1)subplot(2,1,1)x,y,z=cylinder(2+cos(t);surf(x,y,z),axis squaretitle('复杂柱面体') subplot(2,1,2)cylinder, axis squaretitle('简单柱体')绘制球的程序为:figure(1)subplot(2,1,1)sphereaxis equaltitle('半径为1的球') subplot(2,1,2)x,y,z=sphere;x=2*x;y=2*y;z=2*z;surf(x,y,z),axis squaretitle('半径为2的

18、球')运行后的图形: 5、绘制三维条形图:程序为:Y=cool(7);figure(1)subplot(2,2,1),bar3(Y,'detached'),title('Detached')subplot(2,2,2),bar3(Y,'detached'),title('Width=')subplot(2,2,3),bar3(Y,'grouped'),title('Grouped')subplot(2,2,4),bar3(Y,'stacked'),title('Sta

19、cked')运行后的图形为: 6、绘制二维条形图程序为:Y=round(rand(5,3)*10);figure(1)subplot(2,2,1),bar(Y,'group'),title('Group')subplot(2,2,2),bar(Y,'stack'),title('Stack')subplot(2,2,3),barh(Y,'stack'),title('Stack')subplot(2,2,4),bar(Y,title('Width=')运行后的图形: 1、编写

20、M函数实现:求一个数是否为素数,在编写一主程序,要求通过键盘输入一个整数,然后完成判断其是否为素数。解:function prime(x)n=fix(sqrt(x);for i=2:n if rem(x,i)=0 a='fasle' return else a='true' end end运行结果:>> x=56;>> prime(x)a =fasle2、编写程序完成从表示字符的响亮中删去空格,并求出字符个数。解:function nstr,n=del(str)nstr=;k=find(str=' ');nstr=str(

21、k);n=length(nstr);end运行后为: str='dr hy fgh gtesd hgfds'>> nstr,n=del(str)nstr =drhyfghgtesdhgfdsn = 173、编写M函数统计十进制数值中0的个数,然后编写脚本文件,实现统计所有自然数12006中0的个数。解:M函数为:function y=geshu(x)s=num2str(x);n=length(s);m=0; if s(1)='0' disp('x is error'); return end for i=2:n if s(i)=

22、9;0' m=m+1; end end y=m;脚本文件为 'jiu4':sum=0;for x=1:2006 y=geshu(x); sum=sum+y;enddisp(sum)运行结果为:>> jiu4 5044、利用menu函数输入选择参数ch。当ch=1时,产生-10,10之间均匀分布的随机数;当ch=2时,产生-5,5之间均匀分布的随机数;当ch=3时,产生-1,1之间均匀分布的随机数;当ch=4时,产生均值为0,方差为1的正态分布随机数。要求使用switch函数。解:s=menu('ch','1','2&#

23、39;,'3','4');n=;switch s case 1,n=20*rand(3)-10 case 2,n=10*rand(3)-5 case 3,n=2*rand(3)-1 case 4,n=randn(3) otherwise disp('error')end运行后: 按下2后:n = 5、求阵列x的平均值和标准差解:function mean1,stdev=stat2(x)m,n=size(x);if m=1m=n;ends1=sum(x);s2=sum(x.2);mean1=s1/m;stdev=sqrt(s2/m-mean1.2)

24、;运行后:>> x=rand(4,4)+2;>> mean1,stdev=stat2(x)mean1 = stdev = 6、测试程序执行时间% tici=0;for t=0:.01:100 i=i+1; y(i)=sin(t);endtoc % tict=0:.01:100;y=sin(t);Toc运行后:Elapsed time is seconds.Elapsed time is seconds.1、产生menu选择输出颜色解:s=menu('color selection','red','green','b

25、lue','yellow','black')switch s case 1,scolor='red' case 2,scolor='green' case 3,scolor='blue' case 4,scolor='yellow' case 5,scolor='black' otherwise disp('error')end Scolor2、企业发放的奖金按个人完成的利润(I)提成。分段提成比例 wei 即如王某完成25万元利润时,个人可得y=10 x 1

26、0% + 10 x 5% + 5 x 2% (万元)据此编写程序,求企业职工的奖金。解function bonus=bon(I)n=fix(I/100000)if(n>4) n=4;endbon1=100000*;bon2=*(200000-100000);bon3=*(400000-200000);switch n case 0,bonus=I*100000; case 1 bonus=bon1+*(I-100000); case 2,3 bonus=bon1+bon2+*(I-200000); case 4,bonus=bon1+bon2+bon3+*(I-400000);end运行

27、后:>> I=1700000;>> bonus=bon(I)n = 17bonus = 320003、有一分数序列2/1,3/2,5/3/,8/5求前15项和。解:s=1;t=2;sum=0;x=t/s;sum=sum+x;for i=1:15z=t;t=s+t;s=z;x=t/s;sum=sum+x;endsum运行后:>> qiuhesum = 4、约瑟夫环解:n=input('please input n:');m=input('please input m:');b=1:n;i=1;c=0;s=0;while s<

28、;n if b(i)=0 c=c+1; if c=m s=s+1; a(s)=b(i); b(i)=0; c=0; end end if i=n i=0; end i=i+1;enda运行后:>> yueseplease input n:12please input m:3a = Columns 1 through 8 3 6 9 12 4 8 1 7 Columns 9 through 16 2 11 5 10 3 16 5 20 Columns 17 through 23 11 9 2 10 19 15 15、编写程序计算x在(-3,3)上,并画出曲线。解:function y

29、=func2(x)n=length(x);for i=1:n; if (x(i)>=-3)&&(x(i)<-1) y(i)=-x(i).2-4*x(i)-3/2; elseif (x(i)>=-1)&&(x(i)<1) y(i)=-x(i).2+1; else (x(i)>=1)&&(x(i)<3) y(i)=-x(i).2+4*x(i)-3/2; endend脚本为:x=-3:.01:3;y=func2(x);figure(1)plot(x,y),grid ontitle('y=func2(x)

30、9;)xlabel('x'), ylabel('y')运行后: 1、求矩阵 与 的逆矩阵和行列式。解: a=5 3 5;3 7 4;7 9 8; b=2 4 2;6 7 9;8 3 6; c1=inv(a) c2=det(a) d1=inv(b) d2=det(b)运行后:c1 = c2 = d1 = d2 = 2、解方程组 解:A=3 2 1;1 -1 3;2 4 -4;b=7 6 -2;Ab'运行后:ans = 2、对一组数据进行分别采用y1(t)=c1+c2exp(-t),y2(t)=d1+d2t.*exp(-t)拟合.解:t=1 2 3 4 5

31、6 7 8 9 10'y= 'a=ones(size(t) exp(-t);C=ay;b=ones(size(t) t.*exp(-t);D=by;T=10:-1:1'y1=ones(size(T) exp(-T)*C;y2=ones(size(T) T.*exp(-T)*D;plot(T,y1,'r-',T,y2,'k-',t,y,'o');legend('ity1(t)=c1+c2exp(-t)','ity2(t)=d1+d2t.*exp(-t)')title('曲线拟合'

32、;)xlabel('itt'),ylabel('ity')运行后: 4、矩阵 ,分别对a进行特征值分解、奇异值分解、LU分解、QR分解。解:>> v,d=eig(a,b)v = d = 0 0 0 0 0 0 >> a=9 1 2;5 6 3;8 2 7;>> u,s,v=svd(a)u = s = 0 0 0 0 0 0 v = >> l,u=lu(a)l = 0 0 0 u = 0 0 0 >> q,r=qr(a)q = r = 0 0 0 5、求解微分方程 。解:function dy=funf(

33、t,y)dy=5*y(1)-5*y(2)-6*y(3);3*y(1)-2*y(2)+5*y(3);2*y(1)-y(2)-4*y(3);脚本文件:x0=1,-4,5'tspan=30,100;t,x=ode45('funf',tspan,x0);plot3(x(:,1),x(:,2),x(:,3),grid ontitle('微分方程曲线')运行后: 微分方程组x=10(-x+y);y=28x-y-xz;z=xy-8z/3,x0=12,2,9,求微分方程在0,30上的解,并画出系统轨迹。解: 脚本文件: 二维图:三维图:2、分别用多项式和指数函数进行拟合

34、。y1(t)=c1+c2t+c3t2,y2(t)=d1+d2exp(t)解:t=0 'y= 'B1=ones(size(t) t t.*t;B2=ones(size(t) exp(t);A=B1y;C=B2y;T=0:.1:6'Y1=ones(size(T) T T.*T*A;Y2=ones(size(T) exp(T)*C;plot(T,Y1,'-',T,Y2,'-',t,y,'o')legend('itY1','itY2')3、 将(x-6)(x-3)(x-8)展开为系数多项式的形式。解

35、: >> a=6 3 8; >> pa=poly(a); >> ppa=poly2sym(pa) ppa = x3-17*x2+90*x-1444、 求解多项式x3-7x2+2x+40的根。解: >> r=1 -7 2 40; >> p=roots(r); 5、 求解在x=8时多项式(x-1)(x-2) (x-3)(x-4)的值。解: >> p=poly(1 2 3 4); >> polyvalm(p,8) ans = 8406、 计算多项式乘法(x2+2x+2)(x2+5x+4)。解: >> c=

36、conv(1 2 2,1 5 4) c = 1 7 16 18 87、 计算多项式除法(3x3+13x2+6x+8)/(x+4)。解: >> d=deconv(3 13 6 8,1 4) d = 3 1 29、微分方程组 当t=0, =1; =,求微分方程组t【0,25】上的解,并画出x1-x2的系统轨迹。解:function dy=fund(t,y)dy=(1);y(1)-4*y(2);脚本文件:x0=1,;tspan=0,20;T,Y=ode23('fund',tspan,x0);figure(1)plot(T,Y(:,1),'r-',T,Y(:

37、,2)legend('itx1','itx2')1利用下标建立多维阵列。产生一个3×3×2的多维矩阵A>>A=5 7 2; 0 1 2; 3 4 2; %产生一个3*3矩阵>>A(:, :, 2)=2 7 3; 4 2 8; 2 0 3A(:,:,1) = 5 7 2 0 1 2 3 4 2A(:,:,2) = 2 7 3 4 2 8 2 0 32利用MATLAB函数产生多维阵列。 利用MATLAB的函数(如rand、randn、ones、zeros等)都可直接产生多维阵列,在函数调用时可指定每一维的尺寸。例如,为产生

38、100×3×2维的正态分布随机数R,可输入>>R=randn(100, 3, 2);>>A=5*ones(3, 4, 2); %产生元素相同的多维阵列>>B=repmat(5, 3 4 2); %产生元素相同的多维阵列3利用cat函数建立多维阵列>>A=2 8; 0 5; B=1 8; 2 4; >>C=cat(3,A,B); >>D=cat(4,A,B); >> size(C)ans = 2 2 2>> size(D)ans = 2 2 1 2这说明得到的C为2×2&

39、#215;2维,而D为2×2×1×2维。1、冒泡法排序function y=bubblesort(x) %冒泡法排序. n=length(x); for i=1:n-1 for j=i+1:n if x(i)>x(j) temp=x(i); x(i)=x(j); x(j)=temp; end end end y=x;运行结果:>> x=12 34 654 2 5 76 23;>> y=bubblesort(x)y = 2 5 12 23 34 76 654以上为按照升序排列的,若要降序,则 if x(i)<x(j) temp=x(i); x(i)=x(j); x(j)=temp;即可运行结果:>> x=12 21 2 4 5 19 45 30;>> y=bubblesort(x)y =45 30 21 19 12 5 4 22、傅里叶变换应用付立叶变换并求频谱图clc; clf; clear all;fs=1000; t=0:1/fs:; f1=200; f2=300; x=sin(2*pi*f1*t)+sin(2*pi*f2*t); subplot(4,1,1); plot(n, x); title('f1(100Hz)f2(300Hz)的正弦信号,初相0');

温馨提示

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

评论

0/150

提交评论