您好,欢迎访问三七文档
Matlab数据操作变量和语句:变量:符合C语言中的变量命名规则;变量不声明,不定义。可以直接拿来直接用。语句:回车表示一个语句的结束,结果输出;如果加上了分号,则该语句只执行不输出注释以%开始一行写不开,用三个点…表示续行赋值:变量=表达式(即把表达式的值赋值给变量)表达式---将表达式的值赋值给默认变量ans变量管理:工作空间中驻留的变量查看两种方法------工作空间窗口显示命令方式(whowhos)清除变量命令:clear(清除该工作空间中所有变量)cleara(清除变量a)保存变量命令:savesave[文件名][变量名][-append][-ascii]数据输出格式控制:format函数format格式符(格式符如longshort等)默认输出格式为short格式。字符串建立:单撇号括起来的字符序列str=’hello’或者str=’v’(两者统一的)用double(‘a’)或者abs(‘a’)获取字符a的ASII码(单个字符的)由ASCII码到字母用char()函数char(97)=c字符串与数值互换:Str2num获取字符串的数值如a=’12344’(a为字符串)str2num(a)=1234Num2str执行字符串内容:eval函数eval(‘t=’)就是执行t=1这个语句结构体:建立:结构体.成员名=表达式a.x1=1;a.x2=’2’;a.x3=[3,2,3]结构a中包含三个成员x1x2x3对结构体操作的函数(用help命令可以查看用法)Isstructfieldnamesisfieldrmfieldgetfield单元数据类型:使用{}建立a={12,’sdfr’[123456]}Matlab的数据形式:在matlab中矩阵是其最基本的数据对象。Zeros(n,m)n行m列的矩阵n=m=k时为zeros(k)Ones(n,m)同上冒号表达式建立向量:e1:e2:e3e1为初始值,e2为步长,e3为终止值符号运算:symsx定义一个符号x,相当于代数x,后面可以直接用比如sin(x)矩阵的运算:单位矩阵(eye)零矩阵(zeros)一矩阵(ones)随机矩阵(rand(产生0到1均匀分布的随机矩阵)和randn(产生均值为0,方差为1的正态分布标准矩阵))产生从a到b之间均匀分布的随机数方法为:S=a+(b-a)*rand(m,n)产生均值为u,方差为s的正态分布的随机矩阵y=u+sqrt(s)*randn用mean(y)得到样本y的均值Std(Y)得到样本y的方差魔方矩阵:magic(n)N*N的方阵横竖斜数字相加的和都相等Hilbert矩阵:hilb(n)N*N的方阵希尔伯特矩阵每个位置(i,j)的元素值为i+j分之1Toeplitz函数对于toeplitz矩阵矩阵和向量运算矩阵A的转秩A‘矩阵A的行列式det(A)矩阵A的逆inv(A)(行列式的值不为0)求矩阵的特征值:eig函数eig(A)向量可以看成1*N或N*1的矩阵内积运算:内积定义式:(a,b)=b的共轭转秩(用共轭转秩如果b为复数)*a求共轭可以用conj()这个函数。也可以用dot函数求a与b的内积dot(b,a)所以上式表示为S=sum(conj(b)*a)=a*b’线性方程组求解:A*X=B求X即为inv(A)*B或用左除运算A\B矩阵的相似化简和分解:Jordan(A)范数:norm(A,p)用diff(A)对矩阵A求导用funm函数计算矩阵函数如矩阵函数expA的值可以写成expA=funm(A,@exp)同理sinA=funm(A,@sin)Matlab的程序控制结构:M文件:分类:命令文件(脚本文件ScriptFile)函数文件(FunctionFile)命令文件没有输入,没有返回。命令文件可以对工作空间的变量操作,结果返回工作空间。而函数文件中的变量为局部变量,函数执行完毕,变量被清除命令文件可以直接运行,函数文件需要调用的形式运行(除了特殊的函数文件之外)数据输入:input函数input('enternumber')enternumber1ans=1数据显示:Disp函数可以用来显示字符串或者变量程序暂停:pause函数分支结构分为:if分支,switch分支和try分支。单分支if语句结构如下:If条件语句组End双分支If条件语句组Else语句组EndIf和elseif配对实现多分支结构Swich分支语句与c中实现一样的最后结束要加endTry分支:这是一种试探性的分支语句,也就是如果这条语句执行有错误,则不执行,或者执行其他的语句,提高了程序的容错性Try语句组1Catch语句组2End循环结构(for和while)For循环变量=表达式1;表达式2;表达式3循环体End在循环体内,不要对循环变量进行赋值操作,循环变量会自动增加A=1:100sumA=0fork=1:100sumA=sumA+A(k)endwhile循环:while条件循环体End循环可以嵌套,但是matlab中,循环的执行效率很低(因为matlab为解释性语言,不是传统的编程语言),因此应该避免使用循环,封妖避免使用两重以上的循环(三重循环执行起来就已经非常慢了)Matlab的编辑器和程序调试函数文件基本结构:Function[输出形参]=函数名([输入形参])其中输出和输入参数都可以木有[注释说明]为了help或lookfor命令调用可以显示出本函数的解释函数体。一般函数文件和函数名保持一致,方便调用(如果不一致,忽略函数名,调用时使用函数文件名)Ctrl+r可以快速注释(即加%)ctrl+t快速去取消注释(去掉%)全局变量global声明,可以提供不同的M文件访问同一个变量Matlab的绘图功能(1)二维高层绘图操作基本函数:plot函数(只要给绘图的数据参数,就会自动会出图像)二维绘图的辅助操作:图形名称坐标轴名称曲线标注图例坐标轴控制图形保持(同一坐标轴绘制多个图形)图形窗口分隔(同一窗口含有多个坐标轴)绘图一定要有坐标轴,就是说曲线是在坐标轴上Plot函数基本用法:plot(x,y)(x轴和y轴)基本要求:x和y为相同长度的向量特殊用法:1.X为向量,y为矩阵,其中一维与x长度相同,则绘制多条不同色彩的曲线(怎么确定颜色?底层绘图中确定)2.X和y为同纬度矩阵,以对应列绘制不同色彩的曲线3.Plot有一个参数,若x为实数向量,则绘制折线图,若x为复数向量,则以实部和虚部为横纵坐标绘图。4.过个输入参数5.曲线选项6.%基本绘图操作7.x=0:0.01:2*pi;8.y=sin(x);9.plot(x,y);%第二个参数为矩阵10.y1=sin(x);11.y2=cos(x);12.z=[y1;y2];13.plot(x,z);14.%两个参数都是矩阵15.x1=0:0.01:2*pi;16.x2=-pi:0.01:pi;17.x=[x1;x2]';18.19.y1=cos(x1);20.y2=sin(x2);21.y=[y1;y2]';22.plot(x,y);linspace(a,b,n)从a到b产生n个点%只有一个参数的绘制x=2*pi;z=linspace(0,x,200);plot(z)%plot含有曲线选项x=linspace(0,2*pi,100);y=sin(x);plot(x,y,'g')常见颜色有:rkbgymplot(x,y,’*’)常见的线有:*.p(五角星)--(虚线)-.(点画线)结合以上得到:plot(x,y,'r*--');图形的标注:xlabel('x');ylabel('y');title('SIN');text在图像点上进行标注text(x,y,’内容‘)legend为图释即右上角的图形的解释什么线代表什么含义坐标轴控制:Xlim(xmin,xmax)控制x坐标显示xmin到xmax的内容Ylim同上不过是在y轴上Axisequal:正方形坐标x和y轴相同可以help相关axis内容图像保持:holdon命令同一坐标轴绘制多个图形x=0:0.01:2*pi;y1=sin(x);y2=cos(x);holdon;plot(x,y1,'r');plot(x,y2);两个曲线绘制到一个坐标上若无holdon则只绘制第一个plot窗口分割:subplot(abc)分成a*b的格子在第c个格子上绘制该图Subplot和plot前后句,subplot在plot之前写基本底层绘图函数:Line对象和line函数:%line对象h=line([-pi:0.01:pi],sin([-pi:0.01:pi]));hp=plot([-pi:0.01:pi],sin([-pi:0.01:pi]))h=line('xData',[-pi:0.01:pi],'YData',sin([-pi:0.01:pi]),'LineWidth',1,'Marker','*','color','r');set函数可以对变量进行修改(重新设置)matlab符号运算符号变量:a=sym(‘a’);或者直接symsb也产生符号变量符号常量:C=sym(‘3’)则c的值就是3符号表达式:f=’3*x+6’;或者symsx,f=3*x+6;或者f=sym(‘3*x+6’)eval将符号常量转化为数值值syms将数值转换为符号符号表达式的因式分解和展开Factor因式分解Expand多项式展开Collect合并同类项符号矩阵:构建方式和数值矩阵一致转置和行列式:transposedeterm其他使用在数值矩阵中的函数也可以直接用于符号矩阵符号函数:符号函数值的求解:subssymsx;f1=x^3-8;subs(f1,4);符号函数的极限求解:limit符号函数的微分(倒数)求解:diff(F,N)n为导数阶数符号函数的不定积分求解:int(F,a,b)a到b的积分符号级数求和:symsum(F,x,1,inf)泰勒级数taylor(F,x,N,m)函数F关于x的m点处展开到N项符合方程求解:符号代数方程和方程组:solve(表达式F)符号常微分方程:dsolve
本文标题:Matlab编程
链接地址:https://www.777doc.com/doc-2887790 .html