matlab编程训练
Matlab的操作练习
(5)
5 s,t 5
2、编写程序,绘制右 边图形并加上相应标 注。
3、编写程序,绘制右 边螺旋线图形并加上 相应标注。
4、编写程序,绘制右 边图形并加上相应标 注。
5、绘制下列图形 (1)分别利用ezplot函数和plot函数绘制曲线
x2/3 y2/3 1
(2)分别利用ezplot函数和plot函数绘制曲线
练习2、阅读程序 if A then x= 1 else x=0 end
(a)当A取下面旳数组时,程序输出旳成 果是什么? (1)A=ones(3) (2)A=eye(3) (3)A=inf (4)A=rand(3)>0.5
(b)假如程序中旳A换成any(A)或者all(A) 呢?
在matalb旳程序编写中,假如能够利用数组运算、矩阵运算替代循环 旳点运算,计算效率会大大提升。
x2 y4 0
(3)分别利用ezplot3函数和plot3函数绘制曲线
x cos(t)2 sin(t); y sin(t)2 cos(t); 0 t 2
z t2 *(2 t)2
6、选择合适旳函数绘制图形 (1) 双扭线 = co(s 2) (2)在复平面上绘制函数图形
z cos t i sin(2t)
(3) z1 cos t i sin(2t) z 2 sin(t) icos(2 t)
绘制图形 z=z1*z2
7、分别利用mesh和ezmesh函数绘制网线图
(1)
z x2 y
(2)
z x2 y2
(3)
z2 x2 2y2
符号运算旳练习
1、利用符号运算解下列方程和方程组
(1)x4-1=0旳实根
(1) 100阶矩阵A=(aij), 其中aij=ij
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基本编程
m a t l a b实验M A T L A B基本编程标准化工作室编码[XX968T-XX89628-XJ668-XT689N]实验4M A T L A B 基本编程一、实验目的1. 熟悉MATLAB 的脚本编写2. 熟悉MATLAB 的函数编写3. 熟悉MATLAB 的变量使用4. 熟悉MATLAB 的程序控制结构二、实验内容1. 分别选用if 或switch 结构实现下述函数表示。
-1x ≤-a f(x)=x/a-a<x<a1x ≥a2. 根据e x =1+x+x 2/2!+…+x n /n!+…近似计算指数,当与指数函数的误差小于0.01时停止,分别用for 和while 结构实现。
3. 记录上题的调试过程。
刚开始对于指数直接用e ,后来改成exp4. 提示用户输入1或2,如输入1时,执行第一题脚本;如输入2时,提示用户输入随机数序列长度,然后执行第二题的函数。
5. 从键盘输入数值,迭代计算x n+1=3/(x n +2)。
三、思考题1. 创建脚本实现随机系列的各元素由大到小排列,其中随机数服从U(-5,9)的均匀分布,并且序列长度为10。
2. 创建函数实现指定长度的随机数序列的各元素由大到小的排列,其中随机数服从N(3,9)的高斯分布。
3. 分别用for 和while 结构实现下述函数计算。
(1) s in(x)-cos(x)+sin(2x)+cos(2x)+……+sin(nx)+(-1)n cos(nx)(2)分别if 或switch 结构实现下列函数表示functiony=function1(x,a)if(x<=-a)y=-1;⎪⎪⎪⎪⎪⎪⎨⎧≤<-≤<≤<--≤=d x c d x c x b b x a a x a b a x x f )(11)(10)(y=x/a;elsey=1;endfunctionoutput=function2(x,a)switchx&acasex<=(-a)output=-1;casex>(-a)&x<aoutput=x/a;otherwiseoutput=1;endfunctiony=function3(x)y=0;fori=0:infy=y+(x^i/factorial(i));if(exp(x)-y<0.01)breakendendfunctiony=function4(x)y=0;i=0;while(exp(x)-y>0.01)y=y+(x^i/factorial(i));i=i+1;endfunctionn=function5()r=input('pleaseinput1or2:');switchrcase1disp(function1(1,2));case2x=input('inputanumber:'); disp(function3(x));endfunctiony=function6()n=input('inputanumber:'); y=1.5;ifn==0y=1.5;elseforx=1:1:ny=3/(y+2);endendfunctiony=function7n=input('请输入n的值:'); a=normrnd(3,9,1,n);y=fliplr(sort(a))functiony=function8n=input('n=');x=input('x=');y=0;fori=1:ns=sin(i*x)+(-1)^i*cos(i*x); y=y+s;enddisp(y);functionfunction9x=input('x=');n=1;y=0;whilen<=10s=sin(n*x)+(-1)^n*cos(n*x); y=y+s;n=n+1;enddisp(y);functiony=function10A=[1,2,3;0,1,2;0,0,1];n=input('n=');t=input('t=');y=0;fori=1:1:nx=A^i*exp(A^i*t);y=y+x;enddisp(y);functiony=function11A=[1,2,3;0,1,2;0,0,1];n=input('n=');t=input('t=');y=0;while(n)x=A^n*exp(A^n*t);y=y+x;n=n-1;endy=y+exp(A*t);disp(y);functionp=f(x,y)x=input('请输入x的值:')y=input('请输入y的值:')ify==1p=sin(x);elseify==2p=cos(x);elsep=sin(x)*cos(x);endfunctionf=function13(x,y) switchycase1f=sin(x);case2f=cos(x);otherwisef=sin(x)*cos(x);end脚本a=unifrnd(-5,9,1,10);y=sort(a);y=rot90(y)。
Matlab编程训练题盐城工学院
《Matlab 编程训练》任务书专业学生姓名 班级 学号指导教师 段文勇 完成日期2018年6月03日实训要求一、实训课时为一周,要求在机房上满五天课;二、成绩评定分为两部分:平时(50%)+作业(50%);其中,平时包括出勤、上机情况、最后上机考核;作业包括完成度、工整度、正确率、条理清楚、参数完整等。
三、作业要求:(1)要求程序的,程序必须在M文件中编辑,运行成功后截图到word 中;(2)要求结果输出的,结果必须在运行成功后,从Matlab 运行结果处截图到word中;(3)要求图的,图片必须截取完整的figure图窗口,不允许截取部分窗口。
如下图(a)满足要求,图(b)不满足要求。
图(a)完整窗口图(b)图的中间部分(4)有些题目中给出明确的要求,严格按要求完成作业;(5)在完成作业后,仔细调节文档格式,正文统一用小四宋体字体,1.5倍行距,图片大小适中,居中,整体效果整洁。
(6)完成作业后,单面打印装订好。
实训一 MATLAB 语言介绍和数值计算1. 分别写出清除命令窗口和清除变量的指令。
解答:清除命令窗口指令:clc 清除变量指令:clear2. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存变量。
3o1180cos 10ez -=; ac b e abc cb a z +-+++=)-tan(22332ππ, 其中.8.9,5,5.3===c b a 解答:3. 已知⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=14553541322113313220221111210A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=75507222141131331212112B 求下列表达式的值: (1) 4A+7B 和A+B-I (其中I 为单位矩阵) (2) A*B 和A.*B (3) A^4和A.^4(4)A/B及B/A(5)将矩阵C=B/A的右下角3*2子矩阵赋给D, 并保存为变量(mat文件)。
解答:4. 求得一个元素在25-101之间的95⨯阶随机方阵A 的每行最大元素所在的位置?解答:5. 已知矩阵⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=1362431155361234422033214A ,(1) 取出A 的第2、4、7、10、11、14个元素构成一个新的矩阵A1,其中A 的第2、4个元素构成A1的第一行;第7、10个元素构成A1的第二行;第11、14个元素构成A1的第三行; (2) 将A1的所有元素构成一个行向量。
MATLAB教程及实训
MATLAB教程及实训MATLAB是一种强大的计算机软件,主要用于数值计算、数据分析和可视化,广泛应用于科学、工程和金融领域。
以下是一个针对初学者的MATLAB教程及实训,旨在帮助读者快速入门并掌握基本的MATLAB使用技巧。
第一部分:MATLAB基础1.MATLAB的安装与启动2.MATLAB命令行介绍MATLAB的命令行界面,包括如何输入和执行MATLAB命令以及查看命令的输出结果。
3.MATLAB的基本数据类型介绍MATLAB中常用的数据类型,包括标量、向量、矩阵和字符串等,并讲解如何创建和操作这些数据类型。
4.数学运算介绍如何在MATLAB中进行基本的数学运算,包括加减乘除、指数运算和三角函数等,并讲解MATLAB提供的数学函数。
5.逻辑运算和控制流程介绍如何在MATLAB中进行逻辑运算和比较运算,以及如何使用条件语句、循环语句和逻辑判断语句来控制程序的流程。
第二部分:MATLAB数据处理与分析1.数据导入和导出介绍如何使用MATLAB读取和写入各种格式的数据文件,包括文本文件、Excel文件和MAT文件等,并讲解如何处理和转换数据。
2.数据可视化介绍如何使用MATLAB绘制各种类型的图表,包括折线图、散点图、柱状图和饼图等,并讲解如何设置图表的样式和属性。
3.数据统计和分析介绍如何使用MATLAB进行常见的数据统计和分析,包括均值、方差、相关系数和回归分析等,并讲解如何使用MATLAB的统计工具箱进行高级数据分析。
第三部分:MATLAB编程与应用实例1.MATLAB编程基础介绍如何使用MATLAB编写脚本和函数,包括变量的定义和赋值、条件语句和循环语句的使用,并讲解MATLAB的函数库和程序调试技巧。
2.MATLAB的应用实例介绍几个典型的MATLAB应用实例,包括信号处理、图像处理和机器学习等领域,通过实际案例演示如何使用MATLAB解决实际问题。
3.MATLAB与其他工具的集成介绍如何将MATLAB与其他科学计算和数据处理工具集成,包括Python、R和Excel等,并讲解如何使用MATLAB的接口进行数据交互和共享。
MATLAB编程练习.doc
编程训练实例1.你玩过牌吗?把13张牌反过来(背面朝上)按一定的顺序排列,先把你已经排好的牌第一张取出放在这叠牌的最底层,拿出第二张放在桌面上,然后将第三张取出又放在最底层,取出第四张放在桌子上……直到游戏结束,你依次取出放在桌子上的牌刚好为K,Q,J,10,9,8,7,6,5,4,3,2,A。
问你一开始时这13张牌的顺序是怎样的?请你用MATLAB编程解决这个问题?请把程序附上。
%调用格式为chengxufunction chengxua={1,13};k=2;j=1;b={'K','Q','J','10','9','8','7','6','5','4','3','2','A'};%for c=1:4for i=1:13if mod(i,2)~=0a{i}=b{j};j=j+1;endendfor i=2:2:13if mod(i,4)~=0a{i}=b{j};j=j+1;endendfor i=4:4:13if mod(i,8)~=0a{i}=b{j};j=j+1;endenda{8}=b{13};a或function f=card()a=1:13;i=1;for j=1:13n=numel(a); %目前的片数;numle为元数的个数。
a(n+1)=a(1); %在多少张里面取第一张。
a(1)=[]; %将上面取出的第一张牌所在空格剪掉。
b(i)=a(1); %翻出来时桌面上亮出来的牌。
i=i+1;a(1)=[];%随着i自增,取出现的空格为空。
(即删除)。
endc={'K','Q','J','10','9','8','7','6','5','4','3','2','A'};%因为10占两位,故用单元d=cell(1,13);%由BC对应的数,将C中字符型的牌放入由B决定对应的D中。
matlab简单编程21个题目及答案
1、设⎥⎦⎤⎢⎣⎡++=)1(sin35.0cos2xxxy,把x=0~2π间分为101点,画出以x为横坐标,y为纵坐标的曲线。
第一题的matlab源程序:①考虑cos(x)为一个整体,然后乘以中括号里面的全部x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x).*(0.5+3*sin(x)./(1+x.^2)); %y的表达式plot(x,y)%画出图形图如下:②考虑对整体求解cos,先求x乘以括号中的部分x=0:2*pi/100:2*pi; %x的步长以及范围从0到2*pi y=cos(x.*(0.5+3*sin(x)./(1+x.^2))); %y的表达式plot(x,y) %画出图形图如下:2、产生8×6阶的正态分布随机数矩阵R1, 求其各列的平均值和均方差。
并求该矩阵全体数的平均值和均方差。
第二题的matlab源程序如下:R1=randn(8,6) %产生正态分布随机矩阵R1 =1.0933 -0.7697 1.5442 -0.1924 1.4193 0.21571.1093 0.3714 0.0859 0.8886 0.2916 -1.1658-0.8637 -0.2256 -1.4916 -0.7648 0.1978 -1.14800.0774 1.1174 -0.7423 -1.4023 1.5877 0.1049-1.2141 -1.0891 -1.0616 -1.4224 -0.8045 0.7223-1.1135 0.0326 2.3505 0.4882 0.6966 2.5855-0.0068 0.5525 -0.6156 -0.1774 0.8351 -0.66691.5326 1.1006 0.7481 -0.1961 -0.2437 0.1873aver=(sum(R1(1:end,1:end)))./8 %产生各行的平均值aver =0.0768 0.1363 0.1022 -0.3473 0.4975 0.1044a=std(R1(1:end,1:end)) %产生各行的均方差也就是标准差a =1.0819 0.8093 1.3456 0.8233 0.8079 1.2150aver1=(sum(R1(:)))./48 %全体数的平均值aver1 =0.0950b=std(R1(:)) %全体数的均方差即标准差b =1.01033、设x=rcost+3t,y=rsint+3,分别令r=2,3,4,画出参数t=0~10区间生成的x~y 曲线。
matlab编程训练
matlab训练题目1、建立一个脚本文件,用于两个变量值的互相交换。
2、比较从键盘输入的两个数的大小,输出其中较大的数。
(扩展,输出两个同型矩阵中对应位置较大的数)3、编写一个函数求一元二次方程的根,并编写测试脚本文件测试结果。
4、编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。
5、编写一个函数用于求数n的阶乘(分别用循环与递归),再编写测试脚本文件求1!+2!+。
+10!。
6、编写脚本测试分段函数:7、222x x<1 x-1 1<=x<2 x-2x-1 x>=2⎧⎪⎨⎪⎩8、有函数122(2)()log(1)(2)ex xf xx x-⎧<=⎨->=⎩,编写脚本文件测试该函数,x的值从键盘输入。
9、编写脚本文件,功能:从键盘输入一个字符,如果是大写字母,输出其后继字母;如果是小写字母,输出其前导字母,(‘z’的后继为’a’,‘a’的前导为’z’);如果是数字字符,输出其ASCII 码;其他字符原样输出。
10、某商场对顾客购买的商品总价打折,规则是500以下不打折,500~1000的95折,1000~3000的9折,3000~5000的85折,5000以上8折。
从键盘输入总价,分别用if语句和switch语句计算折扣,输出应付价。
11、某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price<200 没有折扣12、 200≤price<500 3%折扣13、 500≤price<1000 5%折扣14、 1000≤price<2500 8%折扣15、 2500≤price<5000 10%折扣16、 5000≤price 14%折扣17、输入所售商品的价格,求其实际销售价格。
18、给出学生的百分制成绩,要求转化成成绩等级输出,等级分为‘优秀’,‘良好’,‘中等’,‘及格’.90分以上的为‘优秀’,80-89的为‘良好’,70-79的为‘中等’,60-69的为‘及格’,其他为’不及格’。
matlab仿真实例100题
matlab仿真实例100题Matlab是一种强大的数学软件,广泛应用于科学计算、数据分析和工程仿真等领域。
在学习和使用Matlab的过程中,通过实例的方式进行仿真练习是一种非常有效的学习方法。
下面将给出100个Matlab仿真实例题目,帮助读者更好地掌握Matlab的使用。
1. 编写一个程序,计算并输出1到100之间所有奇数的和。
2. 编写一个程序,计算并输出1到100之间所有偶数的乘积。
3. 编写一个程序,计算并输出1到100之间所有素数的个数。
4. 编写一个程序,计算并输出1到100之间所有整数的平方和。
5. 编写一个程序,计算并输出1到100之间所有整数的立方和。
6. 编写一个程序,计算并输出1到100之间所有整数的阶乘和。
7. 编写一个程序,计算并输出1到100之间所有整数的倒数和。
8. 编写一个程序,计算并输出1到100之间所有整数的平均值。
9. 编写一个程序,计算并输出1到100之间所有整数的中位数。
10. 编写一个程序,计算并输出1到100之间所有整数的标准差。
11. 编写一个程序,计算并输出1到100之间所有整数的方差。
12. 编写一个程序,计算并输出1到100之间所有整数的最大值。
13. 编写一个程序,计算并输出1到100之间所有整数的最小值。
15. 编写一个程序,计算并输出1到100之间所有整数的平方根和。
16. 编写一个程序,计算并输出1到100之间所有整数的立方根和。
17. 编写一个程序,计算并输出1到100之间所有整数的对数和。
18. 编写一个程序,计算并输出1到100之间所有整数的指数和。
19. 编写一个程序,计算并输出1到100之间所有整数的正弦和。
20. 编写一个程序,计算并输出1到100之间所有整数的余弦和。
21. 编写一个程序,计算并输出1到100之间所有整数的正切和。
22. 编写一个程序,计算并输出1到100之间所有整数的双曲正弦和。
23. 编写一个程序,计算并输出1到100之间所有整数的双曲余弦和。
matlab编程经典例题
matlab编程经典例题
以下是一些经典的 MATLAB 编程例题:
1. 编写一个程序,计算一个数列的前 N 个斐波那契数(斐波那契数列是指前两个数为 1,后续每个数是前两个数之和)。
2. 编写一个程序,计算一个数的阶乘。
3. 编写一个程序,计算两个矩阵的乘积。
4. 编写一个程序,找到一个数组中的最大元素。
5. 编写一个程序,检查一个字符串是否是回文。
6. 编写一个程序,为给定的一组数据计算均值、中位数和标准差。
7. 编写一个程序,将一个字符串中的所有元音字母替换成大写字母。
8. 编写一个程序,计算一个数列的前 N 个素数(素数是指只能被 1 和自身整除的数)。
9. 编写一个程序,实现冒泡排序算法,对一个数组进行排序。
10. 编写一个程序,计算一个数的平方根。
以上是一些经典的 MATLAB 编程例题,你可以根据自己的实际需要选择其中的一个或几个进行练习和编程。
matlab mnist训练实例
matlab mnist训练实例什么是MNIST数据集?MNIST数据集是机器学习领域中最常用的数据集之一。
它包含了一系列由手写数字图像组成的训练样本和测试样本。
每个图像都是28x28像素的灰度图像,经过预处理并转换为数字矩阵,具有相应的标签来表示图像中的实际数字。
MNIST数据集是一个用于图像分类任务的经典数据集,特别适用于训练用于手写体数字识别的模型。
准备工作在使用MNIST数据集进行训练之前,我们需要准备一些环境和工具。
首先,我们需要下载并导入MNIST数据集。
在MATLAB中,可以使用以下命令来下载并导入MNIST数据集:matlab[XTrain, YTrain, XTest, YTest] = digitTrain4DArrayData;这个命令会自动将MNIST数据集下载并加载到MATLAB的工作环境中。
其中,XTrain和XTest是训练数据和测试数据的图像矩阵,YTrain和YTest 是对应的标签。
另外,为了训练分类模型,我们还需要选择合适的分类算法。
在这个例子中,我们将使用卷积神经网络(Convolutional Neural Network,CNN)来进行训练。
MATLAB提供了一个方便的工具箱,即“Deep Learning Toolbox”,可以帮助我们构建和训练CNN模型。
构建CNN模型接下来,我们开始构建CNN模型。
在MATLAB的“Deep Learning Toolbox”中,可以使用以下命令创建一个简单的CNN模型:matlablayers = [imageInputLayer([28 28 1])convolution2dLayer(5, 20)reluLayer()maxPooling2dLayer(2, 'Stride', 2)fullyConnectedLayer(10)softmaxLayer()classificationLayer()];这个CNN模型包含了一系列的层,从输入层到输出层,依次是图像输入层、卷积层、ReLU层、池化层、全连接层、softmax层和分类层。
matlab经典编程例题
mat lab经典编程例题以下各题均要求编程实现,并将程序贴在题U下方。
1(从键盘输入任意个正整数,以o结束,输出那些正整数中的素数。
clc;clear;zzs(l)二input ('请输入正整数:*) ;k=l; n=0;%素数个数while zzs(k)、=Oflag=O;%是否是素数,是则为1for yz=2:sqrt(zzs(k))%因子从2至此数平方根if mod(zzs (k), yz)=0flag=l ;break;%非素数跳出循环endendif flag=O&zzs(k)>l%忽略0 和 1 的素数n二n+1;sus(n)=zzs(k);endk=k+l;zzs(k)二input ('请输入正整数:');enddisp(['你共输入了' num2str(k-l)个正整数。
它们是:'])disp(zzs(1 :k- 1))%不显示最后一个数0if n=0disp('这些数中没有素数〜')%无素数时显示elsedispf其中的素数是:')disp(sus)end2(若某数等于其所有因子(不含这个数本身)的和,则称其为完全数。
编程求10000以内所有的完全数。
clc;clear;wq二[];%完全数赋空数组for ii=2:10000yz=[];%ii的因子赋空数组for jj=2:ii/2 %从2到ii/2考察是否为ii的因子if mod(ii, jj)=Oyz=[yz jj] ;%因子数组扩展,加上j jendendif ii==sum(yz)+lwq=[wq ii];%完全数数组扩展,加上iiendenddisp([' 10000 以内的完全数为:'num2str(wq)])%输出3(下列这组数据是美国1900-2000年人口的近似值(单位:口万)。
时间t 1900 1910 1920 1930 1940 1950 1960 1970 1980 1990 2000 人口y 76 92 106 123 132 151 179 203 227 250 2812(1)若试编写程序计算出上式中的d、b、c; y与t的经验公式为y, at, bt, bt(2)若试编写程序计算出上式中的a、b; y与t的经验公式为y, ae.2(3)在一个坐标系下,画出数表中的散点图(红色五角星),中y, ax, bx, c bt 拟合曲线图(蓝色实心线),以及(黑色点划线)。
数字信号处理Matlab练习第三章-080802084朱桂香
1.编写一个Matlab程序,用一个N点的复数离散傅里叶变换计算两个长度为N的实数序列的N点离散傅里叶变换,并将结果同直接使用两个N点离散傅里叶变换得到的结果进行比较。
n=0:11; %设定n的范围x1=cos(pi/6.*n); %给定序列x1[n]x2=(4/5).^n; %给定序列x2[n]w1=x1+1i*x2; %由序列x1[n]和x2[n]组成复数序列w1[n]w2=x1-1i*x2; %序列w1[n]的共轭序列w2[n]figure,subplot(2,1,1),stem(n,x1); %指定位置1,绘制序列x1[n]xlabel('n'); %设定序列x1[n]的横轴标注和纵轴标注ylabel('x1[n]');subplot(2,1,2),stem(n,x2); %指定位置2,绘制序列x2[n]xlabel('n'); %设定序列x2[n]的横轴标注和纵轴标注ylabel('x2[n]');figure,subplot(4,1,1),stem(abs(w1)); %指定位置1,绘制序列w1[n]幅度谱xlabel('n'); %设定横轴标注,纵轴标注和标题ylabel('magnitude');title('W1的幅度谱');subplot(4,1,2),stem(angle(w1)); %指定位置2,绘制序列w1[n]相位谱xlabel('n'); %设定横轴标注,纵轴标注和标题ylabel('phase');title('W1的相位谱');subplot(4,1,3),stem(abs(w2)); %指定位置3,绘制序列w2[n]幅度谱xlabel('n'); %设定横轴标注,纵轴标注和标题ylabel('magnitude');title('W2的幅度谱');subplot(4,1,4),stem(angle(w2)); %指定位置4,绘制序列w2[n]相位谱xlabel('n'); %设定横轴标注,纵轴标注和标题ylabel('phase');title('W2的相位谱');X1=fft(x1); %求序列x1[n]的离散傅里叶变换X1(k)X2=fft(x2); %求序列x2[n]的离散傅里叶变换X2(k)W1=fft(w1); %求序列w1[n]的离散傅里叶变换W1(k)W2=fft(w2); %求序列w2[n]的离散傅里叶变换W2(k)Y1=(1/2)*(W1+W2); %由W1(k)和W2(k)来求X1(k)Y2=(1/(2*1i))*(W1-W2); %由W1(k)和W2(k)来求X2(k)figure,subplot(2,1,1),stem(abs(X1)); %指定位置1,绘制|X1(k)|xlabel('k'); %设定横轴标注和纵轴标注ylabel('|X1(k)|');subplot(2,1,2),stem(abs(Y1)); %指定位置2,绘制|Y1(k)|xlabel('k'); %设定横轴标注和纵轴标注ylabel('|Y1(k)|');figure,subplot(2,1,1),stem(abs(X2)); %指定位置1,绘制|X2(k)|xlabel('k'); %设定横轴标注和纵轴标注ylabel('|X2(k)|');subplot(2,1,2),stem(abs(Y2)); %指定位置2,绘制|Y2(k)|xlabel('k'); %设定横轴标注和纵轴标注 ylabel('|Y2(k)|');结果图:nx 1[n]024681012nx 2[n ]图1 序列x1[n]和x2[n]02468101212nm a g n i t u d eW1的幅度谱24np h a s eW1的相位谱02468101212nm a g n i t u d eW2的幅度谱024681012-4-20np h a s e图2 w1和w2的幅度谱和相位谱图246k|X 1(k )|246k|Y 1(k )|图3 两种计算X1(k)的方法比较024681012246k|X 2(k )|024681012246k|Y 2(k )|图4 两种计算X2(k)的方法比较2.编写一个Matlab 程序,用两个N 点的复数离散傅里叶变换计算一个长度为2N 的实数序列的2N 点离散傅里叶变换,并将结果同直接使用一个2N 点离散傅里叶变换得到的结果进行比较。
matlab经典编程例题30道
MATLAB是一款功能强大的数学软件,其编程功能也受到越来越多人的关注。
下面介绍的是30个matlab经典编程例题,可以帮助大家熟悉matlab的编程语法,提高matlab 编程技能。
1. 请编写一个程序,计算出两个数的和。
2. 请编写一个程序,计算出两个数的最大值和最小值。
3. 请编写一个程序,计算出一组数据的平均值和标准差。
4. 请编写一个程序,将一个矩阵转置。
5. 请编写一个程序,求出两个矩阵的乘积。
6. 请编写一个程序,求出一个矩阵的逆矩阵。
7. 请编写一个程序,求出一个矩阵的行列式。
8. 请编写一个程序,计算出一元二次方程的解。
9. 请编写一个程序,计算出两个数组的相似度。
10. 请编写一个程序,计算出一个矩阵的特征值和特征向量。
11. 请编写一个程序,求出两个矩阵的秩。
12. 请编写一个程序,求出一个矩阵的特定元素。
13. 请编写一个程序,求出一组数据的最高值和最低值。
14. 请编写一个程序,求出两个数组的交集。
15. 请编写一个程序,求出一个矩阵的行和列之和。
16. 请编写一个程序,使用循环语句计算出100以内所有奇数的和。
17. 请编写一个程序,使用循环语句计算出1到1000以内的和。
18. 请编写一个程序,使用递归函数计算出斐波那契数列的第n项。
19. 请编写一个程序,求出一个多项式的导数。
20. 请编写一个程序,求出一个函数的极值点。
21. 请编写一个程序,求出一个数组的非零元素个数。
22. 请编写一个程序,计算出函数的不定积分。
23. 请编写一个程序,计算出函数的定积分。
24. 请编写一个程序,求出一个矩阵的秩。
25. 请编写一个程序,求出函数的极限值。
26. 请编写一个程序,求出一个矩阵的特征值分解。
27. 请编写一个程序,求出一个矩阵的LU分解。
28. 请编写一个程序,求出一个矩阵的QR分解。
29. 请编写一个程序,求出三次多项式的根。
30. 请编写一个程序,求出一个函数的积分。
matlab练习程序(BFGS)
matlab练习程序(BFGS)BFGS和DFP都是拟⽜顿法,和⾼斯⽜顿法不同的地⽅是不⽤直接求J'*J矩阵了,⽽BFGS⼜⽐DFP算法有更好的数值稳定性。
算法步骤如下:1. 给⼀个待求参数的初始值x(1)。
2. 给定H(1)矩阵为单位阵,并且计算出待优化函数在x(k)处的梯度g(k)。
3. 令d(k) = -H(k)*g(k),得到搜索⽅向。
4. 从x(k)出发,沿着d(k)⽅向搜索,给定⼀个步长,找到其搜索范围内⽐当前参数x(k)更⼩函数值对应的x值,记为x(k+1)。
5. 计算待优化函数在x(k+1)处的梯度g(k+1)。
6. 计算此时参数位移p = x(k+1) - x(k)和梯度位移q = g(k+1) - g(k)。
7. 最后根据下⾯迭代公式更新H矩阵即可,当g⼩于⼀定阈值时认为迭代结束。
下⾯两个公式是对偶的,形式上就是把p和q对换了⼀下,通常BFGS性能更优。
DFP迭代公式:BFGS迭代公式:这⾥提供⼀个作为⽰例。
matlab代码如下:clear all;close all;clc;warning off;data=[1091; %待拟合数据1492;1493;1915;2137;22410];y = data(:,1);x = data(:,2);plot(x,y,'ro');syms b1 b2;ff = sum((y - (b1*(1-exp(-b2*x)))).^2); %定义待优化函数dff1 = diff(ff,b1); %两个参数的偏导dff2 = diff(ff,b2);f=inline(char(ff),'b1','b2'); %转为函数g1=inline(char(dff1),'b1','b2');g2=inline(char(dff2),'b1','b2');b = [1;1]; %初始参数rho = 0.5;sigma = 0.5; %迭代步长H = eye(2); %⽤来替代hessian矩阵的H矩阵re=[];for i=1:200g = [g1(b(1),b(2));g2(b(1),b(2))];dk = -inv(H)*g;mk=1;for j=1:20 %局部最优搜索new=f(b(1)+rho^j*dk(1),b(2)+rho^j*dk(2));old=f(b(1),b(2));if new < old + sigma*rho^j*g'*dkmk = j;break;endendnorm(g)if norm(g)<1e-20 || isnan(new)break;endb = b + rho^mk*dk; %向局部最优⽅向移动gg=[g1(b(1),b(2));g2(b(1),b(2))];q = gg - g; %q = g(k+1)-g(k)p = rho^mk*dk; %p = x(k+1)-x(k)H = H - (H*p*p'*H)/(p'*H*p) + (q*q')/(q'*p); %矩阵更新endbx1 = min(x):0.01:max(x);y1 = (b(1)*(1-exp(-b(2)*x1)));hold on;plot(x1,y1,'b');结果如下:。
matlab 预训练
matlab 预训练Matlab是一种功能强大的编程语言和数值计算环境,广泛应用于科学、工程和金融等领域。
预训练是指在机器学习中,使用预先训练好的模型来进行任务的过程。
本文将介绍Matlab中的预训练及其应用。
在机器学习领域,预训练是一种常见的技术。
它通过使用大量的标注数据来训练模型,并将这些模型的参数保存下来。
然后,在实际应用中,通过加载这些预训练好的模型,可以快速地进行任务的推断。
Matlab提供了许多预训练模型,包括图像分类、物体检测、语义分割等。
这些模型是在大规模的数据集上进行训练的,具有较高的准确率和泛化能力。
在使用这些预训练模型之前,需要先安装相应的工具箱,并下载对应的模型文件。
以图像分类为例,Matlab提供了许多经典的预训练模型,如AlexNet、VGG-16、GoogLeNet等。
这些模型可以用于识别图像中的物体或场景。
使用预训练模型的步骤如下:1. 准备数据集:在使用预训练模型之前,需要准备一个用于测试的数据集。
这个数据集可以包含多张图片,每张图片代表一个样本。
2. 加载模型:在Matlab中,可以使用命令`net = alexnet`来加载AlexNet模型。
这个命令会从网络上下载模型文件,并加载到当前的工作空间中。
3. 图像预处理:在进行图像分类之前,通常需要对图像进行预处理,以确保输入数据的格式与模型的要求相匹配。
例如,可以对图像进行缩放、裁剪、归一化等操作。
4. 进行推断:通过调用预训练模型的`classify`函数,可以对输入的图像进行分类。
这个函数会返回一个预测结果和对应的置信度。
5. 结果分析:根据预测结果,可以对模型的性能进行评估。
可以计算模型的准确率、召回率等指标,以衡量模型的性能。
除了图像分类,Matlab还提供了其他领域的预训练模型。
例如,在物体检测任务中,可以使用Faster R-CNN、YOLO等模型进行目标检测。
在语义分割任务中,可以使用DeepLab、FCN等模型进行像素级的分割。
matlab 的rbf函数编程
matlab 的rbf函数编程在MATLAB中,实现RBF(径向基函数)网络的编程通常需要以下步骤:1. 导入数据,首先,你需要导入你的数据集。
可以使用MATLAB的内置函数如`csvread`或者`xlsread`来导入数据,或者直接创建一个数据矩阵。
2. 数据预处理,对于RBF网络,通常需要对数据进行标准化或归一化处理,以确保网络的训练和预测过程能够顺利进行。
3. 网络训练,使用MATLAB的神经网络工具箱(Neural Network Toolbox)中的函数,比如`newrb`(用于建立RBF网络)和`train`(用于训练网络),来训练RBF网络。
在训练之前,你需要确定RBF网络的结构,比如隐藏层节点的数量和RBF函数的类型。
4. 网络预测,训练完成后,可以使用训练好的RBF网络对新的数据进行预测。
使用`sim`函数来进行预测,传入训练好的网络和待预测的输入数据。
下面是一个简单的示例代码,用于在MATLAB中实现RBF网络的训练和预测:matlab.% 导入数据。
data = load('your_data_file.csv');% 数据预处理。
% 这里假设数据已经进行了合适的预处理。
% 定义RBF网络结构。
hiddenLayerSize = 10; % 设置隐藏层节点数量。
net = newrb(input, target, goal, spread); % 创建RBF网络。
% 网络训练。
net = train(net, input, target); % 训练RBF网络。
% 网络预测。
output = sim(net, input); % 使用训练好的网络进行预测。
在这个示例中,`input`是输入数据,`target`是对应的目标输出,`goal`是训练的目标性能,`spread`是RBF函数的扩展参数。
你需要根据你的数据和需求来调整这些参数。
需要注意的是,RBF网络的性能很大程度上取决于网络结构和参数的选择,因此在实际应用中需要进行一定的调参和验证工作。
matlab编程例题自由落体运动
自由落体运动是物理学中的一个基础概念,它描述了在没有空气阻力作用下物体在重力场中运动的规律。
在实际工程和科学研究中,我们常常需要使用matlab编程来模拟自由落体运动,并分析物体的轨迹、速度、加速度等参数。
本文将通过实际例题,介绍如何利用matlab编程来模拟自由落体运动,并分析其运动规律。
1. 问题描述假设有一个质量为m的物体从高度h自由落体,重力加速度为g,求在不考虑空气阻力的情况下,物体落地时的速度、运动时间以及运动过程中的轨迹。
2. 解决思路为了解决上述问题,我们可以采用matlab编程,利用欧拉法对自由落体运动进行模拟。
欧拉法是一种常用的数值求解算法,其基本思想是根据微分方程的定义,通过离散化时间和空间,逐步迭代计算物体运动过程中的位置、速度等参数。
3. matlab代码实现下面是利用matlab编写的自由落体运动模拟程序代码:```matlabclearclch = input('请输入初始高度h:'); 初始高度g = 9.8; 重力加速度t = sqrt(2*h/g); 运动时间v = g*t; 落地时的速度disp(['物体落地时的速度为:', num2str(v)]);disp(['物体运动时间为:', num2str(t)]);模拟自由落体运动轨迹t = 0:0.01:t; 时间间隔y = h - 0.5*g*t.^2; 物体高度plot(t, y);xlabel('时间');ylabel('高度');title('自由落体运动轨迹');```4. 代码说明上述matlab代码首先输入初始高度h,并利用公式计算出运动时间t 和落地时的速度v,然后利用plot函数绘制自由落体运动的轨迹图。
在模拟运行程序后,我们可以得到落地时的速度、运动时间以及运动轨迹,并通过图形直观地观察物体的运动规律。
matlab基础练习题及答案
第1章MATLAB基础1。
4 MATLAB操作桌面有几个窗口?如何使某个窗口脱离桌面成为独立窗口?又如何将脱离出去的窗口重新放置到桌面上?答:在MATLAB操作桌面上有五个窗口。
在每个窗口的右上角有两个小按钮,一个是关闭窗口的Close 按钮,一个是可以使窗口成为独立窗口的Undock按钮,点击Undock按钮就可以使该窗口脱离桌面成为独立窗口。
在独立窗口的Desktop菜单中选择Dock.。
.项就可以将独立的窗口重新放置到桌面上。
1.5 如何启动M文件编辑/调试器?答:在操作桌面上选择“建立新文件”或“打开文件"操作时,M文件编辑/调试器将被启动.在命令窗口中键入edit命令时也可以启动M文件编辑/调试器.1.6 存储在工作空间中的数组能编辑吗?如何操作?答:存储在工作空间的数组可以通过数组编辑器进行编辑:在工作空间浏览器中双击要编辑的数组名打开数组编辑器,再选中要修改的数据单元,输入修改内容即可。
1.7 命令历史窗口除了可以观察前面键入的命令外,还有什么用途?答:命令历史窗口除了用于查询以前键入的命令外,还可以直接执行命令历史窗口中选定的内容、将选定的内容拷贝到剪贴板中、将选定内容直接拷贝到M 文件中。
1。
8 如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有什么区别? 答:当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file 菜单中的Set Path 菜单项来完成。
在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB 运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上。
1.9 在MATLAB 中有几种获得帮助的途径?答:(1)帮助浏览器:选择view 菜单中的Help 菜单项或选择Help 菜单中的MATLAB Help 菜单项可以打开帮助浏览器.(2)help 命令:在命令窗口键入“help ” 命令可以列出帮助主题,键入“help 函数名”可以得到指定函数的在线帮助信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
matlab训练建立一个脚本文件,用于两个变量值的互相交换。
x=input('输入变量x=');y=input('输入变量y=');z=x;x=y;y=z;xy比较从键盘输入的两个数的大小,输出其中较大的数。
(扩展,输出两个同型矩阵中对应位置较大的数)function [ y ] = ex2( x )a=input('输入数字x=');b=input('输入数字y=');if a>bfprintf('较大数为%d\n',a)elseif a<bfprintf('较大数为%d\n',b)elseendend编写一个函数求一元二次方程的根,并编写测试脚本文件测试结果。
function ex3a = input('请输入二次项系数: ');b = input('请输入一次项系数: ');c = input('请输入常数项: ');discriminant = b^2 - 4 * a * c;if discriminant > 0x1 = (-b + sqrt(discriminant)) / (2*a);x2 = (-b - sqrt(discriminant)) / (2*a);fprintf('x1 = %f\n', x1);fprintf('x2 = %f\n', x2);elseif discriminant == 0x1 = ( -b ) / (2*a);fprintf('x1 = x2 = %f\n', x1);elsereal_part = (-b) / (2*a);imag_part = sqrt( abs(discriminant)) / (2*a);disp('此方程无实根:');fprintf('x1 = %f + i %f \n',real_part, imag_part);fprintf('x1 + %f - i %f \n', real_part, imag_part);end编写一个函数求圆的面积与周长,并编写测试脚本文件测试结果。
function ex4r=input('请输入此圆的半径: ');S=pi*r;C=2*pi*r;fprintf('此圆的面积是:');disp(S)fprintf('此圆的周长是:');disp(C)编写一个函数用于求数n 的阶乘(分别用循环与递归),再编写测试脚本文件求1!+2!+。
+10!。
function ex5_2n=input('请输入一个数:');N=sum(factorial(1:n));fprintf('该数列的和为:')disp(N)编写脚本测试分段函数:222x x<1x -1 1<=x<2x -2x-1 x>=2⎧⎪⎨⎪⎩clcclearx=input('输入x:');if x<1p=1;elseif x>=1&x<2p=2;elsep=3;endswitch pcase 1y=x^2;case 2y=x^2-1;otherwisey=x^2-2*x-1; endfprintf('y=%f\n',y);有函数122(2)()log(1)(2)ex xf xx x-⎧<=⎨->=⎩,编写脚本文件测试该函数,x的值从键盘输入。
x=input('x=');if x<2y=2*exp(1)/x;elseif x>=2y=log(x*x-1);endfprintf('y=%f\n',y);编写脚本文件,功能:从键盘输入一个字符,如果是大写字母,输出其后继字母;如果是小写字母,输出其前导字母,(‘Z’的后继为’A’,‘a’的前导为’z’);如果是数字字符,输出其ASCII码;其他字符原样输出。
clcclearch=input('输入一个字符:','s');flag=1;if ch>='A'&ch<='Z'disp('为大写字母,后继字符为:');ch=ch+1;if ch=='Z'+1ch='A';endelseif ch>='a'&ch<='z'disp('为小写字母,前导字符为:');ch=ch-1;if ch=='a'-1ch='z';endelseif ch>='0'&ch<='9'flag=0;elsedisp('为其他字符原样输出:');endif flag==1fprintf('%s\n',ch);elsefprintf('为数字,其ASCII码为:%d\n',ch);end某商场对顾客购买的商品总价打折,规则是500以下不打折,500~1000的95折,1000~3000的9折,3000~5000的85折,5000以上8折。
从键盘输入总价,分别用if语句和switch语句计算折扣,输出应付价。
x=input('商品总价为:');if x<=500y=x;elseif x>500&x<=1000y=0.95*x;elseif x>1000&x<=3000y=0.9*x;elseif x>3000&x<=5000y=0.85*x;else y=0.8*x;endfprintf('应付价为:%d\n',y);某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price来表示):price<200 没有折扣200≤price<500 3%折扣500≤price<1000 5%折扣1000≤price<2500 8%折扣2500≤price<5000 10%折扣5000≤price 14%折扣输入所售商品的价格,求其实际销售价格。
x=input('商品总价为:');if x<200y=x;elseif x>=200&x<500y=0.97*x;elseif x>=500&x<1000y=0.95*x;elseif x>=1000&x<2500y=0.92*x;elseif x>=2500&x<5000y=0.9*x;else y=0.86*x;endfprintf('应付价为:%d\n',y);给出学生的百分制成绩,要求转化成成绩等级输出,等级分为‘优秀’,‘良好’,‘中等’,‘及格’.90分以上的为‘优秀’,80-89的为‘良好’,70-79的为‘中等’,60-69的为‘及格’,其他为’不及格’。
x=input('请输入学生的百分制成绩:');if x>=90y='优秀';elseif x>=80&x<90y='良好';elseif x>=70&x<80y='中等';elseif x>=60&x<70y='及格';else y='不及格';endfprintf('该学生成绩等级为:');disp(y)编写一个函数,统计出一有序整形向量(按升序或降序排列)中不同等值整数组及对应的数据个数。
function [s,k]=ex12(x)n=length(x);s1=x(1);s2=1;k=1;for i=2:nif x(i)==s1(k)s2(k)=s2(k)+1;elsek=k+1;s1=[s1;x(i)];s2=[s2;1];endends=[s1,s2];编写一个函数,统计出一整形向量(可以是无序的)中不同等值整数组及对应的数据个数。
function ex13( x )y=sort(x, 'ascend');num=length(y);yout=[];count=1;disp(' 数据组个数');for ii=1:num-1if y(ii)==y(ii+1);count=count+1;continue;endyout=[yout;y(ii) count];count=1;endif y(num-1)~=y(num)yout=[yout;y(num) 1];yout=[yout;y(num) count];enddisp(yout);求1+2+3+……+100的和。
(分别用for和while语句实现)。
function [ y ] = ex14ii=1;s=0;while ii<=100s=s+ii;ii=ii+1;endsend随机生成一个20行10列的矩阵,分别求每行的和与每列的和。
(不用sum函数。
)A=-100+round(200*rand(10,20));disp(A')s=0;for k=As=s+k;enddisp(s')s=0;for k=A's=s+k;disp(s')随机生成一个20行10列的矩阵,分别求每行的和与每列的平均值。
A=-100+round(200*rand(10,20));disp(A')s=0;for k=As=s+k;ends=s/20;disp(s')s=0;for k=A's=s+k;ends=s/10;disp(s')随机生成一个20行10列的矩阵,矩阵元素除以对应列的和形成新的矩阵。
如果对应列的和为零,则新矩阵该列所有元素全为零。
A=-100+round(200*rand(10,20));s=sum(A);i=1;j=1;while j<=10a=s(i, j);A(:,j)=0;elseA(:,j)=A(i,:)/s(i, j); endj=j+1;enddisp(A')计算下面式子的和:ii=1;s1=0;while ii<=10s1=s1+1^ii;ii=ii+1;endjj=1;s2=0;while jj<=10s2=s2+2^jj;jj=jj+1;endkk=1;s3=0;while kk<=10s3=s3+3^kk;ends=s1+s2+s3一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数,输出全部水仙花数。