练习3 MATLAB程序设计

合集下载

MATLAB编程练习(含答案很好的)

MATLAB编程练习(含答案很好的)

001双峰曲线图:z=peaks(40);mesh(z);surf(z)002解方程:A=[3,4,-2;6,2,-3;45,5,4];>> B=[14;4;23];>> root=inv(A)*B003傅里叶变换load mtlb ;subplot(2,1,1);plot(mtlb);>> title('原始语音信息');>> y=fft(mtlb);>> subplot(2,1,2);>> yy=abs(y);>> plot(yy);>> title('傅里叶变换')004输入函数:a=input('How many apples\n','s')005输出函数a=[1 2 3 4 ;5 6 7 8;12 23 34 45;34 435 23 34]a =1 2 3 45 6 7 812 23 34 4534 435 23 34disp(a)a =1 2 3 45 6 7 812 23 34 4534 435 23 34b=input('how many people\n' ,'s')how many peopletwo peopleb =two people>> disp(b)two people>>006求一元二次方程的根a=1;b=2;c=3;d=sqrt(b^2-4*a*c);x1=(-b+d)/(2*a)x1 =-1.0000 + 1.4142i>> x2=(-b-d)/(2*a)x2 =-1.0000 - 1.4142i007求矩阵的相乘、转置、存盘、读入数据A=[1 3 5 ;2 4 6;-1 0 -2;-3 0 0];>> B=[-1 3;-2 2;2 1];>> C=A*BC =3 142 20-3 -53 -9>> C=C'C =3 2 -3 314 20 -5 -9>> save mydat C>> clear>> load mydat C008编写数学计算公式:A=2.1;B=-4.5;C=6;D=3.5;E=-5;K=atan(((2*pi*A)+E/(2*pi*B*C))/D) K =1.3121009A=[1 0 -1;2 4 1;-2 0 5];>> B=[0 -1 0;2 1 3;1 1 2];>> H=2*A+BH =2 -1 -26 9 5-3 1 12>> M=A^2-3*BM =3 3 -62 13 -2-15 -3 21>> Y=A*BY =-1 -2 -29 3 145 7 10>> R=B*AR =-2 -4 -1-2 4 14-1 4 10>> E=A.*BE =0 0 04 4 3-2 0 10>> W=A\BW =0.3333 -1.3333 0.66670.2500 1.0000 0.25000.3333 -0.3333 0.6667 >> P=A/BP =-2.0000 3.0000 -5.0000-5.0000 3.0000 -4.00007.0000 -9.0000 16.0000>> Z=A.\BWarning: Divide by zero.Z =0 -Inf 01.0000 0.2500 3.0000-0.5000 Inf 0.4000>> D=A./BWarning: Divide by zero.D =Inf 0 -Inf1.0000 4.0000 0.3333-2.0000 0 2.5000010a=4.96;b=8.11;>> M=exp(a+b)/log10(a+b)M =4.2507e+005011求三角形面积:a=9.6;b=13.7;c=19.4;>> s=(a+b+c)/2;>> area=sqrt(s*(s-a)*(s-b)*(s-c))area =61.1739012逻辑运算A=[-1 0 -6 8;-9 4 0 12.3;0 0 -5.1 -2;0 -23 0 -7]; >> B=A(:,1:2)B =-1 0-9 40 00 -23>> C=A(1:2,:)C =-1.0000 0 -6.0000 8.0000 -9.0000 4.0000 0 12.3000>> D=B'D =-1 -9 0 00 4 0 -23>> A*Bans =1.0000 -184.0000-27.0000 -266.90000 46.0000 207.0000 69.0000>> C<Dans =0 0 1 01 0 0 0>> C&Dans =1 0 0 00 1 0 1>> C|Dans =1 1 1 11 1 0 1>> ~C|~Dans =0 1 1 11 0 1 0013矩阵运算练习:A=[8 9 5;36 -7 11;21 -8 5]A =8 9 536 -7 1121 -8 5>> BB =-1 3 -22 0 3-3 1 9>> RT=A*BRT =-5 29 56-83 119 6-52 68 -21>> QW=A.*BQW =-8 27 -1072 0 33-63 -8 45>> ER=A^3ER =6272 3342 294415714 -856 52608142 -1906 2390 >> BF=A.^3BF =512 729 12546656 -343 13319261 -512 125 >> A/Bans =3.13414.9634 -0.4024-1.2561 12.5244 -3.2317-1.9878 6.4512 -2.0366>> EKV=B\AEKV =10.7195 -1.2683 3.52449.4756 1.5854 3.71954.8537 -1.4878 1.3171>> KDK=[A,B]KDK =8 9 5 -1 3 -236 -7 11 2 0 321 -8 5 -3 1 9 >> ERI=[A;B]ERI =8 9 536 -7 1121 -8 5-1 3 -22 0 3-3 1 9014一般函数的调用:A=[2 34 88 390 848 939];>> S=sum(A)S =2301>> min(A)ans =2>> EE=mean(A)EE =383.5000>> QQ=std(A)QQ =419.3794>> AO=sort(A)AO =2 34 88 390 848 939 >> yr=norm(A)yr =1.3273e+003>> RT=prod(A)RT =1.8583e+012>> gradient(A)ans =32.0000 43.0000 178.0000 380.0000 274.5000 91.0000 >> max(A)ans =939>> median(A)ans =239>> diff(A)ans =32 54 302 458 91>> length(A)ans =6>> sum(A)ans =2301>> cov(A)ans =1.7588e+005>>015矩阵变换:A=[34 44 23;8 34 23;34 55 2]A =34 44 238 34 2334 55 2>> tril(A)ans =34 0 08 34 034 55 2>> triu(A)ans =34 44 230 34 230 0 2>> diag(A)ans =34342norm(A)ans =94.5106>> rank(A)ans =3>> det(A)ans =-23462>> trace(A)ans =70>> null(A)ans =Empty matrix: 3-by-0>> eig(A)ans =80.158712.7671-22.9257>> poly(A)ans =1.0e+004 *0.0001 -0.0070 -0.1107 2.3462>> logm(A)Warning: Principal matrix logarithm is not defined for A with nonpositive real eigenvalues. A non-principal matrixlogarithm is returned.> In funm at 153In logm at 27ans =3.1909 + 0.1314i 1.2707 + 0.1437i 0.5011 - 0.2538i0.4648 + 0.4974i 3.3955 + 0.5438i 0.1504 - 0.9608i0.2935 - 1.2769i 0.8069 - 1.3960i 3.4768 + 2.4663i>> fumn(A)Undefined command/function 'fumn'.>> inv(A)ans =0.0510 -0.0502 -0.0098-0.0326 0.0304 0.02550.0305 0.0159 -0.0343>> cond(A)ans =8.5072>> chol(A)Error using ==> cholMatrix must be positive definite.>> lu(A)ans =34.0000 44.0000 23.00000.2353 23.6471 17.58821.0000 0.4652 -29.1816>> pinv(A)ans =0.0510 -0.0502 -0.0098-0.0326 0.0304 0.02550.0305 0.0159 -0.0343>> svd(A)ans =94.510622.345611.1095>> expm(A)ans =1.0e+034 *2.1897 4.3968 1.93821.31542.6412 1.16431.8782 3.7712 1.6625>> sqrtm(A)ans =5.2379 + 0.2003i 3.4795 + 0.2190i 1.8946 - 0.3869i0.5241 + 0.7581i 5.1429 + 0.8288i 2.0575 - 1.4644i3.0084 - 1.9461i4.7123 - 2.1276i 2.1454 + 3.7589i >>016多项式的计算:A=[34 44 23;8 34 23;34 55 2]A =34 44 238 34 2334 55 2>> P=poly(A)P =1.0e+004 *0.0001 -0.0070 -0.1107 2.3462>> PPA=poly2str(P,'X')PPA =X^3 - 70 X^2 - 1107 X + 23462017多项式的运算:p=[2 6 8 3];w=[32 56 0 2];>> m=conv(p,w)m =64 304 592 548 180 16 6 >> [q,r]=deconv(w,p)q =16r =0 -40 -128 -46>> dp=polyder(w)dp =96 112 0>> [num,den]=polyder(w,p)num =80 512 724 312 -16den =4 24 68 108 100 48 9>> b=polyfit(p,w,4)Warning: Polynomial is not unique; degree >= number of data points. > In polyfit at 74b =-0.6704 9.2037 -32.2593 0 98.1333>> r=roots(p)r =-1.2119 + 1.0652i-1.2119 - 1.0652i-0.5761018求多项式的商和余p=conv([1 0 2],conv([1 4],[1 1]))p =1 5 6 10 8>> q=[1 0 1 1]q =1 0 1 1>> [w,m]=deconv(p,q)w =1 5m =0 0 5 4 3>> cq=w;cr=m;>> disp([cr,poly2str(m,'x')])5 x^2 + 4 x + 3>> disp([cq,poly2str(w,'x')])x + 5019将分式分解a=[1 5 6];b=[1];>> [r,p,k]=residue(b,a)r =-1.00001.0000p =-3.0000-2.0000k =[]020计算多项式:a=[1 2 3;4 5 6;7 8 9];>> p=[3 0 2 3];>> q=[2 3];>> x=2;>> r=roots(p)r =0.3911 + 1.0609i0.3911 - 1.0609i-0.7822>> p1=conv(p,q)p1 =6 9 4 12 9>> p2=poly(a)p2 =1.0000 -15.0000 -18.0000 -0.0000 >> p3=polyder(p)p3 =9 0 2>> p4=polyval(p,x)p4 =31021求除式和余项:[q,r]=deconv(conv([1 0 2],[1 4]),[1 1 1])022字符串的书写格式:s='student's =student>> name='mary';>> s1=[name s]s1 =marystudent>> s3=[name blanks(3);s]s3 =marystudent>>023交换两个数:clearclca=[1 2 3 4 5];b=[6 7 8 9 10];c=a;a=b;b=c;ab24If语句n=input('enter a number,n=');if n<10nend025 if 双分支结构a=input('enter a number ,a=');b=input('enter a number ,b=');if a>bmax=a;elsemax=b;endmax026三个数按照由大到小的顺序排列:A=15;B=24;C=45;if A<BT=A;A=B;B=T;elseif A<CT=A;A=C;C=T;elseif B<CT=B;B=C;C=T;endABC027建立一个收费优惠系统:price=input('please jinput the price : price=') switch fix(price/100)case[0,1]rate =0;case[2,3,4]rate =3/100;case num2cell(5:9)rate=5/100;case num2cell(10:24)rate=8/100;case num2cell(25:49)rate=10/100;otherwiserate=14/100;endprice=price*(1-rate)028:while循环语句i=0;s=0;while i<=1212s=s+i;i=i+1;ends029,用for循环体语句:sum=0;for i=1:1.5:100;sum=sum+i;endsum030循环的嵌套s=0;for i=1:1:6;for j=1:1:8;s=s+i^j;end;end;s031continue 语句的使用:for i=100:120;if rem(i,7)~=0;continue;end;iend032x=input ('输入X的值x=')if x<1y=x^2;elseif x>1&x<2y=x^2-1;elsey=x^2-2*x+1;endy033求阶乘的累加和sum=0;temp=1;for n=1:10;temp=temp*n;sum=sum+temp;endsum034对角线元素之和sum=0;a=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]; for i=1:4;sum=sum+a(i,i);endsum035用拟合点绘图A=[12 15.3 16 18 25];B=[50 80 118 125 150.8];plot(A,B)036绘制正玄曲线:x=0:0.05:4*pi;y=sin(x);plot(x,y)037绘制向量x=[1 2 3 4 5 6;7 8 9 10 11 12;13 14 15 16 17 18] plot(x)x=[0 0.2 0.5 0.7 0.6 0.7 1.2 1.5 1.6 1.9 2.3]plot(x)x=0:0.2:2*piy=sin(x)plot(x,y,'m:p')038在正弦函数上加标注:t=0:0.05:2*pi;plot(t,sin(t))set(gca,'xtick',[0 1.4 3.14 56.28])xlabel('t(deg)')ylabel('magnitude(v)')title('this is a example ()\rightarrow 2\pi')text(3.14,sin(3.14),'\leftarrow this zero for\pi')039添加线条标注x=0:0.2:12;plot(x,sin(x),'-',x,1.5*cos(x),':');legend('First','Second',1)040使用hold on 函数x=0:0.2:12;plot(x,sin(x),'-');hold onplot(x,1.5*cos(x),':');041一界面多幅图x=0:0.05:7;y1=sin(x);y2=1.5*cos(x);y3=sin(2*x);y4=5*cos(2*x);subplot(221);plot(x,y1);title('sin(x)')subplot(222);plot(x,y2);title('cos(x)')subplot(223);plot(x,y3);title('sin(2x)')subplot(224);plot(x,y4);title('cos(2x)')042染色效果图x=0:0.05:7;y1=sin(x);y2=1.5*cos(x);y3=sin(2*x);y4=5*cos(2*x);subplot(221);plot(x,y1);title('sin(x)');fill(x,y1,'r') subplot(222);plot(x,y2);title('cos(x)');fill(x,y2,'b') subplot(223);plot(x,y3);title('sin(2x)');fill(x,y3,'k') subplot(224);plot(x,y4);title('cos(2x)');fill(x,y4,'g')043特殊坐标图clcy=[0,0.55,2.5,6.1,8.5,12.1,14.6,17,20,22,22.1] subplot(221);plot(y);title('线性坐标图');subplot(222);semilogx(y);title('x轴对数坐标图');subplot(223);semilogx(y);title('y轴对数坐标图');subplot(224);loglog(y);title('双对数坐标图')t=0:0.01:2*pi;r=2*cos(2*(t-pi/8));polar(t,r)044特殊函数绘图:fplot('cos(tan(pi*x))',[-0.4,1.4])fplot('sin(exp(pi*x))',[-0.4,1.4])045饼形图与条形图:x=[8 20 36 24 12];subplot(221);pie(x,[1 0 0 0 1]);title('饼图');subplot(222);bar(x,'group');title('垂直条形图');subplot(223);bar(x,'stack');title('累加值为纵坐标的垂直条形图'); subplot(224);barh(x,'group');title('水平条形图');046梯形图与正弦函数x=0:0.1:10;y=sin(x);subplot(121);stairs(x);subplot(122);stairs(x,y);047概率图x=randn(1,1000);y=-2:0.1:2;hist(x,y)048向量图:x=[-2+3j,3+4j,1-7j];subplot(121);compass(x);rea=[-2 3 1];imag=[3 4 -7];subplot(122);feather(rea,imag);049绘制三维曲线图:z=0:pi/50:10*pi;x=sin(z);y=cos(z);plot3(x,y,z)x=-10:0.5:10;y=-8:0.5:8;[x,y]=meshgrid(x,y);z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); subplot(221);mesh(x,y,z);title('普通一维网格曲面');subplot(222);meshc(x,y,z);title('带等高线的三维网格曲面'); subplot(223);meshz(x,y,z);title('带底座的三维网格曲面'); subplot(224);surf(x,y,z);title('充填颜色的三维网格面')050 带网格二维图x=0:pi/10:2*pi;y1=sin(x);y2=cos(x);plot(x,y1,'r+-',x,y2,'k*:')grid onxlabel('Independent Variable x') ylabel('Dependent Variable y1&y2') text(1.5,0.5,'cos(x)')051各种统计图y=[18 5 28 17;24 12 36 14;15 6 30 9]; subplot(221);bar(y)x=[4,6,8];subplot(222);bar3(x,y)subplot(223);bar(x,y,'grouped') subplot(224);bar(x,y,'stack')052曲面图x=-2:0.4:2;y=-1:0.2:1;[x,y]=meshgrid(x,y);z=sqrt(4-x.^2/9-y.^2/4); surf(x,y,z)grid on053创建符号矩阵e=[1 3 5;2 4 6;7 9 11];m=sym(e)符号表达式的计算问题因式分解:syms xf=factor(x^3-1)s=sym('sin(a+b)'); expand(s)syms x tf=x*(x*(x-8)+6)*t; collect(f)syms xf=sin(x)^2+cos(x)^2; simplify(f)syms xs=(4*x^2+8*x+3)/(2*x+1); simplify(s)通分syms x yf=x/y-y/x;[m,n]=numden(f)嵌套重写syms xf=x^4+3*x^3-7*x^2+12; horner(f)054求极限syms x a;limit(exp(-x),x,0,'left')求导数syms xdiff(x^9+x^6)diff(x^9+x^6,4)055求不定积分与定积分syms x ys=(4-3*x^2)^2;int(s)int(x/(x+y),x)int(x^2/(x+2),x,1,3) double(ans)056函数的变换:syms x ty=exp(-x^2);Ft=fourier(y,x,t)fx=ifourier(Ft,t,x)057求解方程syms a b c xs=a*x^2+b*x+c;solve(s)syms x y zs1=2*x^2+y^2-3*z-4;s2=y+z-3;s3=x-2*y-3*z;[x,y,z]=solve(s1,s2,s3)058求微分方程:y=dsolve('Dy-(t^2+y^2)/t^2/2','t')059求级数和syms x ksymsum(k)symsum(k^2-3,0,10)symsum(x^k/k,k,1,inf)060泰勒展开式syms xs=(1-x+x^2)/(1+x+x^2);taylor(s)taylor(s,9)taylor(s,x,12)taylor(s,x,12,5)061练习syms x a;s1=sin(2*x)/sin(5*x);limit(s1,x,0)s2=(1+1/x)^(2*x);limit(s2,x,inf)syms xs=x*cos(x);diff(s)diff(s,2)diff(s,12)syms xs1=x^4/(1+x^2);int(s1)s2=3*x^2-x+1int(s2,0,2)syms x y zs1=5*x+6*y+7*z-16;s2=4*x-5*y+z-7;s3=x+y+2*z-2;[x,y,z]=solve(s1,s2,s3)syms x yy=dsolve('Dy=exp(2*x-y)','x')y=dsolve('Dy=exp(2*x-y)','y(0)=0','x')n=sym('n');s=symsum(1/n^2,n,1,inf)x=sym('x');f=sqrt(1-2*x+x^3)-(1-3*x+x^2)^(1/3);taylor(f,6)062求于矩阵相关的值a=[2 2 -1 1;4 3 -1 2;8 5 -3 4;3 3 -2 2]adet=det(a)atrace=trace(a)anorm=norm(a)acond=cond(a)arank=rank(a)eiga=eig(a)063矩阵计算A=[0.1389 0.6038 0.0153 0.9318;0.2028 0.2772 0.7468 0.4660;0.1987 0.1988 0.4451 0.4186]B=var(A)C=std(A)D=range(A)E=cov(A)F=corrcoef(A)064求根及求代数式的值P=[4 -3 2 5];x=roots(P)x=[3 3.6];F=polyval(P,x)065多项式的和差积商运算:f=[1 2 -4 3 -1]g=[1 0 1]g1=[0 0 1 0 1]f+g1f-g1conv(f,g)[q,r]=deconv(f,g)polyder(f)066各种插值运算:X=0:0.1:pi/2;Y=sin(X);interp1(X,Y,pi/4)interp1(X,Y,pi/4,'nearest')interp1(X,Y,pi/4,'spline')interp1(X,Y,pi/4,'cubic')067曲线的拟合:X=0:0.1:2*pi;Y=cos(X);[p,s]=polyfit(X,Y,4)plot(X,Y,'K*',X,polyval(p,X),'r-')068求函数的最值与0点x=2:0.1:2;[x,y]=fminbnd('x.^3-2*x+1',-1,1) [x,y]=fzero('x.^3-2*x+1',1)069求多项式的表达式、值、及图像y=[1 3 5 7 19]t=poly(y)x=-4:0.5:8yx=polyval(t,x)plot(x,yx)070数据的拟合与绘图x=0:0.1:2*pi;y=sin(x);p=polyfit(x,y,5);y1=polyval(p,x)plot(x,y,'b',x,y1,'r')071求代数式的极限:syms xf=sym('log(1+2*x)/sin(3*x)');b=limit(f,x,0)072求导数与微分syms xf=sym('x/(cos(x))^2');y1=diff(f)y2=int(f,0,1)078划分网格函数[x,y]=meshgrid(-2:0.01:2,-3:0.01:5); t=x.*exp(-x.^2-y.^2);[px,py]=gradient(t,0.05,0.1);td=sqrt(px.^2+py.^2);subplot(221)imagesc(t)subplot(222)imagesc(td)colormap('gray')079求多次多项方程组的解:syms x1 x2 a ;eq1=sym('x1^2+x2=a')eq2=sym('x1-a*x2=0')[x1 x2]=solve(eq1,eq2,x1,x2)v=solve(eq1,eq2)v.x1v.x2an1=x1(1),an2=x1(2)an3=x2(1),an4=x2(2)080求解微分方程:[y]=dsolve('Dy=-y^2+6*y','y(0)=1','x')s=dsolve('Dy=-y^2+6*y','y(0)=1','x')[u]=dsolve('Du=-u^2+6*u','u(0)=1')w=dsolve('Du=-u^2+6*u','z')[u,w]=dsolve('Du=-w^2+6*w,Dw=sin(z)','u(0)=1,w(0)=0','z') v=dsolve('Du=-w^2+6*w,Dw=sin(z)','u(0)=1,w(0)=0','z')081各种显现隐含函数绘图:f=sym('x^2+1')subplot(221)ezplot(f,[-2,2])subplot(222)ezplot('y^2-x^6-1',[-2,2],[0,10])x=sym('cos(t)')y=sym('sin(t)')subplot(223)ezplot(x,y)z=sym('t^2')subplot(224)ezplot3(x,y,z,[0,8*pi])082极坐标图:r=sym('4*sin(3*x)')ezpolar(r,[0,6*pi])083多函数在一个坐标系内:x=0:0.1:8;y1=sin(x);subplot(221)plot(x,y1)subplot(222)plot(x,y1,x,y2)w=[2 3;3 1;4 6]subplot(223)plot(w)q=[4 6:3 5:1 2]subplot(224)plot(w,q)084调整刻度图像:x=0:0.1:10;y1=sin(x);y2=exp(x);y3=exp(x).*sin(x);subplot(221)plot(x,y2)subplot(222)loglog(x,y2)subplot(223)plotyy(x,y1,x,y2)085等高线等图形,三维图:t=0:pi/50:10*pi;subplot(2,3,1)plot3(t.*sin(t),t.*cos(t),t.^2) grid on[x,y]=meshgrid([-2:0.1:2])z=x.*exp(-x.^2-y.^2)subplot(2,3,2)plot3(x,y,z)box offsubplot(2,3,3)meshz(x,y,z)subplot(2,3,4)surf(x,y,z)contour(x,y,z)subplot(2,3,6)surf(x,y,z)subplot(2,3,5)contour(x,y,z)box offsubplot(2,3,6)contour3(x,y,z)axis off086统计图Y=[5 2 1;8 7 3;9 8 6;5 5 5;4 3 2]subplot(221)bar(Y)box offsubplot(222)bar3(Y)subplot(223)barh(Y)subplot(224)bar3h(Y)087面积图Y=[5 1 2;8 3 7;9 6 8;5 5 5;4 2 3];subplot(221)area(Y)grid onset(gca,'Layer','top','XTick',1:5)sales=[51.6 82.4 90.8 59.1 47.0];x=90:94;profits=[19.3 34.2 61.4 50.5 29.4];subplot(222)area(x,sales,'facecolor',[0.5 0.9 0.6], 'edgecolor','b','linewidth',2) hold onarea(x,profits,'facecolor',[0.9 0.85 0.7], 'edgecolor','y','linewidth',2) hold offset(gca,'Xtick',[90:94])set(gca,'layer','top')gtext('\leftarrow 销售量') gtext('利润')gtext('费用')xlabel('年','fontsize',14)088函数的插值:x=0:2*pi;y=sin(x);xi=0:0.1:8;yi1=interp1(x,y,xi,'linear')yi2=interp1(x,y,xi,'nearest') yi3=interp1(x,y,xi,'spline')yi4=interp1(x,y,xi,'cublic')p=polyfit(x,y,3)yy=polyval(p,xi)subplot(3,2,1)plot(x,y,'o')subplot(3,2,2)plot(x,y,'o',xi,yy)subplot(3,2,3)plot(x,y,'o',xi,yi1)subplot(3,2,4)plot(x,y,'o',xi,yi2)subplot(3,2,5)plot(x,y,'o',xi,yi3)subplot(3,2,6)plot(x,y,'o',xi,yi4)089二维插值计算:[x,y]=meshgrid(-3:0.5:3);z=peaks(x,y);[xi,yi]=meshgrid(-3:0.1:3); zi=interp2(x,y,z,xi,yi,'spline') plot3(x,y,z)hold onmesh(xi,yi,zi+15)hold offaxis tight090函数表达式;function f=exlin(x)if x<0f=-1;elseif x<1f=x;elseif x<2f=2-x;elsef=0;end091:硬循环语句:n=5;for i=1:nfor j=1:nif i==ja(i,j)=2;elsea(i,j)=0;endendendwhile 循环语句:n=1;while prod(1:n)<99^99;n=n+1endn:092 switch开关语句a=input('a=?')switch acase 1disp('It is raning') case 0disp('It do not know')case -1disp('It is not ranging')otherwisedisp('It is raning ?')end093画曲面函数:x1=linspace(-3,3,30)y1=linspace(-3,13,34)[x,y]=meshgrid(x1,y1);z=x.^4+3*x.^2-2*x+6-2*y.*x.^2+y.^2-2*y; surf(x,y,z)。

matlab编程经典例题

matlab编程经典例题

例3-12 求[100,200]之间第一个能被21整除 的整数。 程序如下: for n=100:200 if rem(n,21)~=0 continue end break end n
4.循环的嵌套 如果一个循环结构的循环体又包括一个循环结构,就称为 循环的嵌套,或称为多重循环结构。 例3-13 若一个数等于它的各个真因子之和,则称该数为 完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完 数。 for m=1:500 s=0; for k=1:m/2 if rem(m,k)==0 s=s+k; end end if m==s disp(m); end end
2.while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行 循环体语句,执行后再判断条件是否 成立,如果不成立则跳出循环。
例3-11 从键盘输入若干个数,当输入0时结束输入,求这 些数的平均值和它们之和。 程序如下: sum=0; cnt=0; val=input('Enter a number (end in 0):'); while (val~=0) sum=sum+val; cnt=cnt+1; val=input('Enter a number (end in 0):'); end if (cnt > 0) sum mean=sum/cnt end
for语句更一般的格式为: for 循环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元 素赋给循环变量,然后执行循环体 语句,直至各列元素处理完毕。
例3-10 写出下列程序的执行结果。 s=0; a=[12,13,14;15,16,17;18,19,20;21,22,23]; for k=a s=s+k; end disp(s');

(完整word版)MATLAB程序设计教程(第二版)课后答案

(完整word版)MATLAB程序设计教程(第二版)课后答案

MATLAB第二版课后答案unit3—8 unit3实验指导1、 n=input('请输入一个三位数:');a=fix(n/100);b=fix((n-a*100)/10);c=n-a*100-b*10;d=c*100+b*10+a2(1)n=input('请输入成绩’);switch ncase num2cell(90:100)p='A';case num2cell(80:89)p='B';case num2cell(70:79)p=’C';case num2cell(60:69)p='D';otherwisep='E';endprice=p(2)n=input(’请输入成绩');if n〉=90&n〈=100p='A’;elseif n>=80&n<=89p='B';elseif n〉=70&n<=79p=’C’;elseif n>=60&n<=69p='D';elsep='E';endprice=p(3)tryn;catchprice='erroe'end3n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1);b=n(1);for m=2:20if n(m)>aa=n(m);elseif n(m)<bb=n(m);endendmax=amin=b法2n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6];min=min(n)max=max(n)4b=[—3.0:0.1:3.0];for n=1:61a=b(n);y(n)=(exp(0.3*a)-exp(—0。

MATLAB程序设计与应用习题

MATLAB程序设计与应用习题
>> X= or(a,b)
X =
1 1 1 0
2.11设a=[0 100],求~a的值?(非运算)
答:>> clear
>> a=[0 1 0 0]
a =
0 1 0 0
>> x=not(a)
x =
1 0 1 1
2.12设a=[0 120],b=[21 0 0],求axor b的值?
答:>> clear
答:>> clear
>> a=[0 2 1 0]
a =
0 2 1 0
>> b=[2 1 0 0]
b =
2 1 0 0
>> x=and(a,b)
x =
0 1 0 0
2.10设a=[0 120],b=[120 0],求a|b的值?(或运算)
答:
>> clear
>> a=[0 1 2 0];b=[1 2 0 0];
答:quit:关闭MATLAB。
clear:清除内存中的变量。
cla:清除坐标。
clf:清除图形。
clc:清除MATLAB命令窗口的所有显示信息。
hold:控制当前图形窗口是否被刷新。
1.9学会打开并保存程序编辑窗口,并在M文档中编写1.4的运算程序并进行运算。
答:要打开程序编辑窗口,我们可以在Command Window窗口中,单击工具栏中最左端显示为一张白纸的工具按钮。这样就打开了一个空白的程序编辑窗口,如图1-6所示。
3.6已知
将a(2,3)=-1替换为a(2,3)=0。
答:
3.7已知
将a的第二行元素全部替换为0,然后将第二列元素全部替换为1。

实验3 MATLAB程序设计

实验3 MATLAB程序设计

实验3 MATLAB程序设计实验3 MATLAB程序设计一、实验目的本实验的主要目的是通过实际的编程练习,掌握和熟悉MATLAB 程序设计的基本知识和技巧。

通过本实验的学习,能够灵活使用MATLAB进行程序设计,解决实际问题。

二、实验内容1. MATLAB语言基础在本部分,我们将介绍MATLAB语言的基本语法和常用函数的使用方法。

1.1. 变量定义和赋值在MATLAB中,可以通过简单的语法来定义和赋值变量。

例如,`a = 10;`表示将值10赋给变量a。

,MATLAB也支持定义矩阵和向量。

1.2. 数学运算MATLAB提供了丰富的数学运算函数,如加法、减法、乘法、除法等等。

通过这些函数,我们能够进行各种数学运算。

1.3. 条件语句和循环语句条件语句和循环语句在程序设计中非常重要。

在MATLAB中,我们可以使用if-else语句来进行条件判断,使用for循环和while 循环来实现循环操作。

2. MATLAB绘图功能MATLAB的绘图功能非常强大,可以用于绘制各种图形,如曲线图、散点图、柱状图等等。

2.1. 绘制曲线图在MATLAB中,通过`plot`函数可以绘制曲线图。

我们可以指定要绘制的曲线的x和y坐标,并可以设置其他参数,如线型、颜色等。

2.2. 绘制散点图通过`scatter`函数可以绘制散点图。

散点图用于展示数据的分布情况,非常直观。

2.3. 绘制柱状图通过`bar`函数可以绘制柱状图。

柱状图用于比较不同类别或不间点的数据。

3. MATLAB文件操作在实际的程序设计过程中,常常需要读取和写入文件。

MATLAB 提供了相关的文件操作函数,方便我们进行文件的读写操作。

3.1. 文件的读取通过`fopen`函数可以打开一个文件,通过`fread`函数可以读取文件的内容。

3.2. 文件的写入通过`fopen`函数可以创建一个文件,并通过`fwrite`函数将数据写入文件中。

三、实验步骤1. 编写MATLAB程序根据实验内容,编写MATLAB程序实现相应功能。

Matlab 课后上机练习3-Matlab绘图和符号运算

Matlab  课后上机练习3-Matlab绘图和符号运算

11、绘制曲线13++=x x y ,x 的取值范围为[-5,5]。

clear; x=-5:0.1:5; y=x.^3+x+1; plot(x,y,'k'); title('曲线图像'); xlabel('x') ylabel('y') grid on;hold on;2、有一组测量数据满足-at e =y ,t 的变化范围为0~10,用不同的线型和标记点画出a=0.1、a=0.2和a=0.5三种情况下的曲线。

并添加标题:运动曲线图;添加横坐标:时间 t/s ;添加纵坐标:位移 s/mm ;添加图例。

t=0:0.5:10; y1=exp(-0.1*t); y2=exp(-0.2*t); y3=exp(-0.5*t);plot(t,y1,':*r',t,y2,'-^g',t,y3,'-ob') title('运动曲线图'); xlabel('时间 t/s') ylabel('位移 s/mm') legend('a=0.1','a=0.2','a=0.5')3、22y xxe z --=,当x 和y 的取值范围均为-2到2时,用建立子窗口的方法在同一个图形窗口中绘制出三维线图、网线图、表面图和等高线效果图。

[x,y]=meshgrid([-2:0.2:2]);z=x.*exp(-x.^2-y.^2); mesh(x,y,z) subplot(2,2,1) plot3(x,y,z)title('plot3(x,y,z)') subplot(2,2,2) mesh(x,y,z)title('mesh(x,y,z)') subplot(2,2,3) surf(x,y,z)title('surf(x,y,z)') subplot(2,2,4) surf(x,y,z) shading interptitle('surf(x,y,z) shading interp')shading interp4、在同一坐标内绘制如下曲线:(1)y1=tsin(t)(红色连续线‘—’);(2)y2=t2-cos(t);(蓝色间断线‘—.’)(3)题头:小车运动学分析曲线;图例:y1曲线、y2曲线(4)x轴:时间t/s;y轴:位移曲线/mm (5)曲线上标注文字说明:该运动曲线良好。

(完整word版)含答案《MATLAB实用教程》

第二章 MATLAB 语言及应用实验项目实验一 MATLAB 数值计算三、实验内容与步骤1.创建矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321a(1(2)用(3)用(42.矩阵的运算(1)利用矩阵除法解线性方程组。

⎪⎪⎩⎪⎪⎨⎧=+++=-+-=+++=+-12224732258232432143214321421x x x x x x x x x x x x x x x 将方程表示为AX=B ,计算X=A\B 。

(2)利用矩阵的基本运算求解矩阵方程。

已知矩阵A 和B 满足关系式A -1BA=6A+BA ,计算矩阵B 。

其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=7/10004/10003/1A ,Ps: format rata=[1/3 0 0;0 1/4 0;0 0 1/7];b=inv(a)*inv(inv(a)-eye(3))*6*a(3)计算矩阵的特征值和特征向量。

已知矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=1104152021X ,计算其特征值和特征向量。

(4)Page:322利用数学函数进行矩阵运算。

已知传递函数G(s)=1/(2s+1),计算幅频特性Lw=-20lg(1)2(2w )和相频特性Fw=-arctan(2w),w 的范围为[0.01,10],按对数均匀分布。

3.多项式的运算(1)多项式的运算。

已知表达式G(x)=(x-4)(x+5)(x 2-6x+9),展开多项式形式,并计算当x 在[0,20]内变化时G(x)的值,计算出G(x)=0的根。

Page 324(2)多项式的拟合与插值。

将多项式G(x)=x 4-5x 3-17x 2+129x-180,当x 在[0,20]多项式的值上下加上随机数的偏差构成y1,对y1进行拟合。

对G(x)和y1分别进行插值,计算在5.5处的值。

Page 325 四、思考练习题1.使用logspace 函数创建0~4π的行向量,有20个元素,查看其元素分布情况。

Ps: logspace(log10(0),log10(4*pi),20) (2) sort(c,2) %顺序排列 3.1多项式1)f(x)=2x 2+3x+5x+8用向量表示该多项式,并计算f(10)值. 2)根据多项式的根[-0.5 -3+4i -3-4i]创建多项式。

第三章 matlab程序设计基础

y
3. 程序控制流 3.多分支if语句
• 多分支if语句格式为:
if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组m+1
end
3. 程序控制流
• 例 输入一个字符,若为大写字母,则输出其后继字符,若为 小写字母,则输出其前导字符,若为数字字符则输出其对应 的数值,若为其他字符则原样输出。 – 程序如下:
c=input('请输入一个字符','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+1)); elseif c>='a'& c<='z' disp(setstr(abs(c)-1)); elseif c>='0'& c<='9' disp(abs(c)-abs('0')); else disp(c); end
分类:脚本文件(Script File)和函数文件(Function File)。 主要区别。
1. M文件 脚本文件
没有输入和输出 由一系列指令组成 可在命令窗口直接运行 产生的所有变量存储在workspace中。 例 test.m。
1. M文件 例 脚本M文件实例
脚本M文件实例,查找10 ~100所有素数。
1. M文件
• 函数文件examp.m: function fout=charray(a,b,c) %举例说明函数文件名与函数名不同 if nargin==1 fout=a; elseif nargin==2 fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end • 命令窗口: x=[1:3];y=[1;2;3]; examp(x) examp(x,y') examp(x,y,3)

电气工程软件训练(三)——Matlab 作业

D1(江苏大学《电气工程软件训练三》课程设计报告设计题目:MATLAB专业班级:J电气1401学生姓名:唐鹏学生学号:4141127007指导老师:完成日期:江苏大学京江学院一MATLAB课程设计的目的和要求1.MATLAB软件功能简介MATLAB的名称源自Matrix Laboratory,1984年由美国Mathworks公司推向市场。

它是一种科学计算软件,专门以矩阵的形式处理数据。

MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统和信息处理等领域的分析、仿真和设计工作。

MATLAB 软件包括五大通用功能,数值计算功能(Nemeric)、符号运算功能(Symbolic)、数据可视化功能(Graphic)、数字图形文字统一处理功能(Notebook)和建模仿真可视化功能(Simulink)。

其中,符号运算功能的实现是通过请求MAPLE内核计算并将结果返回到MATLAB命令窗口。

该软件有三大特点,一是功能强大;二是界面友善、语言自然;三是开放性强。

目前,Mathworks公司已推出30多个应用工具箱。

MATLAB在线性代数、矩阵分析、数值及优化、数值统计和随机信号分析、电路与系统、系统动力学、次那好和图像处理、控制理论分析和系统设计、过程控制、建模和仿真、通信系统以及财政金融等众多领域的理论研究和工程设计中得到了广泛应用。

2.MATLAB课程设计的目的本次课程设计主要是为了使学生了解MATLAB软件的基本知识,熟悉MATLAB的上机环境,掌握MATLAB数值运算、程序设计、二维/三维绘图、符号运算、Simulink仿真等相关知识,并初步具备将一般数学问题转化为对应的计算机进行处理的能力,以便为今后进一步的学习打下坚定基础。

二MATLAB课程内容1 MATLAB语言基础实验目的:基本掌握MATLAB 向量、矩阵、数组的生成及其基本运算(区分数组运算和矩阵运算)、常用的数学函数。

MATLAB程序设计及应用习题

MATLAB 程序设计及应用习题二维平面绘图1. 椭圆的参数表示为⎩⎨⎧==)sin()cos(t b y t a x ,请利用这个公式画一个椭圆,其中a=5,b=3要求椭圆上有100个点。

2. Chebysheve 多项式的定义如下:11)),(cos cos(1≤≤-=-x x m y ;当m 的值从1变化到5时,得到五条曲线。

请将这五条曲线画在同一张图上。

使用legend 命令来标记每一条曲线。

3. 用contour 命令画出下列隐函数:2522=+y x 。

提示:画出函数:22y x z +=高度为25的等高线。

三维立体绘图1. 请利用surf 命令画出函数:)ex p(*22y x x z --=的图形。

其中x 在[-2,2]范围内均匀取21个点,y 在[-1,1]范围内均匀取21个点。

2. 一个空间的椭球可以表示为1222222=++cz b y a x ,请使用任何方法画出一个空间的光滑的椭球。

其中a=3,b=4,c=8。

3. 画出函数)cos()2/sin(),(y x y x f =的曲面图和等高线图,其中x 在[-2π,2π]范围内均匀取21个点,y 在[-1.5π,1.5π]范围内均匀取31个点。

用subplot(2,1,1)和subplot(2,1,2)将的曲面图和等高线图画在一个窗口中。

特殊图形1. 以下是某学校信息系各年度的人员组成表,请分别用bar 和bar3画出上述数据的统计图。

2. 请使用上题的数据作出(1)按每年度人数来划分的立体扇形图,并加上适当的说明。

(2)按每种类别人数来划分的立体扇形图,并加上适当的说明。

图象的显示与读写1.读入文件clown.mat中的小丑图象,显示图象,并将调色板colormap改为grey,你会发现图象偏暗,请调整调色板,使其亮度提高。

2.读入文件clown.mat中的小丑图象,显示图象,请调整调色板,使得显示的图象由全黑或全白的象素做成,且其个数的比例大约是1:1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

练习4 MATLAB 程序设计
一、目的和要求
(1)掌握MAM 的程序流程控制结构。

(2)掌握M 文件的结构。

(3)掌握函数调用和参数传递。

(4)了解程序性能剖析窗口。

(5)掌握利用函数句柄进行数值分析。

二、内容和步骤
MATLAB 的语法规则简洁,编程效率高,作为一个完整的程序语言,MATLAB 也有其各种程序流程控制、文件格式和函数调用的规则,通过函数的调用就能够组成庞大的程序,完成复杂的功能。

1.使用程序流程控制
Fibonacci 数列的各元素为:1,1,2,3,5,8,…,满足以下关系:
2
1211
1--+===n n n F F F F F
用M 函数文件实现,数列的元素个数为输入变量。

(l )按M 函数文件格式创建文件开头。

function f=shiyan0501(n) %SHIYAN0501 Fibonacci % Fibonacci 数列 % n 元素个数
% f 构成Fibonacci 数列向量 (2)用While 循环实现程序功能。

f(1)=1;f(2)=1;i=2; while i<=n f(i+1)=f(i-1)+f(i); i =i+1;
end
在命令窗口输入调用命令调用函数,元素个数n=10, 结果:(

(3)使用for 循环实现,重新编制上述函数。

结果:(

(4)当Fibonacci 数列中某个元素大于50时,用“break ”命令退出循环结构,修改程序如下: 结果:(

(5)将该.m 文件生成P 码文件: >>pcode shiyan0501
将 shiyan0501.m 删除,重新调用函数文件,执行结果如下: 结果:(

2.使用函数调用
计算
2
5
21
22
2432(2)!arcsin ,143
1645
2
(!)(21)
n n
x
x n x x x x n n +⨯⨯⨯≈+
+
++
<⨯⨯⨯+ 其中。

x 为输人参数,当x 不满足条件时就不计算,并显示提示;当12+n x 前的系数<0.00001时,则循环结束。

使用主函数和子函数调用来实现各项系数的运算,主函数计算各项和;子函数cal 计算系数
)
12(1
)!(2
)!2(2
2+n n n n
;子函数 factorial 求阶乘n !。

主函数调用子函数cal ,子函数cal 再调用子函数
factorial ,本程序是函数的嵌套调用。

(1)子函数 factorial 计算n !,输入参数为 n ,使用 for 循环实现阶乘,输出参数为阶乘。

(2)子函数cal 计算系数)
12(1
)!(2
)!2(2
2+n n n n
,输入参数是n ,输出参数是计算结果。

function f=cal(n)
f=factorial(2*n)/(2^(2*n)*(factorial(n))^2*(2*n+1)); 本函数中调用了求阶乘的子函数factorial 。

练习:用for 、while 分别编写factorial 子函数。

结果:(
)(3)主函数shiyan0502。

主函数计算arcsin x,输入参数是x,输出参数是计算结果。

Function y=shiyan0502(n)
% shiyan0502 arcsin x
n=1;
if abs(x)<1
y=x;
while cal(n)>0.00001
y=y+cal(n)*x^(2*n+1);
n=n+1;
end
else
disp(‘输入出错’)
y=0;
return
end
当输入参数不满足条件时,退出程序。

结果:(
)(4)程序的调试。

当有多个函数调用时,由于函数变量的工作空间是独立的,被调用的函数执行结束后变量就消失,因此调试时要使用MATLAB调试器来查看运行过程中的变量值。

①设置断点。

在需要查看程序的地方设置断点,使用选单“Breakpoints”→“Set/Clear Breakpoints”,或单击F12快捷键,或者单击工具栏的按钮实现,则在设置断点的程序行前出现大红圆点;然后选择“Run”选单,程序就会执行到设置断点的位置,暂住执行;这时将光标移到需要查看的变量上停留片刻,就可以看到该变量的当前值。

在MATLAB命令窗口中显示提示符“k >>”,可以输入命令查看或修改变量。

②单步运行。

调试中的单步运行很有用,当需要查看像循环过程中变量的变化时,可以使用单步运行来实现。

单步运行使用选单“Debug”→“Step”,或单台F10快捷键,或者单击工具栏的按钮实现;
如果需要单步进入子函数,则可以使用“Step In ”命令,或单击Fll 快捷键,或单击工具栏的按钮。

例如主函数shiyan0502可以单步运行,进入子函数cal 。

同样,在单步运行程序暂停时,将光标移到需要查看的变量上停留片刻,就可以看到该变量的当前值。

(5)使用函数句柄。

在命令窗口使用函数句柄来调用函数: >>h_shiyan0502=@shiyan0502 >>y=feval(@shiyan0502,0.5) 结果:(

3.利用泛函命令实现数值分析 已知5.0b ,1.0a ,t b e
)t (sin )t (f at
2
==-=,利用范函命令求其过零点和极小值。

(1) 创建函数shiyan0503实现上述表达式关系。

function y=shiyan0503(t)
% shiyan0503 y=(sin(t)).^2.*exp(a*t)-b*abs(t) a=0.1;b=0.5;
y=(sin(t)).^2.*exp(a*t)-b*abs(t); (2) 查看该函数的输出波形。

>>x=-10:0.1:10; 图形:( ) >>plot(x, shiyan0503(x)) >>set(gca,’ygrid ’,’on ’) (3) 利用函数名求过零点。

>>x1=fzero(‘shiyan0503’,0.5) %求在0.5附近处的过零点 结果:( )
>>x2=fzero(‘shiyan0503’,-0.5) %求在-0.5附近处的过零点 结果:( ) (4) 利用函数句柄求过零点。

>>x1=fzero(@shiyan0503,0.5)
结果:( )
>>x2=fzero(@shiyan0503,-0.5)
结果:( ) (5) 利用函数句柄求极小值。

>>x1=fminbnd(@shiyan0503,0.1,0.7) %求在0.1~0.7间的极小值 结果:( )
>>x2=fminbnd(@shiyan0503,2,5) %求在2~5间的极小值 结果:( )。

相关文档
最新文档