《MATLAB在电气工程中的应用 第2章 Matlab软件的数值计算方法.ppt》由会员分享,可在线阅读,更多相关《MATLAB在电气工程中的应用 第2章 Matlab软件的数值计算方法.ppt(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1本章的讨论重点:本章的讨论重点:如何利用现有的如何利用现有的Matlab数值计算资源,以数值计算资源,以最简明的方式阐述理论数学、数值数学和最简明的方式阐述理论数学、数值数学和 Matlab 计算命令之间的内在联系、使用方计算命令之间的内在联系、使用方法与重要技巧;法与重要技巧;对于经过大学数学学习的读者来说,通过对于经过大学数学学习的读者来说,通过本章的学习,可以领悟到本章的学习,可以领悟到Matlab 精良完善精良完善的计算命令在数据计算、处理、表达等方的计算命令在数据计算、处理、表达等方面的独特之处,掌握了这些基本知识,对面的独特之处,掌握了这些基本知识,对于解决电气工程实际问题的分析
2、与描述,于解决电气工程实际问题的分析与描述,是必不可少的。是必不可少的。概述概述 22-1-1数值数值 在在Matlab中,数值多采用十进制表示法,中,数值多采用十进制表示法,如数值如数值3,-99,0.01,在,在Matlab的命令窗的命令窗口中或者编辑器窗口中可以直接输入它们,口中或者编辑器窗口中可以直接输入它们,这与其它高级软件没有两样,在这与其它高级软件没有两样,在Matlab的的命令窗口中或者编辑器窗口中需要按照以命令窗口中或者编辑器窗口中需要按照以下形式进行输入或者录入:下形式进行输入或者录入:-1.9e-6、5.41e13。32-1-2语句与变量语句与变量 最常用的格式为:变量最
3、常用的格式为:变量=表达式表达式;或直接简化为:表达式或直接简化为:表达式;通过等于符号通过等于符号“=”将表达式的值赋予变量。将表达式的值赋予变量。当键入回车键时,该语句被执行。语句执当键入回车键时,该语句被执行。语句执行之后,窗口自动显示出语句执行的结果。行之后,窗口自动显示出语句执行的结果。如果希望结果不被显示,则只要在语句之如果希望结果不被显示,则只要在语句之后加上一个分号(后加上一个分号(;)即可。此时尽管结果)即可。此时尽管结果没有显示,但它依然被赋值并在没有显示,但它依然被赋值并在Matlab工工作空间中分配了内存。作空间中分配了内存。4变量命名规则变量命名规则(1)变量名第一个
4、字符必须是英文字母;)变量名第一个字符必须是英文字母;(2)变量名不得包含空格、标点,但可以)变量名不得包含空格、标点,但可以包含下划线;如包含下划线;如A_1,a_54等。等。(3)变量的名字不能超过)变量的名字不能超过19个字符;个字符;(4)变量的名是要区分字母的大小写的。)变量的名是要区分字母的大小写的。例如:例如:A1、a1代表不同变量。代表不同变量。5Matlab默认的预定义变量默认的预定义变量 圆周率预定义变量含义预定义变量含义ans计算结果的缺省变量名NaN或nan非数,如0/0eps浮点计算的相对精度nargin函数输入宗量数目Inf或inf无穷大,如1/0nargout函数
5、输出宗量数目i或j虚单元i=j=sqrt(-1)realmax最大正实数pirealmin最小正实数62-1-3运算符与表达式运算符与表达式 几种基本数学运算符号,如:几种基本数学运算符号,如:加(加(+)、减()、减(-)、乘()、乘(*)、左除)、左除(/)、右除()、右除()和幂次运算()和幂次运算()等数)等数学符号。学符号。在在Matlab中,用中,用“/”代表左除运算,即代表左除运算,即常用除法;用常用除法;用“”表示右除运算表示右除运算 7表达式表达式(1)Matlab表达式的规则与一般手写算式基本表达式的规则与一般手写算式基本相同:相同:(2)表达式由变量名、运算符和函数名组成
6、;)表达式由变量名、运算符和函数名组成;(3)表达式按优先级自左向右运算,括号可改)表达式按优先级自左向右运算,括号可改变优先级顺序;变优先级顺序;(4)优先级顺序由高到低为:指数运算、乘除)优先级顺序由高到低为:指数运算、乘除运算、加减运算;运算、加减运算;(5)表达式中赋值符)表达式中赋值符“=”和运算符两侧允许有和运算符两侧允许有空格。空格。82-2变量的运算变量的运算 a+b%求取求取a和和b之和之和a-b%求取求取a和和b之差之差a/b%求取矩阵求取矩阵a除以矩阵除以矩阵bab%求取矩阵求取矩阵b除以矩阵除以矩阵aa*b%求取矩阵求取矩阵a和矩阵和矩阵b之积之积a.*b%求取矩阵求取
7、矩阵a和矩阵和矩阵b之点乘之点乘a3%求取矩阵求取矩阵a的三次方的三次方a.3%求取矩阵求取矩阵a中各个元素的三次方中各个元素的三次方a./b%求取矩阵求取矩阵a中各个元素除以矩阵中各个元素除以矩阵b各个元素各个元素a.b%求取矩阵求取矩阵b中各个元素除以矩阵中各个元素除以矩阵a各个元素各个元素92-2-2逻辑运算介绍逻辑运算介绍 A&B表示逻辑与运算;表示逻辑与运算;A|B表示逻辑或运算;表示逻辑或运算;A 表示逻辑非运算。表示逻辑非运算。xor(A,B)表示逻辑异或运算。表示逻辑异或运算。102-2-3关系表达式与表达式函数关系表达式与表达式函数Matlab 中有以下关系:大于(中有以下关
8、系:大于()、小于)、小于(=(大于等于)和(大于等于)和 clear;clc;close;x=linspace(0,10,100);%在在0和和10之间,之间,均匀产生均匀产生100个数据个数据 y=sin(x);%计算正弦值计算正弦值 z=(y=0).*y;%将负的正将负的正弦值置为弦值置为0 z=z+0.5*(y z=(x plot(x,z);xlabel(x),ylabel(z=f(x),title(非连续信号非连续信号)1213举例举例2 clear;clc;close;x=linspace(0,10,100);%均匀产生均匀产生100数据数据 y=sin(x);%计算正弦值计算正弦
9、值 z=(y=0).*y;%将负的正弦值将负的正弦值置为置为0 d=(y c=(z+0.5).*(y0);%当当y0时,时,c等于等于z+0.5 plot(x,d,-)hold on;plot(x,c,-.);hold on plot(x,y,:);xlabel(x);ylabel(d,c,y);title(非连续信号非连续信号);legend(d,c,y);1415半波整流器电路的仿真半波整流器电路的仿真 clear;clc,clf%clf可以清除图形窗口中的图形可以清除图形窗口中的图形pi=3.14159265;vp=10;%循环命令循环命令 for i=1:1:101;t(i)=(i-1
10、)*6*pi/100;vi(i)=vp*sin(t(i);if vi(i)=0.7 vo(i)=vi(i)-0.7;else vo(i)=0;end end plot(t,vi,.-,t,vo,+);grid on;axis(0 6*pi-vp vp);xlabel(t);ylabel(vin 与与 vout);title(半波整流器半波整流器);legend(原波形原波形,整流波形整流波形);1617全波整流器电路的仿真全波整流器电路的仿真 clear;clc,clfpi=3.14159265;vp=10;%循环命令循环命令 for i=1:1:301;t(i)=(i-1)*6*pi/300
11、;vi(i)=vp*sin(t(i);if vi(i)0.7 vo(i)=vi(i)-0.7;else vo(i)=0;end if vi(i)=-0.7 vo(i)=abs(vi(i)+0.7);end end plot(t,vi,.-,t,vo,+);grid on;axis(0 6*pi-vp vp);xlabel(t);ylabel(vin 与与 vout);title(全波整流器全波整流器);legend(原波形原波形,全波整流波形全波整流波形);1819削顶整流正弦半波的计算和图形绘削顶整流正弦半波的计算和图形绘制方法制方法t=linspace(0,3*pi,600);y=100*
12、sin(t);%产生正弦波产生正弦波 z1=(t2*pi).*y;%获得整流半波获得整流半波w=(tpi/3&t7*pi/3&t help interp1或者或者 help interp2或或者者 help interp3 30格式之一:格式之一:yi=interp1(xs,ys,xi,method)一维数据插值(表格查找)。该命令对原一维数据插值(表格查找)。该命令对原始数据点(始数据点(xs,ys)之间计算内插值。它找)之间计算内插值。它找出一元函数出一元函数f(x)在中间点的数值即插值数据在中间点的数值即插值数据点(点(xi,yi)。其中函数)。其中函数f(x)由所给数据决由所给数据决定
13、。定。31method说明说明邻近点插值邻近点插值(method=nearest):这种插值方法将:这种插值方法将插值结果的值设置为最近的数据点的值。插值结果的值设置为最近的数据点的值。线性插值线性插值(methodlinear),这种插值方法在,这种插值方法在两个数据点之间连接直线,根据给定的插值点计算出两个数据点之间连接直线,根据给定的插值点计算出它们在直线上的值,作为插值结果,该方法是它们在直线上的值,作为插值结果,该方法是interp1命令的缺省方法。命令的缺省方法。三次样条插值三次样条插值(methodspline):这种插值方法:这种插值方法通过数据点拟合出三次样条曲线,根据给定的
14、插值点通过数据点拟合出三次样条曲线,根据给定的插值点计算出它们在曲线上的值,作为插值结果。输出结果计算出它们在曲线上的值,作为插值结果。输出结果也最平滑;也最平滑;立方插值立方插值(methodcubic):这种插值方法通过分:这种插值方法通过分段立方段立方Hermite插值方法计算插值结果。该方法最占插值方法计算插值结果。该方法最占内存,输出结果与三次样条插值内存,输出结果与三次样条插值spline差不多。差不多。32格式之二:格式之二:yi=interp1(xs,ys,xi)说明:返回插值向量说明:返回插值向量yi,每一元素对应于参,每一元素对应于参量量xi,同时由向量,同时由向量xs与与
15、ys的内插值决定。的内插值决定。参量参量xs指定数据指定数据ys的点。若的点。若ys为一矩阵,为一矩阵,则按则按ys的每列计算。的每列计算。yi是阶数为是阶数为length(xi)*size(ys,2)的输出矩阵。的输出矩阵。格式之三:格式之三:yi=interp1(ys,xi)说明:假定说明:假定xs=1:N,其中,其中N为向量为向量ys的长的长度,或者为矩阵度,或者为矩阵ys的行数。的行数。33多项式插值举例多项式插值举例 ys=0,0.8,0.7,.6.9,1,0,0.1,-0.3,-0.7,-0.9,-0.2,-.1,0,-.4,-.7,0,1;%已有的样本点已有的样本点ysxs=0:
16、length(ys)-1;%已有的样本点已有的样本点xsx=0:0.1:length(ys)-1;%新的插值样本点新的插值样本点xiy1=interp1(xs,ys,x,nearest);%使用使用nearest方法插值方法插值产生新的样本点产生新的样本点yi1y2=interp1(xs,ys,x,linear);%使用使用linear方法插值产方法插值产生新的样本点生新的样本点yi2y3=interp1(xs,ys,x,spline);%使用使用spline方法插值产方法插值产生新的样本点生新的样本点yi3y4=interp1(xs,ys,x,cubic);%使用使用cubic方法插值产生方
17、法插值产生新的样本点新的样本点yi4plot(xs,ys,+k,x,y1,:r,x,y2,-m,x,y3,-c,x,y4,-b);%分别绘制不同方法插值产生新的多项式分别绘制不同方法插值产生新的多项式曲线曲线legend(sampled point,nearest,linear,spline,cubic);title(多项式插值多项式插值)34352-5 数据处理与分析方法数据处理与分析方法 命令格式命令格式:plot(x1,y1,option1,x2,y2,option2,)说明:说明:x1,y1给出的数据分别为给出的数据分别为x,y轴坐标轴坐标值,值,option1为选项参数,以逐点连折线
18、的为选项参数,以逐点连折线的方式绘制第一个二维图形;同时类似地绘方式绘制第一个二维图形;同时类似地绘制第二个二维图形,制第二个二维图形,等。等。36fplot的命令格式的命令格式 命令格式:命令格式:fplot(Fun,XMIN XMAX)说明:它用于绘制类似函数说明:它用于绘制类似函数fun=f(x)形式形式的曲线(即一元函数),只需指明横坐标的曲线(即一元函数),只需指明横坐标x的取值范围的取值范围XMIN XMAX即可。即可。37ezplot的命令格式的命令格式 命令格式命令格式:ezplot(f,min,max)说明:用于绘制函数形式为说明:用于绘制函数形式为f=f(x)在自变在自变量
19、量x为为min x max范围时的曲线。范围时的曲线。命令格式:命令格式:ezplot(f,xmin,xmax,ymin,ymax)说明:在平面矩形区域说明:在平面矩形区域xminxxmax,yminy ymax上画出函数上画出函数f(x,y)=0的图的图形。形。38ezplot3的的命令格式命令格式 命令格式命令格式(1):):ezplot3(x,y,z)说明:在缺省的范围说明:在缺省的范围0t2内画空间参数形内画空间参数形式的曲线式的曲线x=x(t)、y=y(t)与与z=z(t)的图形。的图形。命令格式(命令格式(2):):ezplot3(x,y,z,tmin,tmax)说明:在指定的范围
20、说明:在指定的范围tmin t tmax内画内画空间参数形式为空间参数形式为x=x(t)、y=y(t)与与z=z(t)的的曲线。曲线。39subplot的命令格式的命令格式 命令格式:命令格式:subplot(mnk)或者或者subplot(m,n,k)说明:它表示分割图形显示窗口,说明:它表示分割图形显示窗口,m表示上表示上下分割个数,下分割个数,n表示左右分割个数,表示左右分割个数,k为子为子图编号。图编号。40分割图形命令使用方法举例分割图形命令使用方法举例subplot(2,2,1),fplot(humps,0,1);title(图形图形1)f=inline(abs(exp(-j*x*
21、(0:9)*ones(10,1);subplot(2,2,2),fplot(f,0,2*pi);title(图形图形2)subplot(2,2,3),fplot(tan(x),sin(x),cos(x),2*pi*-1,1,-1,1);title(图形图形3)subplot(2,2,4),fplot(sin(1./x),0.01,0.1,1e-3);title(图形图形4)4142方程方程(组组)求解求解 solve 的命令格式:的命令格式:命令格式命令格式(1):):g=solve(eqn)说明:它表示用来计算单一的方程,说明:它表示用来计算单一的方程,eqn表表示输入的方程,示输入的方程,
22、g为输出方程的解。为输出方程的解。命令格式命令格式(2):):g=solve(eqn,var)说明:它说明:它表示用来计算单一的方程表示用来计算单一的方程,eqn表表示输入的方程示输入的方程,g为输出方程的解为输出方程的解,var用用来指明待求变量。来指明待求变量。43接前接前命令格式命令格式(1):):g=solve(eqn1,eqn2,.,eqnN)说明:它表示用来计算方程组,说明:它表示用来计算方程组,eqn1,eqn2,.,eqnN为输入的方程组,为输入的方程组,g为输出方程组的解。为输出方程组的解。命令格式命令格式(2):):g=solve(eqn1,eqn2,.,eqnN,var1
23、,var2,.,varN)说明:它表示用来计算方程组,说明:它表示用来计算方程组,eqn1,eqn2,.,eqnN为输入的方程组,为输入的方程组,g为输出方程组的解,为输出方程组的解,var1,var2,.,varN用用来指明每个方程的待求变量。来指明每个方程的待求变量。44常用于信号处理方面的命令函数常用于信号处理方面的命令函数 命令函数描述命令函数描述conv卷积conv22维卷积fft快速傅立叶变换fft22维快速傅立叶变换ifft快速傅立叶反变换ifft22维快速傅立叶反变换filter离散时间滤波器filter22维离散时间滤波器abs幅值angle四个象限的相角unwrap在360边界清除相角突变nextpow22的下一个较高幂次fftshift把FFT结果平移到负频率上45谢谢!谢谢!谢谢!谢谢!46