1、matlab总结1.1 MATLAB已经不仅仅是一个“矩阵实验室”了,它集科学计算(computation) 、可视化(visualization)、编程(programming)于一身,并提供了丰富的Windows图形界面设计方法1.2 MATLAB语言的特点: 语言简洁紧凑,语法限制不严,程序设计自由度大,可移植性好 运算符、库函数丰富 图形功能强大 界面友好、编程效率高 扩展性强Linspace(a,b,N) a为初始值,b为截止值,分为N个值。N缺省为1001.3特殊变量Pi,I,j,eps,realmin,realmax,Inf,Nan2.1常用的操作命令命 令该命令的功能命 令该命
2、令的功能cd显示或改变工作目录hold图形保持命令clc清除工作窗clear清除内存变量disp显示变量或文字内容save保存内存变量到指定文件2.2 常用的标点符号标 点 符 号定 义标 点 符 号定 义;区分行,取消运行显示等.小数点以及域访问等,区分列,函数参数分隔符等连接语句:在数组中应用较多字符串的标识符号()指定运算优先级等=赋值符号矩阵定义的标志等!调用操作系统运算用于构成单元数组等%注释语句的标识2.3 常量pi eps ans常 量常量的功能常 量常量的功能ans用作结果的默认变量名nargin函数的输入参数个数beep使计算机发出“嘟嘟”声nargout函数的输出参数个数p
3、i圆周率varagin可变的函数输入参数个数eps浮点数相对误差varagout可变的函数输出参数个数inf无穷大realmin最小的正浮点数NaN或nan不定数realmax最大的正浮点数i或j复数单位bitmax最大的正整数2.4 常用函数函数名功能函数名常能sin正玄log10以10为底对数asin反正玄rem无符号求余cos余弦sqrt平方根acos反余弦abs模tan正切atan反正切exp指数cot余切log对数acot反余切函数使用说明:(1) 三角函数以弧度为单位计算。(2) abs函数可以求实数的绝对值、复数的模、字符串的ASCII码值。(3) 用于取整的函数有fix、flo
4、or、ceil、round,要注意它们的区别。Fix向0舍入;floor向负舍入;ceil向正舍入;round四舍五入(4) rem与mod函数的区别: rem无符号取余(结果为正),mod有符取余(结果可能为负)3.1 向量的生成方法(1)在命令窗口中直接输入向量,用空格或逗号生成行向量;用分号生成列向量。(2)等差元素向量的生成,可以使用冒号(:) 和linspace函数来生成等差元素向量vec1=start:d:end linspace(start,end,N)其中linspace(a,b,n)与a:(b-a)/(n-1):b等价3.2 向量与数的四则运算3.2.1 向量与数的四则运算向
5、量中的每个元素与数的四则运算3.2.2 向量与向量之间的加减运算向量中的每个元素与另一个向量中相对应的元素的加法(减法)运算3.2.3点积、叉积和混合积点积,维数必须相同. a=dot(x1,x2)等价于sum(x1.*x2)叉积,向量维数只能为3,c=cross(a,b),其中a,b的维数只能为3向量的混合积的几何意义是它的绝对值表示以向量为棱的平行六面体的体积 3.3 矩阵及其运算3.3.1 矩阵的生成在命令窗口中直接输入矩阵 :a=1,2,3;4,5,6;7,8,9在M文件中建立矩阵 : 就是在M文件中写入矩阵之后,再运行m文件通过语句和函数产生矩阵 冒号语句和linspace函数产生矩
6、阵从外部的数据文件中导入矩阵 文本文件可以用load加载;3.3.2 矩阵的基本数值运算1. 基本算术运算 MATLAB的基本算术运算有:(加)、(减)、*(乘)、/(右除)、(左除)、(乘方)。 注意:运算是在矩阵意义下进行的,单个数据的算术运算只是一种特例。2. 点运算 点运算符有.*、./、.和.。两矩阵进行点运算是指它们的对应元素进行相关运算,要求两矩阵的维数相同。3MATLAB常用数学函数A=Rand(m,n) 产生m行n列的随机矩阵,其元素取值为01A=Ones(m,n) 产生m行n列的矩阵,其元素全为1。Zero函数同理 4. 矩阵的四则运算(1)矩阵加、减(,)运算 相加、减的
7、两矩阵必须有相同的行和列,两矩阵对应元素相加减。 允许参与运算的两矩阵之一是标量。标量与矩阵的所有元素分别进行加减操作。(2)矩阵乘()运算 A矩阵的列数必须等于B矩阵的行数标量可与任何矩阵相乘。(3)矩阵除( , / )运算 矩阵除的运算在线性代数中没有,有矩阵逆的运算,在matlab中有两种矩阵除运算: (左除): AB表示A左除B ; /(右除): A/B表示B右除A设A是可逆矩阵的运算, AX=B的解是A左除B,即X= AB; XA=B的解是A右除B,即X=B /A(4)矩阵乘方( )运算 A p A 自乘p 次幂 设A为方阵, p为正整数,则A p 表示 A 自乘p 次; 若A为方阵
8、且非奇异, p为正整数, A (-p)表示 A的逆自乘p 次。 若A , p 都是矩阵, A p 则无意义。(5)矩阵开方、指数、对数运算sqrtm()-矩阵的开方函数 expm()-矩阵的指数函数 logm()-矩阵的对数函数 inv()-矩阵的逆运算函数 特征参数的运算:det 求矩阵所对应的行列式的值 rank 求矩阵的秩 trace 求矩阵的迹5 数组及其运算(1) 数组寻址和排序数组寻址(取值)是通过数组名+(序号1:序号2:序号n)排序是用函数sort实现,sort(X,1)表示数组X每列内元素排序sort(X,2)表示数组X每行内元素排序(2)数组乘除(,./,.)ab a,b两
9、数组必须有相同的行和列两数组相应元素相乘(3)数组的关系运算小于()、小于等于()、大于等于( =)、等于(= =)和不等于( =)如果结果为1,则表明关系式为真(4)数组的逻辑运算有3种逻辑运算:与(&)、或(|)和非()对于数组(矩阵),逻辑运算是针对于数组(矩阵)中的每一个元素。同样,当逻辑为真时,返回值为14.1 M文件的基本属性M文件有两种,一种为脚本式(Script),一种为函数式(Function) 。prod(1:n)是求阶乘的函数 函数M文件必须满足一些标准, 函数式M文件名和出现在文件的第一行的函数名必须相同.函数 函数式M文件一般都要自带参数,并且有返回结果 。 函数式M
10、文件的第一行都是以function开始,说明此文件是一个函数。函数式M文件中的变量都不是全局变量,仅在函数运行期间有效,函数运行完毕之后,它所定义的变量将从工作区间中清除。脚本式没有函数名,函数式有函数名,一般要自带参数,返回结果 函数文件由function语句引导,其基本结构为: function 输出形参表 = 函数名(输入形参表) 注释说明部分 函数体语句4.2 数据的输入输出input函数 调用格式为: A=input (提示信息,选项); 其中提示信息为一个字符串,用于提示用户输入什么样的数据。 A=input(A= ) 如果在input函数调用时采用s选项,则允许用户输入一个字符串
11、。例如,想输入一个人的姓名,可采用命令: xm = input (Whats your name?, s)disp函数调用格式为: disp(输出项) 其中输出项既可以为字符串,也可以为矩阵。 注意:用disp函数显示矩阵时将不显示矩阵的名字,而且其格式更紧密,且不留任何没有意义的空行。fprintf函数,其调用格式为:fprintf(xxxxxxx %d%f%s,a,b,c)4.2 程序控制 最简单的程序控制就是顺序结构,用户依次输入命令语句即可。 MATLAB 7语言还提供了4种高级的控制结构。它们是:if-else-end结构、switch-case-otherwise-end结构、fo
12、r循环和while循环。 顺序结构选择结构 1.单分支if语句 语句格式为: if 条件 语句组 end2.双分支if语句 语句格式为: if 条件 语句组1 else 语句组2 End3.多分支if语句语句格式为:if 条件1 语句组1elseif 条件2 语句组2 elseif 条件m 语句组melse 语句组m+1end 分支语句 其语句格式为: switch 表达式 case 表达式1 语句组1 case 表达式m 语句组m otherwise 语句组m+1 endfor循环语句语句格式为: for 循环变量=初值 : 增量 : 终值 循环体语句 endfor更一般的表达式 for 循
13、环变量=矩阵表达式 循环体语句 end 执行过程是依次将矩阵的各列元素赋给循环变量,然后执行循环体语句,直至各列元素处理完毕。实际上,“初值 : 增量 : 终值” 是一个仅为一行的矩阵(行向量),因而列向量是单个数据。while语句 while语句的一般格式为: while (条件) 循环体语句 end 其执行过程为:若条件成立,则执行循环体语句,执行后再判断条件是否成立,如果不成立则跳出循环break语句,当在循环体内执行到该语句时,程序跳出循环。程多重循环中,序将只能跳出包含它的最内层的那个循环。 Continue 语句与break语句不同,使用continue后,系统不执行相关执行语句,
14、但不会跳出当前循环(跳出本次循环)。 pause(延迟秒数) 如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。 pause命令在程序调试以及需要看中间结果时特别有用。 若要强行中止程序的运行可使用Ctrl+C命令。4.3函数所传递参数的可调性 在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。4.4 结构数据 通过使用结构(structure)数据类型把一组不同类型的数据同时又是在逻辑上相关的数据组成一个有机的整体,以便于管理和引用。(1)用赋值语句定义 student.name = Lesl
15、ie; student.num = 123456; student.test=79 75 73;180 178 177.5;22 210 205; studentstudent = name: Leslie num: 123456 test: 3x3 double(2)用函数struct定义,调用格式:结构数组名 = struct (属性1,属性值1,属性2,属性值2, ) s = struct(type,big,little,color,red,x,3 4)删除属性的命令: student2 = rmfield(student,test)5 数据显示及存取5.1 本机数据文件的输入与输出1)
16、文件的存储可以用save命令 save filename(保存的文件名) var1 var2 var3(var123为变量名,缺省状态下是保存全部工作区变量)。如果是save (filename,var1,var2,var3)必须要加上引号Load命名和save命令格式一样,但是如果不想覆盖工作区中已有变量,可以将变量载入到结构变量中vnew= load(filename,var1,var2)取值命令vnew.var1;vnew.var25.2 文件操作1) 文件的打开与关闭 1. 打开文件 fopen函数的调用格式为: fid= fopen(文件名,使用文件方式) 2. 关闭文件 调用格式为
17、: sta=fclose(fid)5.3 二维图形5.3.1. plot函数的基本用法plot函数的基本调用格式为: plot(x,y) 其中x和y为长度相同的向量,分别用于存储x坐标和y坐标数据。说明:(1)当x,y是同维矩阵时,则以x,y对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。(2)当x是向量,y是有一维与x同维的矩阵时,则绘制出多根不同色彩的曲线。曲线条数等于y矩阵的另一维数,x被作为这些曲线共同的横坐标。(3)plot函数最简单的调用格式是只包含一个输入参数:plot(x)。5.3.2含多个输入参数的plot函数含多个输入参数的plot函数调用格式为: plot(x
18、1, y1, x2, y2, , xn, yn)5.3.3双纵坐标函数plotyy plotyy函数是能把函数值具有不同量纲、不同数量级的两个函数绘制在同一坐标中。调用格式为: plotyy(x1,y1,x2,y2) 其中x1y1对应一条曲线,x2y2对应另一条曲线。横坐标的标度相同,纵坐标有两个,左纵坐标用于x1y1数据对,右纵坐标用于x2y2数据对。5.3.4 对数坐标图形 MATLAB提供了绘制对数和半对数坐标曲线的函数,调用格式为: semilogx (x1, y1, 选项1, x2, y2, 选项2, ): x轴为log10刻度,y轴为线性刻度 semilogy (x1, y1, 选
19、项1, x2, y2, 选项2, ) loglog (x1, y1, 选项1, x2, y2, 选项2, ):绘出log10-log10为坐标刻度的对数图5.3.5 绘制图形的辅助操作. 图形标注 有关图形标注函数的调用格式为: title (图形名称) xlabel (x轴说明) ylabel (y轴说明) text (x,y,图形说明)legend (图例1,图例2,)axis(-pi pi -1 1) 限制坐标轴为: X轴是-pi,pi,Y轴是-1,1希腊字母、上标、下标、数学符号、字型:5.3.6 三维图形绘制三维曲线的最基本函数plot3函数与plot函数用法十分相似三维曲面X,Y
20、= meshgrid(-8:0.5:8);R = sqrt(X.2 + Y.2) + eps;Z = sin(R)./R;mesh(X,Y,Z) 2. 绘制三维曲面的函数(网线图和网面图) surf函数和mesh函数的调用格式为: mesh(x,y,z,c) surf(x,y,z,c)6.1 数值计算matlab语言把多项式表达成一个行向量,该向量中的元素是按多项式降幂排列的。poly 产生特征多项式系数向量特征多项式一定是n+1维的6.1.1 直接输入系数向量创建多项式 P=3 5 0 1 0 12P = 3 5 0 1 0 12 y=poly2sym(P)y =3*x5+5*x4+x2+1
21、2 disp(y)3*x5+5*x4+x2+126.1.2 特征多项式输入法 P=3 5 0 1 0 12P = 3 5 0 1 0 12 y=poly2sym(P)y =3*x5+5*x4+x2+12 disp(y)3*x5+5*x4+x2+12p1=poly2str(p,x) 函数文件,显示数学多项式的形式,未知数为X6.1.3由多项式的根逆推多项式 roots=-4 -2+2i -2-2i 5roots = -4.0000 -2.0000 + 2.0000i -2.0000 - 2.0000i 5.0000 p=poly(roots)p = 1 3 -16 -88 -160 disp(p
22、oly2sym(p)x4+3*x3-16*x2-88*x-1606.2多项式的运算6.2.1多项式的求值MATLAB 7提供了两个函数来对多项式进行求值,即polyval和polyvalm。前者以数组为计算单位,后者以矩阵为计算单位6.2.2 求多项式的根多项式由一个行向量表示,设为p,它的系数按降序排列,使用roots函数可以求出该多项式的根。其使用格式为roots(p)6.2.3多项式的四则运算 当两个多项式的向量阶数不同时,需要在低阶多项式的前边补0(高阶补零),使得它与相加的高阶多项式有相同的阶数。 a=8 2 2 8,b=6 1 6 1a = 8 2 2 8b = 6 1 6 1 c
23、=a+bc = 14 3 8 9 Y3=poly2sym(c)Y3 =14*x3+3*x2+8*x+9 d=2 4 5a = 2 4 5c+derror c+0 dans= 14 5 12 14 poly2sym(ans)ans =14*x3 + 5*x2 + 12*x + 14乘法使用conv函数对多项式进行乘法运算。 格式为c=conv(a,b),其中a和b为两个多项式的系数向量,c为相乘所生成的多项式的系数向量。除法使用decon函数来完成该项功能。函数Q,r=deconv(P1,P2)用于对多项式P1和P2作除法运算。其中Q返回多项式P1除以P2的商式,r返回P1除以P2的余式。这里,
24、Q和r仍是多项式系数向量。deconv是conv的逆函数,即有P1=conv(P2,Q)+r。6.3拟合和插值6.3.1最小二乘法曲线拟合最小二乘法进行曲线拟合的函数。调用格式为:P,S=polyfit(X,Y,m)函数根据采样点X和采样点函数值Y,产生一个m次多项式P及其在采样点的误差向量S。其中X、Y是两个等长的向量,P是一个长度为m+1的向量。例 用一个三次多项式在区间0,2内逼近函数sin(x)。命令如下:X=linspace(0,2*pi,50);Y=sin(X);P,S=polyfit(X,Y,3) %得到3次多项式的系数和误差6.3.2 一维数值插值interp1函数调用格式为:
25、Y1=interp1(X,Y,X1,method)函数根据X、Y的值,计算函数在X1处的值。X、Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量或标量,描述欲插值的点,Y1是一个与X1等长的插值结果。method是插值方法,允许的取值有linear(线性插值)、nearest(最近插值)、spline(三次样条插值)、cubic(三次多项式插值),缺省值是linear。7.1 低通滤波器的实现fdata=fft(data);fT=length(fdata);for j=100:fT %低通滤波器 fdata(j)=0;endplot(abs(fdata);data2=ifft(f
26、data);%逆变换7.2生成理论地震模型function waveletf=30;tdeta=0.004;N=30;nt=0:tdeta:N*tdeta;bt=(1-2*f*f*pi*pi.*nt.*nt).*exp(-pi*pi*f*f.*nt.*nt);kesai=zeros(1,200);kesai(12)=-0.2; kesai(33)=0.4;kesai(37)=-0.15; kesai(52)=-0.5;kesai(72)=0.35; kesai(87)=-0.1;st=conv(bt,kesai);nRandRange=0.2;ntrand=-nRandRange+rand(1,length(st)*nRandRange*2;%随机数组str=sprintf(随机信号 n(t) 范围 %.1g到%.1g,-nRandRange,nRandRange);%xt=st+ntrand;xt=st;nfft=2ceil(log(length(xt)/log(2);%产生大于xt的最接近2的n次方的整数xw=fft(xt,nfft);plot(nt,bt);title(地震子波 b(t);axis(0 0.12 -1 1);7.3相关计算rxy=xcorr(xt,yt);ryx=xcorr(yt,xt);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1