——matlab具有出色的数值计算能力,占据世界上数值计算软件的主导地位MATLAB的数值计算功能创建矩阵矩阵运算线性方程组多项式运算数值统计线性插值函数优化微分方程的数值解MATLAB的数值计算功能变量及其赋值标识符变量名,常量名19个字符函数名,文件名8个字符变量名、常量名英文字母(大小写区分),阿拉伯数字和下划线组成,第一个字符必须是英文字母MATLAB区分英文字母的大小写。半角逗号“,”和半角分号“;”都可以用来分隔MATLAB的指令(函数)或变量。MATLAB允许一行内出现多条指令。标准变量和常量pi3.14159265…i,j虚数单位,i=j=sqrt(-1)eps浮点相对精度2-16realminMATLAB的最小正实数realmax最大正实数inf无穷大(1/0)infinityNan不定量(0/0)Not-a-numberans:上一个缺省变量值在命令窗口的提示符“”下,如果要运行函数,只需输入函数文件名,然后回车,MATLAB就会显示运行结果。变量=表达式;%注释=将表达式的值赋予变量。当键入回车键该语句被执行。语句执行之后,窗口自动显示出执行结果。;结果不被显示,但它依然被赋值并在MATLAB工作空间中分配了内存。,隔开写在一行的多行命令。%后为注释,不执行MATLAB赋值语句的基本形式(1)用键盘在MATLAB指令窗中输入以下内容(12+2*(7-4))/3^2(2)在上述表达式输入完成后,按【Enter】键,该就指令被执行。(3)在指令执行后,MATLAB指令窗中将显示以下结果。ans=2【例】简单的算术运算结果常用数学函数abs(x),sin(),cos(),tan(),asin(),acos(),atan()sqrt(),exp(),imag(),real(),log(),log10(),conj()(共扼复数)输入一个矩阵•采用空格或者逗号(,)把一行之间的元素分开。•采用分号(;)把行与行之间的元素分开。•采用方括号[]把一个矩阵所有的元素括起来。A=[163213;510118;96712;415141]A=16321351011896712415141求和sum,转置transpose,对角线diag•sum(A)%计算A阵各列元素的和ans=34343434•A'%A阵转置ans=16594310615211714138121•(sum(A'))'ans=34343434•diag(A)%获取主对角线diagonal的元素ans=161071•sum(diag(A))%求对角线上元素之和ans=34下标Subscripts•A(i,j)表示A的i行j列,例如A(4,2)就是15.A(1,4)+A(2,4)+A(3,4)+A(4,4)%求4列的和ans=34•单下标A(k),一般表示行向量或列向量,用于二维矩阵,则将矩阵视为一个长列向量,从第1列的A(1,1)开始的各列元素,如A(8)就是A(4,2)的另一种表示方法.基本矩阵zeros():全0阵zerosones():全1阵ones–注意:()中的数字用于定义矩阵维数,()内不是数字的情况参看Help。rand():矩阵元素是0到1之间均匀分布的随机数randn():矩阵元素是正态分布的随机数Z=zeros(2,4)Z=00000000F=5*ones(3,3)F=555555555N=rand(1,10)N=Columns1through70.61540.79190.92180.73820.17630.40570.9355Columns8through100.91690.41030.8936(1)用线性等间距生成向量矩阵[start:step:end]其中start为起始值,step为步长,end为终止值。当步长为1时可省略step参数;另外step也可以取负数。》a=1:2:10》a=[1:2:10]a=13579(2)线性空间上的行矢量a=linspace(n1,n2,n)•在线性空间上,行矢量的值从n1到n2,数据个数为n,缺省n为100。》a=linspace(1,10,10)a=12345678910(3)对数空间上的行矢量a=logspace(n1,n2,n)•在对数空间上,行矢量的值从10n1到10n2,数据个数为n,缺省n为50。这个指令为建立对数频域轴坐标提供了方便。》a=logspace(1,3,3)a=1010010002.2矩阵的初等运算1、矩阵的转置对于实矩阵用(')符号或(.')求转置结果是一样的;对于含复数的矩阵,(')则将复数先进行共轭处理,再转置,而(.')则只是将其排列形式进行转置。》a=[123;456]'a=142536》a=[123;456].'a=142536MATLAB的数值计算功能矩阵运算例:1.矩阵加、减(+,-)运算规则:相加、减的两矩阵必须有相同的行和列数,两矩阵对应元素相加减。允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。a=[234;135]b=[257;532]c=3d=a+be=c+aMATLAB的数值计算功能矩阵运算例:2.矩阵乘()运算规则:A矩阵的列数必须等于B矩阵的行数标量可与任何矩阵相乘。d=[-1;0;2];f=pi*df=-3.141606.2832a=[123;456;780];b=[1;2;3];c=a*bc=143223MATLAB的数值计算功能矩阵运算2.矩阵乘()运算规则(A*B)A矩阵的列数必须等于B矩阵的行数标量可与任何矩阵相乘。MATLAB的数值计算功能矩阵运算例:a=[123;456;780];b=[1;2;3];c=a\bc=-0.33330.66670MATLAB的数值计算功能矩阵运算3.矩阵除运算规则:(A\B(左除)A/B(右除))常用于求解线性方程AX=B标量可与任何矩阵相除。MATLAB的数值计算功能矩阵运算例:4.矩阵乘方——a^n,a^p,p^aa^p——a自乘p次幂方阵1的整数a=[1,2,3;4,5,6;7,8,9];a^2ans=303642668196102126150数组运算指元素对元素的算术运算,与矩阵运算不同5.矩阵的数组运算对应元素相加减(与矩阵加减等效)a.+ba.-b矩阵运算MATLAB的数值计算功能5.1数组加减(.+,.-)5.2数组乘矩阵运算MATLAB的数值计算功能ab——a,b两数组必须有相同的行和列两数组相应元素相乘。a=[123;456;789];b=[246;135;7910];a.*bans=281841530497290例:a=[123;456;789];b=[246;135;7910];a.*bans=281841530497290a=[123;456;789];b=[246;135;7910];a*bans=253746558510985133172矩阵运算与数组运算比较a./b=b.\aa.\b=b./aa./b=b.\a—都是a的元素被b的对应元素除a.\b=b./a—都是b的元素被a的对应元素除例:a=[123];b=[456];c1=a.\bc2=b./ac3=b.\ac4=a./bc1=c2=4.00002.50002.0000c3=c4=0.25000.40000.5000——给出a,b对应元素间的商.5.3数组除MATLAB的数值计算功能例:a=[123];b=[456];z=a.^2z=1.004.009.00z=a.^bz=1.0032.00729.00MATLAB的数值计算功能5.3数组乘方(.^)—元素对元素的幂数据分析的常用函数max——各列最大值mean——各列平均值sum——各列求和std——各列标准差var——各列方差sort——各列递增排序MATLAB的数值计算功能多项式的四则运算函数功能函数功能roots多项式求根polyfit多项式曲线拟合poly由根创建多项式polyder多项式求导polyval多项式求值conv多项式相乘(卷积)residue部分分式展开(求留数)deconv多项式相除(反卷积)多项式的运算•Interpolationandpolynomials–多项式的四则运算–多项式求导、求根和求值–多项式拟合–多项式插值–线性微分方程的解1、多项式建立在MATLAB中,多项式使用降幂系数的行向量表示。如:p=[1-12025116]116x25x12x342、多项式求根•函数roots可求出多项式p=0的根,根用列向量表示。•若已知根,函数poly可以求出相应多项式。r=roots(p)r=11.74732.7028-1.2251+1.4672i-1.2251-1.4672ip=poly(r)p=1-12-025116p=[1-12025116]【例】求方阵A的特征多项式•A=[111213;141516;171819];•PA=poly(A)%A的特征多项式•PPA=poly2str(PA,'s')%以较习惯的方式显示多项式•PA=•1.0000-45.0000-18.0000-0.0000•PPA=•s^3-45s^2-18s-1.8303e-014【例】研究系统稳定性给出单位反馈开环传递函数p=[11224]roots(p)2321)(23ssssGans=-3.00001.0000+2.6458i1.0000-2.6458i不稳定极点3、多项式的运算加减法:p+q、p-q(行向量元素数目必须相等,缺项补零)多项式p和q的乘积:conv(p,q)多项式p除q:[k,r]=deconv(p,q)(k是商多项式,r是余多项式)多项式的微分dp/dx:polyder(p)【例】求多项式的“商”及“余”多项式p1=conv([1,0,2],conv([1,4],[1,1]));%计算分子多项式p2=[1011];%注意缺项补零[q,r]=deconv(p1,p2);cq='商多项式为';cr='余多项式为';disp([cq,poly2str(q,'s')]),disp([cr,poly2str(r,'s')])商多项式为s+5余多项式为5s^2+4s+34、多项式的部分分式展开•[r,p,k]=residue(num,den))s(k)n(ps)n(r)2(ps)2(r)1(ps)1(r)s(den)s(num线性微分方程的解•已知传递函数,将其分解为部分分式3s4s2ssG2)(Num=[1,2];Den=[143];[r,p,k]=residue(Num,Den)r=0.50000.5000p=-3-1k=[]3s501s50sG..)(•多项式拟合polyfit(x,y,n)x,y是已知的N个数据点坐标向量,n是拟合多项式的次数•用于在最小均方误差准则下对数据进行n阶多项式曲线拟合。•其中x,y是已知的N个数据点坐标向量,其长度均为N,现欲用一个n阶多项式来表示x,y之间的函数关系,待定的是该n阶多项式的系数。•多项式阶数n越大,拟合程度越好,设p为用于拟合的多项式系数个数,p=n+1。例:x=0:0.1:1;y=[-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.30,11.2];a1=polyfit(x,y,1);xi=linspace(0,1)yi1=polyval(a1,xi);plot(x,y,’o’,xi,yi1,’b’)matlab绘图——matlab语言丰富的图形表现方法,使得数学计算结果可以方便地、多样性地实现可视化,这是其它语言所不能比拟的。1.plot---最基本的二维图形指令plot命令自动打开一个图形窗口Figure用直线连接相邻两数据点来绘制图形。根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上.plot的功能