第08课 Matlab机械振动建模分析方法ppt课件.ppt
第二课 导论:Matlab基础,主要内容,Matlab基本操作特征值问题积分变换线性常微分方程,主要内容,Matlab基本操作特征值问题积分变换线性常微分方程,Matlab基本操作,数组与矩阵操作求解线性方程组多项式运算绘图操作编程初步,MATLAB的概况,MATLAB (MatrixLaboratory)是由美国MathWorks 公司开发的; MATLAB具有数值计算、符号计算和图形可视化三大功能;MATLAB的基本数据单位是矩阵;具有丰富的工具箱源程序的开放性 程序解释执行,MATLAB是一种高级程序语言Matrix Laboratory,只需输入几行简单的命令,而不必用编程语言(C+、VB等)去编写一大串程序,就可以快速地得到结果并解决问题,应用MATLAB解线性代数,Ax=BA,B,x是矩阵。当维数都是1时,则成为一般的线性方程。A=3,B=6 x=B/A=2A=5,12,8;6,5,8;9,6,10B=7;11;7 x=AB=-4.7073;-1.2439;5.6829,矩阵的输入:行内用空格或逗号 行间用分号,A=5 12 8; 6 5 8 ; 9,6,10基本矩阵ones(3), ones(2,5)zeros(3), zeros(2,5)eye(3), eye(3,4), eye(4,3)矩阵大小r,c=size(A), size(A)r、c分别为A的行数和列数,命令的编辑修改,方向键及控制键可以编辑修改已输入的命令 r1=(1+sqt(5)/2 sqrt命令超过一行,用连接下一行 s=1-1/2+1/3-1/4+1/5-1/6+1/7 . -1/8+1/9-1/10+1/11-1/12; 各符号间的空格可有可无,加上空格增加可读性。-1/12后的分号使结果不回显,常量和变量,缺省变量名ans pi i,j 复数 (-1)(1/2)Nan Not-A-Number 非数 0/0inf 无穷大 1/0,复数及其运算,表示:c1=1-2i, c2=3+sin(.5)*j运算:c=c22极坐标:b1=abs(c1), b2=angle(c1)直角坐标:b3=real(c1), b4=imag(c1),c2 = 3.0000 + 0.4794ic = 8.7702 + 2.8766ib1 = 2.2361b2 = -1.1071(弧度)b21=b2*180/pi (角度)b3=1b4= -2,矩阵运算 + - *,A=1 2 3; 4 5 6; 7 8 9 B=1 2 3; 4 5 6; 7 8 9C=A+B D=A-Bhelp fix fix(3.6) help rand rand(3,3) rand(3,3)A=fix(15*rand(4,3) B=fix(15*rand(4,4)C=A*B D=B*A,矩阵运算 inv,A=fix(10+17i) *rand(3,3) E=AA=5,12,8;6,5,8;9,6,10 B=7;11;7x=AB=-4.7073;-1.2439;5.6829x=inv(A)*B,简单数组的访问形式,x=0 0.1*pi 0.2*pi 0.3*pi 0.4*pi 0.5*pix = 0 0.3142 0.6283 0.9425 1.2566 1.5708y=sin(x)y = 0 0.3090 0.5878 0.8090 0.9511 1.0000 x(3)ans = 0.6283,x= 0 0.3142 0.6283 0.9425 1.2566 1.5708y= 0 0.3090 0.5878 0.8090 0.9511 1.0000,x(1:5)ans = 0 0.3142 0.6283 0.9425 1.2566x(2:2:7)ans = 0.3142 0.9425 1.5708y(5 2 6 1)ans = 0.9511 0.3090 1.0000 0,如何创建数组,X=a b c d; 由指定元素建立行向量x=初值:终值 从初值到终值,增量为1x=初值:增量:终值x=linspace(初值,终值,n) 指定元素个数,线性等距分布 x=linspace(1,100,10) x=linspace(0,100,10) x=linspace(0,100,9) x=linspace(0,100,11)x=logspace(初值,终值,n) x=logspace(0,2,11)指定元素个数,对数等距分布,数组的格式,a=1,2,3,4,5: 行向量a=1 2 3 4 5: 行向量b=1;2;3;4;5: 列向量c=1 2 3;4 5 6;7 8 9: 矩阵d=c 共轭转置,纯量与数组的运算,d=1 2 3;4 5 6;7 8 9;2*d-1ans = 1 3 5 7 9 11 13 15 17,数组之间的运算,b=1 2 3c=1;2;3b*c 与b.*c的区别,b*c = 14c*b=1 2 3; 2 4 6; 3 6 9b.*c? Error using = .*Matrix dimensions must agree.c.*b? Error using = .*Matrix dimensions must agree.b.*c = 1 4 9c.*b = 1; 4; 9,数组操作,A(r,c):指定某一元素A(r,:):指定某一行元素A(:,c):指定某一列元素A=1 2 3;4 5 6;7 8 9;A(1,2)A(2,:)A(:,3),数组规模,r,c=size(A)r、c分别为A的行数和列数A=1 2 3;4 5 6;7 8 9 r,c=size(A) A(2,:)n=length(b)n为向量b的长度 n=length(A(2,:),多项式求根,多项式表示法用行向量P表示求已知多项式的根r=roots(P)求一组根所对应的多项式P=ploy(r),P=1 -12 0 25 116;表示多项式 x4-12x3+25x+116P=1 -12 0 25 116;r=roots(P)r = 11.7473 2.7028 -1.2251 + 1.4672i -1.2251 - 1.4672ip1=poly(r)p1 = 1.0000 -12.0000 0 25.0000 116.0000,多项式的基本运算,多项式相乘c=conv(a,b)如: a(x)=x3+2x2+3x+4 b(x)= x3+4x2+9x+16求c(x)=a(x)*b(x)= x6+6x5+20 x4+50 x3+75x2+84x+64多项式相加、减,即矩阵相加,但规模需相同如a(x)=x3+2x2+x+1;b(x)= x+4求c(x)=a(x)+b(x),a=1 2 3 4;b=1 4 9 16;c=conv(a,b)a=1 2 1 1;b=0 0 1 4;c=a+b;,多项式的基本运算,多项式项除q,r=deconv(a,b)两多项式项除,q为商、r为余项多项式微分ployder(p)44*0 72*1 69*248*3 20*4 6*5 1*6,q,r=deconv(1 2 1,1 1)q = 1 1 r = 0 0 0polyder(1 6 20 48 69 72 44)ans = 6 30 80 144 138 72,基本二维画图命令Plot的用法,lot(x,y)plot(y)plot(x1,y1,x2,y2)x为横轴,y为纵轴x=linspace(0,2*pi,30);y=sin(x);z=cos(x);plot(y);pause;plot(x,y);pause;plot(x,y,x,z),图形标注,Title(text):图形顶部加标题xlabel (text):横轴标注ylabel (text):纵轴标注text(x,y,text): (x,y)处加标注gtext(text): 鼠标点击处加标注,图形标注举例,x=linspace(0,2*pi,30);y=sin(x);plot(x,y)title(y=sin(x)xlabel(x)ylabel(sin(x)text(pi/2,0.8, max)gtext(min),图例说明,Legend(s1,s2)建立一个图例说明盒在右上角legend offplot(x,y,b,x,z,r)legend(sin(x),cos(x)pauselegend off,其它二维图形命令,bar条形图例:x=-2.9:0.2:2.9;y=exp(-x.*x);bar(x,y),其它二维图形命令,stairs 阶梯图例:x=-2.9:0.2:2.9;y=exp(-x.*x);stairs(x,y),其它二维图形命令,stem火柴杆图例:x=linspace(0,4*pi);y=exp(-0.3*x).*sin(x);stem(x,y);title(stem plot),基本三维曲线命令,lot3(x,y,z)x,y,z为同规模的向量或矩阵plot3(x,y,x,s)字符串s指定线型、颜色、点标记plot3(x1,y1,z1,s1,x2,y2,z2,s2,),美妙的三维图形,基本三维曲线命令举例,绘制三维圆柱螺线t=linspace(0,10*pi);x=sin(t)y=cos(t)z=tplot3(sin(t),cos(t),t),曲面彩色网线图,mesh(x,y,z)x(n维)向量,y(m维)向量,z(mXn维)矩阵绘制网线图例:x=-7.5:0.5:7.5; y=x;x,y=meshgrid(x,y);r=sqrt(x.2+y.2)+eps;z=sin(r)./r;mesh(x,y,z),曲面彩色曲面图,x=-7.5:0.5:7.5; y=x;x,y=meshgrid(x,y);r=sqrt(x.2+y.2)+eps;z=sin(r)./r;mesh(x,y,z)figuresurf(x,y,z),2.3 MATLAB 语言流程控制,循环结构for 结构while 结构,【例2-12】用循环求解,【例2-13】用循环求解 求最小的 m,【例2-14】求,转移结构,【例2-15】用循环求解 求最大的 m,2.3.3 开关结构,2.4.1 MATLAB 语言的函数的基本结构,nargin, nargout, varargin, varargout,一个有趣的问题,房间里面有序号分别为1,2,100的电灯,初始时都关闭;又有100个序号分别为1,2,100的学生,当他们依次从这100盏灯前走过时分别将序号是本人序号的整数倍的所有灯开关切换一次(原来为开的变为关,原来为关的变为开)。请问当所有的人都走过之后,哪些灯是亮的?,主要内容,Matlab基本操作特征值问题积分变换线性常微分方程,特征值问题(1),线性代数上所学的特征值问题广义特征值问题,d = eig(A) returns a vector of the eigenvalues of matrix A.d = eig(A,B) returns a vector containing the generalized eigenvalues, if A and B are square matrices.V,D = eig(A) produces matrices of eigenvalues (D) and eigenvectors (V) of matrix A, so that A*V = V*D.V,D = eig(A,B) produces a diagonal matrix D of eneralized eigenvalues and a full matrix V whosecolumns are the corresponding eigenvectors so that A*V = B*V*D .,A = 1.6294 0.6324 0.9575 0.9572 0.6324 0.1951 0.9649 0.4854 0.9575 0.9649 0.3152 0.8003 0.9572 0.4854 0.8003 0.2838 V D=eig(A)V = -0.0399 -0.2694 0.6711 0.6896 -0.5964 -0.4213 -0.5784 0.3637 0.7572 -0.0454 -0.4537 0.4676 -0.2632 0.8648 -0.0966 0.4166D = -0.7734 0 0 0 0 -0.2929 0 0 0 0 0.2993 0 0 0 0 3.1905,主要内容,Matlab基本操作特征值问题积分变换线性常微分方程,积分变换,Fourier变换离散Fourier变换,Fourier生平,1768年生于法国1807年提出“任何周期信号都可用正弦函数的级数表示”1822年发表“热的分析理论”,首次提出“任何非周期信号都可用正弦函数的积分表示”,Fourier变换(1),Fourier series: Any periodic motion can be represented by a series of sines and cosines that are harmonically related.,Fourier变换(2),正确吗?,Fourier变换(3),Exponential form of Fourier series:,Fourier变换(4),如果函数的周期趋向于无穷大,对于Fourier级数应该做何变化?可以令,5.2.2 Fourier 变换的计算机求解,傅立叶变换,傅立叶变换的意义数学意义从一个函数空间(集合)到另一个函数空间(集合)的映射;f(x)称为变换的原函数(相当于自变量),F()称为象函数。应用意义把任意函数分解为简单周期函数之和,F()的自变量为频率,函数值为对应的振幅。物理意义把一般运动分解为简谐运动的叠加;把一般电磁波(光)分解为单色电磁波(光)的叠加。,离散傅里叶变换,离散傅里叶变换是信号分析中的一种重要工具,它将时域内的问题转化为频域内的问题,在很多情况下大大地简化了问题的求解过程;另外计算时域信号的频谱也主要依靠离散傅里叶变换来完成。,离散序列x(k)的离散傅里叶变换(DFT)定义为:,离散序列x(n)的离散傅里叶逆变换定义为:,快速傅立叶变换,快速傅立叶变换(FFT)是离散傅里叶变换的一种快速算法。,(1)fft函数:一维快速傅立叶变换 调用形式:Y=fft(X,N) 返回N点的离散傅里叶变换,(2)ifft函数:一维快速傅立叶逆变换 调用形式:Y=ifft(X,N),注:(1)当N取2的整数幂时,傅立叶变换的计算速度最快; 通常取大于且最靠近X实际长度的幂次。,N =2p p=nextpow2(X的实际长度),(2)一般情况下,fft的结果为复数,可用abs及angle 分别求其幅度、相位。,例1、已知模拟信号,求N=128点DFT的幅度谱和相位谱。,MATLAB命令窗口输入如下:N=128; n=0:127;t=0:0.01:127; %时域数据点数q=n*2*pi/N; %频域数据点数X=2*sin(6*pi*t)+7*cos(8*pi*t);Y=fft(X,N);subplot(2,1,1);plot(q,abs(Y)subplot(2,1,2);plot(q,angle(Y),主要内容,Matlab基本操作特征值问题积分变换线性常微分方程,线性常微分方程(1),微分方程的解析解方法,线性微分方程的数值解,Matlab函数,T,Y = solver(odefun,tspan,y0)T,Y =solver(odefun,tspan,y0,options)where solver is one of ode45, ode23, ode113, ode15s, ode23s, ode23t,or ode23tbTColumn vector of time points YSolution array. Each row in y corresponds to the solution at a time returned in the corresponding row of t.,算例,function xdot=testf(t,x)xdot(1,1)=x(2);xdot(2,1)=-x(2)/10-10*x(1)+sin(pi*t/2);,TOUT,YOUT = ode45(testf,0 10,0 0);plot(TOUT,YOUT(:,1),MATLAB常用的基本数学函数,abs(x):纯量的绝对值或向量的长度 angle(z):复 数z的相角(Phase angle) sqrt(x):开平方 real(z):复数z的实部 imag(z):复数z的虚 部 conj(z):复数z的共轭复数 round(x):四舍五入至最近整数 fix(x):无论正负,舍去小数至最近整数 floor(x):地板函数,即舍去正小数至最近整数 ceil(x):天花板函数,即加入正小数至最近整数 rat(x):将实数x化为分数表示 rats(x):将实数x化为多项分数展开 sign(x):符号函数 (Signum function)。 当x0时,sign(x)=1。,MATLAB常用的三角函数,sin(x):正弦函数 cos(x):馀弦函数 tan(x):正切函数 asin(x):反正弦函数 acos(x):反馀弦函数 atan(x):反正切函数 atan2(x,y):四象限的反正切函数 sinh(x):超越正弦函数 cosh(x):超越馀弦函数 tanh(x):超越正切函数 asinh(x):反超越正弦函数 acosh(x):反超越馀弦函数 atanh(x):反超越正切函数,向量操作函数,min(x): 向量x的元素的最小值 max(x): 向量x的元素的最大值 mean(x): 向量x的元素的平均值 median(x): 向量x的元素的中位数 std(x): 向量x的元素的标准差 diff(x): 向量x的相邻元素的差 sort(x): 对向量x的元素进行排序(Sorting) length(x): 向量x的元素个数 norm(x): 向量x的欧氏(Euclidean)长度 sum(x): 向量x的元素总和 prod(x): 向量x的元素总乘积 cumsum(x): 向量x的累计元素总和 cumprod(x): 向量x的累计元素总乘积 dot(x, y): 向量x和y的内 积 cross(x, y): 向量x和y的外积,MATLAB的常数,i或j:基本虚数单位eps:系统的浮点(Floating-point)精确度 inf:无限大, 例如1/0 nan或NaN:非数值(Not a number) ,例如0/0 pi:圆周率 p(= 3.1415926.) realmax:系统所能表示的最大数值 realmin:系统所能表示的最小数值 nargin: 函数的输入引数个数 nargout: 函数的输出引数个数,