MATLAB考试复习点及例题

更新时间:2024-01-15 15:08:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

字符串举例:

>> A= 'China ' '中国' ' ' ;输出带引号的汉字 >> B='我是好学生' >> c='I am fine.'

>> s3=char('s', 'y','m','b','o','l','i','c') ;用函数char生成字符串 >> double(s3') ;字符串转换为数值代码 >> abs(s3')

>> cellstr(s3) ;字符矩阵转换为字符串 >> b=num2str(a) 比较 >> b*2 和 >> ab=[A,' ',B,'.'] >> AB=['中国';'北京']

关系运算举例

>> A=[3,4,8;9,0,2;5,3,7] A = 3 4 8 9 0 2 5 3 7 >> B=[4,4,1;7,8,4;5,1,7] B =

4 4 1 7 8 4 5 1 7 >> E=(A>B) E = 0 0 1 1 0 0 0 1 0

;数字转换为字符串 str2num(b)*2 >> NE=(A~=B)

NE =

1 0 1 1 1 1 0 1 0 >> A0=(A>5) A0 =

0 0 1 1 0 0 0 0 1 >> B0=(B<=6) B0 =

1 1 1 0 0 1 1 1 0

逻辑运算举例

>> A_B=A|B A_B =

1 1 1 1 1 1 1 1 1 >> C=~A C =

0 0 0 0 1 0 0 0 0 >> cc=(A>3)&(B<6) cc =

0 1 1 0 0 0 1 0 0

>> A=[3,4,8;9,0,2;5,3,7] A =

3 4 8 9 0 2 5 3 7 >> B=[4,4,1;7,8,4;5,1,7] B = 4 4 1 7 8 4 5 1 7 >> AB=A&B AB =

1 1 1 1 0 1 1 1 1

z?创建一个表达式 ,并求当 x=1, 2sin3y?14x?1?0.5457e2?0.75x?3.75y?1.5x22y=2 时的z 值。

x=1

y=2

z=(sqrt(4*x.^2+1)+0.5457*exp(-0.75*x.^2-3.75*y.^2-1.5*x))/(2*sin(3*y)-1)

?1??5x?y?x?8?10i的值,其中 计算 。

4x=(sqrt(-5)-1)/4 y=x+8+10*i

创建一个包含“ What’s your name”字符串 s='what''s your name'

输入如下两个矩阵 A 和 B,对矩阵 A 和 B 作关系运算,标识出两矩阵中元素相等的位置,元素值不等的位置,并标识出矩阵 A 中所有小于 0 的元素。

A=[1 2 3;-2 1 3;-3 2 1] B=[1 4 3;3 2 8;5 2 3] A==B A<0

?1?A??2????32123??3?1???1?B?3???54223??8?3??对上面的矩阵 A 和 B 作逻辑“ 或”、“ 与”运算,并标识出矩阵 B 中所有大于 2 并小于 5 的元素位置。

A=[1 2 3;-2 1 3;-3 2 1]

B=[1 4 3;3 2 8;5 2 3] A|B 2A&B 2

?2x?1 x?1?绘出函数 y ?? 0 ? ? x ? 1 的图像。 1? ??x3 x?1>> x=-3:0.1:3; >> if x>=1

? y=2*x.^2+1;

plot(x,y)

elseif -1

多项选择

>> No=input('Please input your choice! Please input your choice! '); 1 >> switch No case 0

disp('return to main menu'); case 1

disp('She is a girl'); case 2

disp('He is a boy'); otherwise

disp('I can''t determine') end

She is a girl

循环结构举例

>> sum=0;

>> for I=1:10

>> i=0;

A(I)=1/(I+1) ; >> while(i<=100)

end sum=sum+1; >> A i=i+1; A =

end Columns 1 through 7

>> sum 0.5000 0.3333 0.2500 0.2000 sum = 0.1429 0.1250

14196774

Columns 8 through 10

0.1111 0.1000 0.0909

用fprint写ASCII文本数据到文件或屏幕上:

COUNT=fprintf(Fid, format, A, …)

例: x=0:0.1:1; y=exp(x)

Fid=fopen('exp.txt', 'w')

fprintf(Fid, '%6.2f, .8f\\n',x,y) fclose(Fid);

用fwrite写二进制文件:

COUNT=fwrite(Fid, A, precision)

例: Fid=fopen(‘test.dat’, ‘w’);

cnt=fwrite(Fid, A, ‘float’) fclose(Fid);

0.1667 编一个画宝石项链的程序

echo on

t=(0:0.02:2)*pi; x=sin(t); y=cos(t); z=cos(2*t);

plot3(x,y,z,'b-',x,y,z,'bd') view([-80,60]) box on

legend(‘链子’,‘宝石’); function f=fibfun(n) 函数定义行 n—函数输入;f—函数输出;fibfun—函数名。

由向量构成矩阵

向量是组成矩阵的基本元素之一。向量元素需要用方括号括起来。元素之间用空格和逗号分隔 生成行向量,用分号隔开生成列向量。可以把行向量看成1?n 阶矩阵,把列向量看成n?1 阶 矩阵。

向量的构造方法: 直接输入向量 利用冒号生成向量

利用 linspace/logspace 生成向量 >> a=[1,2,3,4]; >> x=0:0.5:2;

% x=logspace(a,b,n) 生成有 n 个元素的行向量 x,其元素起点 x(1)=10a,终点 x(n)=10b。 >> b=logspace(0,2,4) b =

>> x x =

0 0.5000 1.0000 1.5000 2.0000

% x=linspace(a,b,n) 生成有 n 个元素的行向量 x,其元素值在 a、b 之间线性分布。

>> y=linspace(0,2,7) y =

0 0.3333 0.6667 1.0000 1.3333 1.6667 2.0000

>> z=[-1 x 3] z =

-1.0000 0 0.5000 1.0000 1.5000 2.0000 3.0000 >> u=[y;z]

矩阵元素的修改

>> A=[1,2,3,4;5,6,7,8;9,10,11,12;13,14,15,16] A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >> A(1,1) ans = 1 >> A(2,3) ans = 7

>> A(1,1)=0;A(2,2)=A(1,2)+A(2,1);A(4,4)=cos(0); >> A A = 0 2 3 4 5 7 7 8 9 10 11 12 13 14 15 1

矩阵的函数

a.矩阵的基本变换函数

>> A=[3,3,5;2,4,6;7,8,9] %创建方阵 A A =

3 3 5 2 4 6 7 8 9

>> inv(A) %矩阵的逆(A必须为非奇异方阵) ans =

0.5000 -0.5417 0.0833 -1.0000 0.3333 0.3333 0.5000 0.1250 -0.2500 >> A‘ %矩阵的转置 ans =

3 2 7 3 4 8 5 6 9

求值:

>> a=[1,2,3,4] a =

1 2 3 4 >> b=[1,1;1,1] b =

1 1 1 1

>> polyvalm(a,4) % x=4时多项式的值 ans =

112 %与polyval(a,4)结果相同 >> polyval(a,b) %数组运算 ans =

10 10 10 10

>> polyvalm(a,b) %矩阵运算 ans =

15 11 11 15

多项式拟合:

>> x=0:pi/20:pi/2; >> y=sin(x);

>> [p,s]=polyfit(x,y,5); >> x1=0:pi/30:pi*2; >> y1=sin(x1);

>>y2=p(1)*x1.^5+p(2)*x1.^4+p(3)*x1.^3+p(4)*x1.^2+p(5)*x1+p(6); >> plot(x1,y1,'b-',x1,y2,'r*')

>> legend('Original curve','Fitted curve') >> axis([0,7,-1.2,4])

用命令 plot(y)绘曲线,其中 y=[5 3 4 9 0 2 3]。

y=[5 3 4 9 0 2 3];

plot(y)

用命令 plot(x,y)绘制函数 y=cos(x)在两个周期内的图形。

x=0:0.01:2*pi;

y=cos(x);

plot(x,y)

在同一图形窗口中用命令 plot(x,y)绘出正弦余弦函数的图形。

x=0:0.01:2*pi;

y=[sin(x);cos(x)];

plot(x,y)

用命令plot(Y)绘制矩阵 Y=[5 4 3 8 9 10;3 4 4 5 8 2 ;8 12 13 21 18 25 ;9 8 8

9 6 7]的图形。

Y=[5 4 3 8 9 10;3 4 4 5 8 2 ;8 12 13 21 18 25 ;9 8 8 9 6 7];

对数坐标曲线命令

绘制二维对数坐标曲线的命令semilogx、semilogy 和 loglog,其用法和函数 plot 相同。

函数 semilogx 横坐标为对数坐标;函数 semilogy 纵坐标为对数坐标; 函数loglog 横、纵坐标均为对数坐标。 绘制正弦函数的对数坐标曲线。 t=0.1:0.1:3*pi; y=sin(t); figure(1)

semilogx(t,y)

grid on %为图形窗口添加网格 figure(2) semilogy(t,y) figure(3)

y?在同一图形窗口中用不同的绘图函数绘制同一函数曲线

的双 y 轴图形。x=0:0.1:6; y=sqrt(x); plotyy(x,y,x,y,’semilogy’,’plot’)

x

用 subplot 函数把两种不同的图形综合在一个图形窗口中。

subplot(2,2,1) t=0.1:0.1:2*pi; y=sin(t); semilogx(t,y) grid on

subplot(2,2,2) t=0:0.1:4*pi; y=sin(t); plot(t,y)

subplot(2,2,3) x=1:0.01:5; y=exp(x);

plotyy(x,y,x,y,’semilogx’,’plot’) subplot(2,2,4) x=1:0.1:10; y=sqrt(x); plot(x,y,’:rd’)

坐标系的调整

实现坐标系的调整的命令是 axis 函数。

调用格式为: axis([xmin,xmax,ymin,ymax,zmin,zmax])

坐标的最小值( xmin,ymin,zmin)必须小于相应的最大值( xmax,ymax,zmax),否则 会出错。

自动坐标系与用 axis 函数调整后的坐标系的比较。 subplot(2,1,1) t=0:0.1:4*pi; y=sin(t); plot(t,y) subplot(2,1,2) t=0:0.1:4*pi; y=sin(t); plot(t,y)

axis([0,max(t),min(y),max(y)])

x、y、z 是向量时,plot3 命令的使用 t=0:0.1:8*pi;

plot3(sin(t),cos(t),t)

title(’绘制螺旋线’) %用命令 title 对图形主题进行标注 xlabel(’sin(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’) ylabel(’cos(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’) zlabel(’t’,’FontWeight’,’bold’,’FontAngle’,’italic’) %命令 zlabel 用来指定 z 轴的数据名称 grid on

x、y、z 都是矩阵时,plot3 命令的使用 [X,Y]=meshgrid(-pi:0.1:pi); Z=sin(X)+cos(Y); plot3(X,Y,Z)

函数 2 2 ,定义区域为[-2,2]×[-2,2]。生成网?x?y格并计算其网格点上的函数值。

[X,Y] = meshgrid(-2:2:2, -2:2:2);

[X,Y] %将划分结果输出至矩阵 ans =

-2 0 2 -2 -2 -2

-2 0 2 0 0 0 -2 0 2 2 2 2

Z = X .* exp(-X.^2 - Y.^2); %计算网格点上的函数值赋予变量 Z Z =

-0.0007 0 0.0007 -0.0366 0 0.0366 -0.0007 0 0.0007

z?x?e用 mesh 命令绘制网格曲面。

[X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); mesh(Z)

meshc 除生成网格曲面外,还在 x-y 平面上生成曲面的等高线图形;meshz 除生成与 mesh 相同的网格曲面外,还在曲面下面加上一个长方体的台柱。

[X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); Subplot(2,1,1) meshc(Z) subplot(2,1,2) meshz(Z)

三维表面命令 surf

函数 surf 可实现对网格曲面片进行着色,将网格曲面转化为实曲面。surf 命令的调用格式与 mesh 相同。

利用三维网格表面命令 surf 绘制图形。

z=peaks; %绘制山峰的图像,将函数值赋予变量z surf(z) %对山峰的图像进行着色处理 shading interp %函数 shading 改变着色方式

绘制高斯三维分布曲面的等高线及二维等高线。 contour(peaks,30) %绘制二维山峰的等高线,等高线的条数为 30 contour3(peaks,20) %绘制三维山峰图像的等高线,等高线的条数为 20

函数 view 的用法

subplot(2,2,4)

[X,Y]=meshgrid(-8:0.5:8); surf(X,Y,Z)

R=sqrt(X.^2+Y.^2)+eps; xlabel('X 轴','FontWeight','bold')

Z=sin(R)./R; ylabel('y 轴','FontWeight','bold')

subplot(2,2,1) %缺省视角 zlabel('z 轴','FontWeight','bold')

surf(X,Y,Z) title('\\fontname {隶书} 方位角为 0° 仰

xlabel('X 轴','FontWeight','bold') 角为 90°')

ylabel('y 轴','FontWeight','bold') view(0,90)

zlabel('z 轴','FontWeight','bold')

title('\\fontname {隶书} 缺省视角')

subplot(2,2,2)

surf(X,Y,Z)

xlabel('X 轴','FontWeight','bold')

ylabel('y 轴','FontWeight','bold')

zlabel('z 轴','FontWeight','bold')

title(' \\fontname {隶书} 方位角为 90°仰角为 0°')

view(90,0)

subplot(2,2,3)

surf(X,Y,Z)

xlabel('X 轴','FontWeight','bold')

ylabel('y 轴','FontWeight','bold')

zlabel('z 轴','FontWeight','bold')

title('\\fontname {隶书} 方位角为-37.5° 仰角为 80°')

柱面的表达cylinder

cylinder命令中,柱面的轴线定义为 z 轴,只要给出母线的描述就可完成一个柱面。 调用格式为:

[X,Y,Z] = cylinder(R,N);

[X,Y,Z] = cylinder(R):缺省值 N=20;

[X,Y,Z] = cylinder:缺省值 N=20,R=[1,1]。

R:是一描述柱面母线的向量;N:是旋转柱面上的分割线条数; [X,Y,Z] :是返回的x,y,z坐标向量。 绘制一个柱面。 t=pi:0.01:3*pi; r=sin(t)+t; cylinder(r,30) shading interp

x ?0 . 1? xe按照的步长间隔 ? 绘制函数 y 在0≤x≤1时的曲线

x=0:0.1:1; y=x.*exp(-x); plot(x,y)

?1?xy?n?6,其中 n 为[0,12]的自然数 用图形表示离散函数 n=0:1:12; y=abs(n-6).^(-1); plot(n,y)

11?x?分别采用 、 的步长,绘制连续调制波形 y?sin(t)sin(9t)100?10?的图像

t1=0:1/(10*pi):2*pi; t2=0:1/(100*pi):2*pi; y1=sin(t1).*sin(9*t1); y2=sin(t2).*sin(9*t2); plot(t1,y1,'r--',t2,y2,'b-.')

??1画一组椭圆 给出一系列的 a 值,采用函数 22t=0:0.002:2*pi; x1=1*cos(t);

y1=sqrt(25-1).*sin(t); x2=2*cos(t);

y2=sqrt(25-2^2).*sin(t); x3=3*cos(t);

y3=sqrt(25-3^2).*sin(t); x4=4*cos(t);

y4=sqrt(25-4^2).*sin(t);

plot(x1,y1,'r',x2,y2,'b',x3,y3,'y',x4,y4,'c') xlabel('长轴a=1、2、3、4')

x2y2a25?az?x?y的图像 用曲面图命令 surf 表现函数

[X,Y] = meshgrid(-20:0.5:20, -20:0.5:20); Z = X.^2+Y.^2; surf(Z)

22绘制颜色为蓝色,数据点用五角星标识的下述函数在(0,5)上的虚线图 y?xesinxx=0:0.1:5; y=x.*exp(sin(x)); plot(x,y,'bp:')

球面的表达sphere

调用格式为:

[X,Y,Z]=sphere(N):产生一个( N+1)×( N+1)的矩阵,然后用函数 surf 命令绘 制一个单位的球面,N 为设置分割线的条数; [X,Y,Z] = sphere:缺省 值 N = 20。

画一个球面。 [X,Y,Z]=sphere;

surf(X,Y,Z)

面积图命令 area

表现各个不同部分对整体所作的贡献

area(X,Y):与 plot 的命令的使用方法相似,将连线图到 x 轴的那部分填上了颜色; area(Y):缺省值 X=1:SIZE(Y);

area(X,Y,LEVEL)或 area(Y,LEVEL):填色部分为由连线图到 y=level 的水平线之间的部分。

绘制一面积图

X=-2:2;

Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];

area(X',Y')

legend('因素 1','因素 2','因素 3') grid on

用绘制直方图的几种命令绘制直方图。 X=-2:2;

Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1]; 绘制三维直方图。 subplot(2,2,1)

X=-2:2;

bar(X,Y','r')

Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1];

xlabel('x')

subplot(2,2,1)

ylabel('y')

bar3(X,Y','r')

colormap(cool)

zlabel('y')

subplot(2,2,2)

ylabel('x')

barh(X,Y','grouped')

colormap(cool)

xlabel('y')

subplot(2,2,2)

ylabel('x')

bar3h(X,Y','grouped')

colormap(cool)

ylabel('x')

subplot(2,2,3)

zlabel('y')

bar(X,Y','stacked')

colormap(cool)

xlabel('x')

subplot(2,2,3)

ylabel('\\Sigma y')

bar3(X,Y','stacked')

ylabel('x') subplot(2,2,4)

zlabel('\\Sigma y') barh(X,Y','stacked')

colormap(summer) xlabel('y');ylabel('\\Sigma x')

colormap(summer) subplot(2,2,4)

bar3h(X,Y’,’stacked’)

zlabel(’x’)

ylabel(’\\Sigma y’)

colormap(summer)

极坐标系下绘制图形

ploar是直接在极坐标系下绘图的命令 调用格式为: ploar(THETA, RHO,S)

其中 S 是字符串,用来控制图形的线型。

绘制半径为 2 的渐开线。

rhe=2;

theta=0:pi/20:4*pi;

rho=rhe+theta*rhe;

polar(theta,rho,'r')

用函数 pie 和 pie3 绘制饼图。

x=[200,360,120,400,320];

subplot(2,2,1), pie(x,[0 0 0 1 0])

subplot(2,2,2), pie3(x,[0 0 0 1 0])

subplot(2,2,3), pie(x(2:5))

subplot(2,2,4),

x=[0.1,0.12,0.21,0.34,0.11];

sph2cart 命令

将球坐标转化直角坐标,其调用格式为: [X,Y,Z] = sph2cart(TH,PHI,R)

参数 TH 为球坐标系下的方位角( Azimuth),PHI 是球坐标系下的俯视角( Elevation),R 是球半径。他们的大小必须相等或成比例。X、Y、Z 为直角坐标系下的坐标向量或矩阵。 函数pol2cart和sph2cart的用法。 theta=0:pi/20:6*pi; rho=sin(theta);

[t,r]=meshgrid(theta,rho); z=r.*t;

[X,Y,Z]=pol2cart(t,r,z); mesh(X,Y,Z)

phi=theta.^2-theta;

[t1,p1]=meshgrid(theta,phi); r1=p1.*t1;

figure(2) %绘制球坐标转化直角坐标时的图形 [X1,Y1,Z1]=sph2cart(t1,p1,r1); mesh(X1,Y1,Z1)

绘制图形,并用函数 xlabel、title 和 legend 命令进行标注。

legend命令实现不同图例的说明。

t=0:0.1:4*pi; y=sin(t); y1=cos(t); plot(t,y,':',t,y1,'r*')

xlabel('x 轴 (0--4\\pi)','fontsize',12,'fontweight','bold')

ylabel('y 轴','fontsize',12,'fontweight','bold')

title('绘制正弦波和余弦波 Pos=1','fontsize',10,'fontweight','bold','fontangle','italic')

text(pi,0,'\\leftarrowsin(\\pi)=0')

text(pi,-1,'\\leftarrowcos(\\pi)=-1')

text(pi/2,0.9,['\%uparrowsin(\\pi/2)=',num2str(sin(pi/2))])

text(0,-0.6,['绘图日期:',date])

text(0,-0.8,['MATLAB 版本:',version])

legend('正弦波','余弦波')

figure(2)

plot(t,y,':',t,y1,'r*')

title('绘制正弦波和余弦波 Pos=0','fontsize',10,'fontweight','bold','fontangle','italic')

legend('正弦波','余弦波',0)

grid on

figure(3)

text(7*pi/2,0,'\\rightarrowcos(\\pi*7/2)=0') legend('正弦波','余弦波',-1) grid off

创建一个图形对象,并寻求图形对象的句柄值。

mesh(peaks(30)); %创建山峰的网格图

text(30,20,2,'\\leftarrowpeak') %给图形对象加上文本,图形对象中包括坐标轴、线条和文本标注

h=findobj(gcf) %求当前图形窗口的句柄

h= %返回句柄值赋予变量

1.0000

99.0010

101.0006

100.0016

函数 copyobj 的用法。

mesh(peaks(30));

text(30,20,2,'\\leftarrowpeak');

hh=findobj(gcf)

在上述程序之后加入如下内容:

h=findobj('string','\\leftarrowpeak') %将文字对象的句柄值返回给变量 h

figure %重新建立一个图形对象

mesh(peaks(20)); %在 20*20 的区域创建图形内容

使用 copyobj 命令进行对象的复制,在上述程序后加上如下内容:

ha=copyobj(h,gca) %将文本对象( h 句柄所指的对象)复制到新区域图形中

hh = %程序输出结果

1.0000

99.0013

101.0011

100.0038

h =

101.0011

ha =

200.0004

创建一个图形对象,练习和体会 set 和 get 函数的用法。

x=0:0.1:2*pi;

y1=sin(x); %创建一个正弦函数

H1_sin=plot(x,y1,'*') %画图并返回图像的句柄值

set(H1_sin,'color',[1,0.5,0],'Linewidth',1) %调用函数 set 设置正弦曲线的颜色和线宽 y2=cos(x); hold on

H1_cos=plot(x,y2)

set(H1_cos,'color',[0.25 0 1])

title('正弦和余弦函数曲线','fontsize',16,'color','blue')

H_sin_color=get(H1_sin,'color') %调用 get 函数返回具有句柄 H1_sin 的对象的颜色 程序执行结果如下 H1_sin =

3.0010 H1_cos = 101.0009 H_sin_color =

1.0000 0.5000 0

单自由度系统有阻尼自由振动

参数 ωn =10, x0 =1, v0 =0,计算的终止时间 t=2。试求ξ 从 0.1 到 1运动方程的解,并画出波形。 % 首先清空 MATLAB 的工作空间 clear; % 给定初值 wn=10; tf=2; x0=1; v0=0; % 计算不同的ξ 值所对应的振型 for j=1:10;

eta(j)=0.1*j;

wd(j)=wn*sqrt(1-eta(j)^2); % 求振幅 A

a=sqrt((wn*x0*eta(j)+v0)^2+(x0*wd(j))^2)/wd(j);

%求相位角

phi=atan2(wd(j)*x0,v0+eta(j)*wn*x0);

%设定自变量数组 t

t=0:tf/1000:tf;

%求过渡过程

x(j,:)=a*exp(-eta(j)*wn*t).*sin(wd(j)*t+phi); end

%在同一个图形窗口中绘制不同的ξ 值所对应的振型

plot(t,x(1,:),t,x(2,:),t,x(3,:),t,x(4,:),...

t,x(5,:),t,x(6,:),t,x(7,:),t,x(8,:),...

t,x(9,:),t,x(10,:))

grid on

%新建一个图形窗口,绘制三维网格图

figure

mesh(x)

b.由 sym 命令创建

>> f=sym('a*x^2+b*x+c') f =

a*x^2+b*x+c

>> f1=sym('a*x^2+b*x+c=0') f1 =

a*x^2+b*x+c=0

>> A=sym('[4+x, x^2, x;x^3, 5*x-3, x*a]') A =

[ 4+x, x^2, x] [ x^3, 5*x-3, x*a]

c.由 syms 命令创建

>> syms x a b c >> f=a*x^2+b*x+c f =

a*x^2+b*x+c

>> syms x a

>> B=[4+x x^2 x;x^3 5*x-3 x*a] B =

[ 4+x, x^2, x] [ x^3, 5*x-3, x*a] 不能创建符号方程

6、符号微积分

Matlab自变量确定原则:除i、j外,字母位置最接近x的小写字母为自变量;如果表达式中没有变量,x会被视为默认的变量。由函数findsym可以找到默认变量 a. 符号极限 limit(F,x,a)

limit(F,a),变量为由findsym定义的默认变量 limit(F,x,a,’right’) /limit(F,x,a,’left’) Limit(F), a=0

>> a=sym('[1/x, 1/(x+1); 1/(x+2), 1/(x+3)]') >> syms x a t h

a = >> limit(sin(x)/x)

[ 1/x, 1/(x+1)] ans =

[ 1/(x+2), 1/(x+3)] 1

>> limit((1+2*t/x)^(3*x),x,inf)

>> b=sym('[x, 1; x+2, 0]') ans =

b = exp(6*t)

[ x, 1] [ x+2, 0]

>> b-a ans =

[ x-1/x, 1-1/(x+1)] [ x+2-1/(x+2), -1/(x+3)]

和函数 fft2 和 ifft2 类似,函数 fftn 和 ifftn 对数据做多维快速傅立叶变换。 函数 fftshift 和 ifftshift 函数 fftshift 用于把傅立叶变换结果( 频域数据)中的直流分量( 频率为 0 处的值)移到中间位置。

其调用格式为: Y=fftshift(X)

e. Laplace变换

>> X=rand(3,3)

L=laplace(F) x s

X =

L=laplace(F,z) x z

0.9501 0.4860 0.4565

L=laplace(F,w,z) w z

0.2311 0.8913 0.0185 0.6068 0.7621 0.8214

>> Y=fft(X)

>> syms x s w z

Y =

1.7881 2.1394 >> laplace(sin(x))

1.2964

ans =

1/(s^2+1)

>> laplace(sin(x),w)

ans =

1/(w^2+1)

?x1?0.7sinx1?0.2cosx2?0 求方程组 ?? x 2 ? 0 . 7 cos x 1 ? 0 . 2 sin x 2 ? 0 的根。

首先编制函数文件fc.m

function y=fc(x)

y(1)=x(1)-0.7*sin(x(1))-0.2*sin(x(2));

y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2));

y=[y(1),y(2)];

然后用fsolve求解

>>[x,fval,exitflag,output,jacob]=fsolve(‘fc’, [1.,1.],[])

%[1.,1.]为初值

x =

0.3367 0.5553

fval =

1.0e-008 *

0.2029 0.5242

exitflag = 1

解:

[x,y,z]=solve('x^2+sqrt(2)*x+2=0','x+3*z=4','y*z=-1','x','y','z')

x =

[ (-1/2+1/2*i*3^(1/2))*2^(1/2)]

[ (-1/2-1/2*i*3^(1/2))*2^(1/2)]

y=

[-51/73+3/73*i*3^(1/2)-27/146*(-1/2+1/2*i*3^(1/2))*2^(1/2)-3/146*2^(

1/2)]

[ -51/73-3/73*i*3^(1/2)-27/146*(-1/2-1/2*i*3^(1/2))*2^(1/2)-3/146*2^(

1/2)]

z =

[ -1/3*(-1/2+1/2*i*3^(1/2))*2^(1/2)+4/3]

[ -1/3*(-1/2-1/2*i*3^(1/2))*2^(1/2)+4/3] 求 f ,d g , f(0)=1, g(0)=2 的解。 d?f?g??f?g

dtdt

S = dsolve(’Df = f + g’,’Dg = -f + g’,’f(0) = 1’,’g(0) = 2’) S = f: [1x1 sym] g: [1x1 sym] S.f ans = exp(t)*(cos(t)+2*sin(t)) S.g

ans =

exp(t)*(-sin(t)+2*cos(t)) 函数 dsolve 命令求解微分方程时,如果得不到其解,则给出警告信息。

用命令plot(X,Y) 绘制图形。

x=1:length(peaks);

plot(x,peaks)

注意:

>> peaks

z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...

- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...

- 1/3*exp(-(x+1).^2 - y.^2)

?x2?2x?2?0求非线性方程组? 的解 。

?x?3z?4 ?yz??1?

c.对数坐标曲线命令

绘制二维对数坐标曲线的命令semilogx、semilogy 和 loglog,其用法和函数 plot 相 同。

函数 semilogx 横坐标为对数坐标; 函数 semilogy 纵坐标为对数坐标; 函数loglog 横、纵坐标均为对数坐标。 绘制正弦函数的对数坐标曲线。 t=0.1:0.1:3*pi; y=sin(t); figure(1)

semilogx(t,y)

grid on %为图形窗口添加网格 figure(2) semilogy(t,y) figure(3)

loglog(t,y) 用 plotyy 函数绘制双 y 轴图形。 t1=0:0.1:3*pi; t2=0:0.1:6; y1=sin(t1); y2=sqrt(t2);

plotyy(t1,y1,t2,y2,'semilogx') grid on

用不同的线型和标注来绘制两条曲线。 t1=0:0.1:2*pi; t2=0:0.1:6; y1=sin(t1); y2=sqrt(t2);

plot(t1,y1,':hb',t2,y2,'--g')

用 subplot 函数把两种不同的图形综合在一个图形窗口中。

subplot(2,2,1)

t=0.1:0.1:2*pi;

y=sin(t);

semilogx(t,y)

grid on

subplot(2,2,2)

t=0:0.1:4*pi;

y=sin(t);

plot(t,y)

subplot(2,2,3)

x=1:0.01:5;

y=exp(x);

plotyy(x,y,x,y,’semilogx’,’plot’)

subplot(2,2,4)

x=1:0.1:10;

y=sqrt(x); plot(x,y,’:rd’)

用 mesh 命令绘制上例中的网格曲面。 [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); mesh(Z)

c. 三维表面命令 surf

函数 surf 可实现对网格曲面片进行着色,将网格曲面转化为实曲面。surf 命令的调用格式与 mesh 相同。

利用三维网格表面命令 surf 绘制图形。

z=peaks; %绘制山峰的图像,将函数值赋予变量z surf(z) %对山峰的图像进行着色处理

本文来源:https://www.bwwdw.com/article/obio.html

Top