Matlab学习体会:操作总结_第1页
Matlab学习体会:操作总结_第2页
Matlab学习体会:操作总结_第3页
Matlab学习体会:操作总结_第4页
Matlab学习体会:操作总结_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab操作总结1.1指令行中的标点符号名称标点作用空格元素之间的分隔符号逗号,用作元素分隔符号;用作要显示计算结果的指令与后面指令之间的分隔;黑点.小数点分号;用作不显示计算结果指令的“结尾”标志;用作数组行间分隔符冒号:1、用作生成一维数值数组;2、用作单下标援引时,表示全部元素构成的长列;注释号%由它起首后的所有物理行被视作非执行的注释课本39页名称指令标点作用单引号对‘’字符串记述符圆括号()在数组援引时用;函数指令输入自变量列表时用方括号[]输入数组时用;函数输出宗量列表时用;用于构成空矩阵(合并矩阵和去除矩阵中某行某列)。@@在匿名函数中表示函数句柄P168页下联号_用作一个变量、函数或文件名中的连字符续行号…由三个以上黑点构成,它把其下的物理行看作执行的逻辑继续,以构成一个较长的完整指令ans计算结果的缺省变量名eps机器零阈值Inf无穷大nan非数i,j虚数单元pi圆周率πrealmax最大正实数;realmin最小正实数nargin自动统计输入变量的个数;nargout自动统计输出变量的个数1.2MATLAB默认的预定义变量课本81、168页1.3MATLAB中常用的控制命令指令说明clc清除当前的命令行窗口clear清除MATLAB工作空间中保存的变量what/which/whos显示工作空间内变量的信息FormatLoad/savemkdir数字格式下载或保存数据建立指定目录cd切换路径或者显示当前的路径pwd显示当前的路径dir、ls显示当前路径下的文件quit/exit显示当前路径下的文件课本39-40页变量命名原则以字母开头后面可以跟字母、数字和下划线

长度不超过63个字符(6.5版本以前为

19个)变量名区分字母的大小写存储当前工作空间中的变量

save

将所有变量存入文件matlab.mat

savemydata

将所有变量存入指定文件mydata.mat存储指定的变量

savemydata.mat

将所有变量存入文件mydata.matsave

文件名

变量名列表例:>>

savemydataAxz

变量名列表中各变量之间用空格分隔。将数据文件中的变量载入当前工作空间

loadmydata

载入数据文件中的所有变量

loadmydataAx

从数据文件中提取指定变量清除当前工作空间中的变量

clear清除当前工作空间中的所有变量

clearAx

清除指定的变量第二章向量和矩阵的运算欢迎同学们提出宝贵意见,你的建议有利于课程建设。为更便于同学们根据课件自学,我对课件内容做了适当的补充和调整,标注了重点内容。2.1向量和矩阵的生成向量的构建利用冒号生成向量(在编程中For循环中常用)a:b:c产生一个由等差序列组成的向量;a是首项,b是公差,c确定最后一项;若b=1,则b可以省略。函数linspace可生成两个数之间的等间隔向量,其调用格式V=linspace(X1,X2,n):X1为向量的第一个元素,X2为向量的最后一个元素,n为向量具有的元素个数,函数将根据n的数值平均计算元素之间的间隔若在表达式中忽略参数n,则系统默认地将向量设置为100个元素。矩阵的生成:(1)输入法,(2)常见矩阵生成函数zeros(m,n)生成一个m

行n

列的零矩阵,m=n

时可简写为zeros(n)ones(m,n)生成一个m行n列的元素全为1的矩阵,m=n

时可写为ones(n)eye(m,n)生成一个主对角线全为1的m

行n

列矩阵,

m=n

时可简写为eye(n),即为n

维单位矩阵diag(X)若X是矩阵,则diag(X)为X的主对角线向量若X是向量,diag(X)产生以X为主对角线的对角矩阵tril(A)提取一个矩阵的下三角部分triu(A)提取一个矩阵的上三角部分rand(m,n)产生0~1间均匀分布的随机矩阵m=n

时简写为rand(n)randn(m,n)产生均值为0,方差为1的标准正态分布随机矩阵

m=n

时简写为randn(n)双下标引用例:>>

A(2,3)2.2向量和矩阵的索引(重点利用小括弧和元素所在的位置(下标)x(i):向量x中的第i个元素A(i,j):矩阵A中的第i行,第j列元素矩阵元素的单下标引用方法,列元素优先AA(1)A(4)A(2)A(5)A(3)….A(end)如果a是一个向量,如何将a反向呢?a(end:-1:1)提取矩阵的部分元素:冒号运算符

A(:)A的所有元素

A(:,:)

二维矩阵A的所有元素

A(:,k)A的第k列,A(k,:)A的第k行

A(k:m)A的第k到第m个元素

A(:,k:m)A的第k到第m列组成的子矩阵如何将矩阵A中第1,3,4行与第2,5,7,9列构成的子矩阵提取出来?A([1,3,4],[2,5,7,9])4

110

5196

132

178

22

69

104

147

187

35

77

111

155

190

43

84

125

168

20A(1:4,5)A(:,5)A(:,end)A(17:20)'A(2:4,2:3)A([234],[23])A(1,2)A(5)例

A=矩阵的尺寸信息查看矩阵的大小:size

size(A)

列出矩阵A的行数和列数

size(A,1)返回矩阵A的行数

size(A,2)返回矩阵A的列数

length(x)返回向量X的长度

length(A)等价于max(size(A))矩阵的数组运算数组运算:对应元素进行运算点与算术运算符之间不能有空格!

数组运算包括:点乘、点除、点幂

相应的数组运算符为:“.*”,“./”,“.\”和“

.^”参与运算的对象必须具有相同的形状!例:>>

A=[123;456];B=[321;654];>>

C=A.*B;D=A./B;E=A.\B;F=A.^B;数组运算在你们以后学习中会多次遇到,当编程出现错误时,请查找是否少了黑点?三.Matlab

编程入门欢迎同学们提出宝贵意见,你的建议有利于课程建设。为更便于同学们根据课件自学,我标注了重点内容。M文件(掌握)关系运算、逻辑运算和运算优先级(掌握)M文件控制流(重点)顺序结构:数据输入输出input,disp,fprintf选择结构:if和switch用法循环结构:for和while用法程序终止:break和continue用Matlab语言编写的程序称为M文件。

M文件是由若干Matlab命令组合在一起构成的,它可以完成某些操作,也可以实现某种算法。

M文件根据调用方式的不同可以分为两类:

Script:脚本文件/命令文件

Function:函数文件M文件

M

文件以.m

为扩展名。<小于<=小于等于>大于>=大于等于==等于~=不等于比较大小,如果结论是真则返回1,否则返回0注意==与=

的区别关系运算符&与(ElementwiseAND)|或(ElementwiseOR)~非xor(x,y)异或逻辑运算符程序控制结构有三种:顺序结构、选择结构和循环结构。任何复杂的程序都由这三种基本结构组成。顺序结构M文件控制流按排列顺序依次执行各条语句,直到程序的最后。这是最简单的一种程序结构,一般涉及数据的输入输出、数据的计算或处理等。例:A=input('PleaseinputA:')数据的输入:inputA=input(提示信息)其中提示信息为字符串,该命令要求用户输入A

的值(可以是数或字符串)数据输入inputA=input(‘提示信息’,'s')注:此时输入的字符串不要加单引号!如果是输入字符串,也可以使用下面的方法name=input('What''syourname?','s')例:disp(X)输出变量X的值,可以是数值矩阵或字符串>>

B=[123;456;789];>>

disp(B)数据输出disp数据的输出:disp>>

A='Hello,Tom!';>>

disp(A)例:数据输出fprintffprintf(fid,format,variables)按指定的格式将变量的值输出到指定的文件数据的输出:fprintf

fid

为文件句柄,若缺省,则将变量的值输出到屏幕上

format

用来指定数据输出时采用的格式,常见的有%e(采用科学计算形式)%f(采用浮点数形式)%g(由系统自动选取上述两种格式之一)

%s(输出字符串)

format

中还可以使用一些特殊格式,如:\n

(换行)\t

(制表符)\b

(退格)

\\

(反斜杆)

%%

(百分号)

数据输出fprintf>>

a='Hello';b=2.4;c=100*pi;>>

fprintf('a=%s,b=%f,c=%e\n',a,b,c)例:

format

中的输出格式要与输出变量一一对应

可以没有输出变量>>

fprintf('TodayisMonday\n')例:单分支结构ifexpression

(条件)

statements(语句组)endif条件语句ifexpression(条件)

statements1(语句组1)else

statements2(语句组2)end双分支结构根据表达式的不同取值,分别执行不同的语句。switchexpression(表达式)casevalue1(表达式1)

statement1(语句组1)casevalue2(表达式2)

statement2(语句组2)......casevaluem

(表达式m)

statementm(语句组m)otherwise

statement(语句组)endswitch语句循环结构是按照给定的条件,重复执行指定的语句。Matlab用于实现循环结构的语句有for语句和while语句循环结构forvariable=expression

statement(循环体)end循环变量

表达式expression

可以是行向量,也可以是矩阵for循环clear;方法二:sum=0;n=100;y=0;n=100;i=1:(2*n-1);

fork=1:ny=1./I;

y=y+1/(2*k-1);sum(y);end例:已知,当n=100时,求y的值循环语句可以嵌套使用while循环whileexpression(条件)

statement(循环体)end不能在for循环体内改变循环变量的值为了提高代码的运行效率,应尽可能提高代码的向量化程度,避免

for循环的使用如果预先就知道循环的次数,则可以采用for循环;否则,如果预先无法确定循环的次数,则可以使用while循环。

break

continue

break

语句用于终止循环的执行,即跳出最内层循环

continue

语句用于结束本次循环,进行下一次循环

break

和continue

一般与if

语句配合使用其它流控制语句如何判断一个数是质数?clear,clcn=input('pleaseinputanumbern=');fori=2:(n-1)ifrem(n,i)==0disp(‘n不是质数')break,endendfunction

输出形参列表=函数名(输入形参列表)%注释说明部分(可选)函数体语句(必须)第一行为引导行,表示该M文件是函数文件函数名的命名规则与变量名相同(必须以字母开头

)当输出行参多于一个时,用方括号括起来函数必须是一个单独的M文件(这也正是函数只能被调用的原因)函数文件名必须与函数名一致以百分号开始的语句为注释语句函数文件函数文件由function

语句引导function[s,p]=fcircle(r)s=pi*r*r;

p=2*pi*r;例:编写函数文件求半径为r的圆的面积和周长。要求:提示用户输入圆形的半径,输出圆的周长和面积。首先,编制函数,函数名为fcircle,保存为fcircle然后,在另一个m文件或命令窗口中输入以下命令:r=input('pleaseinputthevalueofr=');[s,p]=fcircle(r);disp(s);disp(p)利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。【数学基础ρ=sqrt(x*x+y*y),θ=atan(y/x)】函数文件tran.m:function[rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m的命令文件main1.m:x=input('Pleaseinputx=:');y=input('Pleaseinputy=:');[rho,the]=tran(x,y);rhothe函数调用的一般格式输出实参列表=函数名(输入实参列表)函数调用时,实参的顺序应与函数定义时的形参的顺序一致。因为在定义的时候,形参都有相应的物理意义,它的数据应该是什么格式以及对应要解决什么样的问题一般都有要求函数可以嵌套调用,即一个函数可以被其它函数调用,甚至可以被它自身调用,此时称为递归调用。函数所传递的参数具有可调性,Matlab用两个永久变量nargin

和nargout

分别记录调用该函数时的输入实参和输出实参的个数%

函数文件factor.mfunctionf=factor(n)if(n<=1)f=1;elsef=n*factor(n-1);end%main.m%计算

s=1!+2!+3!+4!+5!%s=0;fori=1:5s=s+factor(i);endfprintf('s=%g\n',s)例:利用函数的递归调用计算n!递归函数举例四、Matlab绘图欢迎同学们提出宝贵意见,你的建议有利于课程建设。为更便于同学们根据课件自学,我标注了重点内容。命令在课本138-139Matlab二维作图

plot(x,y)基本形式x,y都是向量,则以x中元素为横坐标,y中元素为纵坐标作平面曲线。此时x,y必须具有相同长度。x,y都是矩阵,则将x的列和y中相应的列相组合,绘制多条平面曲线。此时x,y必须具有相同的大小。在0≤x≤2

区间内,绘制曲线y=2e-0.5xcos(4πx)点和线的基本属性图形的属性

plot(x,y,string)其中string

是用单引号括起来的字符串,用来指定图形的属性(点、线的形状和颜色)属性可以全部指定,也

可以只指定其中某几个排列顺序任意红色、虚线、离散点用加号蓝色、点划线

离散点为菱形黑色、实线

离散点用星号>>

x=[0:0.2:2*pi];>>

plot(x,cos(x));>>

plot(x,cos(x),’r+:’);>>

plot(x,cos(x),’bd-.’);>>

plot(x,cos(x),’k*-’);图形的基本属性线型点标记颜色-

实线:

虚线-.

点划线--

间断线.

点o

小圆圈x

叉子符+

加号*

星号s

方格d

菱形^

朝上三角v

朝下三角>

朝右三角<

朝左三角p

五角星h

六角星y

黄色

m棕色

c青色r红色g绿色b蓝色w白色k黑色help

plot

查看图形的其他属性标题title(’text’)例:title('text','Property1',value1,'Property2',

value2,...)Property:linewidth,markersize,fontsize,

fontweight,fontname,…可以指定文本的属性图形的其他属性坐标轴标注xlabel(’text’)

或ylabel(’text’)例:图形的其他属性添加图例legend(string1,string2,...)在指定地方添加文本text(x,y,string1,string2,...)>>

legend('cos(x)');>>

text(pi/2,cos(pi/2),'\leftarrowy=cos(x)');xlable,ylabel,text

命令也可以指定文本的属性保持当前窗口的图像holdon或holdoff新建绘图窗口figure(n)显示网格gridon或gridoff创建双y轴图形plotyy如何做分段函数的绘图(holdon)

请绘制y=sin(x)*(-2*pi<x<0)&exp(x)*(2*pi>x>=0)其它调用方式:axisauto自动模式,使得图形的坐标满足图中的一切元素axisequal各坐标轴采用等长刻度axissquare使绘图区域为正方形axison/off恢复/取消对坐标轴的一切设置axismanual以当前的坐标限制图形的绘制(多图时)……更多参见axis的联机帮助坐标轴控制axis([xmin,xmax,ymin,ymax])作用:控制坐标轴的显示范围

坐标轴控制命令:axis其他相关命令划分绘图区域subplot(m,n,p)将一个绘图窗口分割成m*n

个子区域,并按行从左至右依次编号。p

表示第p

个绘图子区域。>>

x=-pi:pi/10:pi;>>

subplot(2,2,1);plot(x,sin(x));>>

subplot(2,2,2);plot(x,cos(x));>>

subplot(2,2,3);plot(x,x.^2);>>

subplot(2,2,4);plot(x,exp(x));例:空间三维作图mesh和surf()网格生成函数:meshgridx,y为给定的向量,X,Y是网格划分后得到的网格矩阵绘制由函数z=z(x,y)确定的曲面时,首先需产生一个网格矩阵,然后计算函数在各网格点上的值。若x=y,则可简写为[X,Y]=

meshgrid(x)[X,Y]=

meshgrid(x,y)例:“墨西哥帽子”空间曲面作图举例(

–a<x<a,-a<y<a)a=8

时的曲面图形空间曲面作图举例>>

x=[-8:0.5:8];>>

y=[-8:0.5:8];>>

[X,Y]=meshgrid(x,y);>>

r=sqrt(X.^2+Y.^2)+eps;>>

Z=sin(r)./r;>>

mesh(X,Y,Z)[X,Y]=meshgrid([-8:0.5:8]);如何绘制出函数z=5*x^2-3*x+4*x*y-2*y+y^2,其中abs(x)<=4,abs(y)<=2;x=[-4:0.01:4];y=[-2:0.01:2];[X,Y]=meshgrid(x,y);Z=5*X.^2-3*X+4*X.*Y-2*Y+Y.^2;mesh(X,Y,Z)r,g,b

都是0~1之间的一个数

s

为字符串,表示所采用的色系,常用的值有颜色映象相应的颜色系颜色映象相应的颜色系autumn红黄色系hsv色调饱和色系gray线性灰色系hot黑红黄白色系cool青和洋红色系pink柔和色系图像的着色方案colormap([rgb])

或colormap(s)

colormap:设置绘图的着色方案课本139:绘制一个球体,用暖色调着色,并使颜色均匀变化Clear,sphere,colormap(‘hot’),shadinginterp5.1数据统计处理5.2数据插值5.3曲线拟合5.4离散傅立叶变换5.5功能函数5.6差微分和数值积分五MATLAB数值分析课本81,168最大值最小值:max和min的用法排序:sort求和与求积sum(X):返回向量X各元素的和。prod(X):返回向量X各元素的乘积。平均值和中值mean(X):返回向量X的算术平均值。median(X):返回向量X的中值。累加和与累乘积cumsum(X):返回向量X累加和向量。cumprod(X):返回向量X累乘积向量。5.2数据插值在MATLAB中,实现这些插值的函数是interp1,其调用格式为:Y1=interp1(X,Y,X1,'method')函数根据X,Y的值,计算函数在X1处的值。X,Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量或标量,描述欲插值的点,Y1是一个与X1等长的插值结果。Z1=interp2(X,Y,Z,X1,Y1,'method')例:某观测站测得某日6:00时至18:00时之间每隔2小时的室内外温度(℃),用3次样条插值分别求得该日室内外6:30至17:30时之间每隔20分钟各点的近似温度(℃)。设时间变量h为一行向量,温度变量t为一个两列矩阵,其中第一列存放室内温度,第二列储存室外温度。命令如下:h=6:2:18;t=[18,20,22,25,30,28,24;15,19,24,28,34,32,30]';XI=6.5:0.2:17.5;YI=interp1(h,t,XI,'spline');plot(h,t(:,1),'ob',XI,YI(:,1),'r.',h,t(:,2),'k<',XI,YI(:,2),'g.')5.3曲线多项式拟合polyval函数的功能是按多项式的系数计算x点多项式的值,格式为:Y=POLYVAL(P,X)其中,P为利用polyfit求得的多项式系数polyfit函数:用于根据采样点数值产生拟合多项式。其调用格式为:[P,S]=polyfit(X,Y,m)函数根据采样点X和采样点函数值Y,产生一个m次多项式P及其在采样点的误差向量S。其中X,Y是两个等长的向量,P是一个长度为m+1的向量,P的元素为多项式系数。例:已知数据表[x,y],试求3次拟合多项式p(x),然后求xx=0:0.01:1各点的函数近似值,并绘制图形。x0=0:0.1:1;y0=[-.4471.9783.115.255.024.664.014.583.455.359.22];p=polyfit(x0,y0,3)xx=0:0.01:1;yy=polyval(p,xx);plot(xx,yy,'-b',x0,y0,'or')三种函数定义方法:方法1:利用function文件定义方法2:使用匿名函数方法3:使用inline函数fh=@(x)2./(1+exp(-x))+3./(1+exp(-2*x));functiony=funexpress(x)y=2./(1+exp(-x))+3./(1+exp(-2*x));g=inline('2./(1+exp(-x))+3./(1+exp(-2*x))');数值积分的实现方法变步长辛普生法基于变步长辛普生法,MATLAB给出了quad函数来求定积分。该函数的调用格式为:

[I,n]=quad('fname',a,b,tol,trace)其中fname是被积函数名。a和b分别是定积分的下限和上限。tol用来控制积分精度,缺省时取tol=0.001。trace控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,缺省时取trace=0。返回参数I即定积分值,n为被积函数的调用次数。求归一化高斯函数在区间【-1,1】上的定积分二重定积分的数值求解使用MATLAB提供的dblquad函数就可以直接求出上述二重定积分的数值解。该函数的调用格式为:I=dblquad(f,a,b,c,d,tol,trace)该函数求f(x,y)在[a,b]×[c,d]区域上的二重定积分。参数tol,trace的用法与函数quad完全相同。求解二维高斯函数在【-1,1,-1,1】上的二重积分f=@(x,y)1/sqrt(pi)*exp(-x.^2)*1/sqrt(pi)*exp(-y.^2);dblquad(f,-1,1,-1,1)求函数f(x)=exp(x)+ax-b的零点,其中a=1,b=-3:3.六.Matlab

符号运算符号对象的建立:sym

和syms符号对象的建立

syms命令用来建立多个符号变量,一般调用格式为:syms符号变量1符号变量2...符号变量n例:>>

symsabc符号表达式的建立:>>

symsx;>>

f=sin(x)+cos(x)(最好用这种)>>

f=sym('sin(x)+cos(x)')二、六类常见符号运算因式分解、展开、简化计算极限计算导数计算积分符号求和代数方程和微分方程求解因式分解factor(f)>>

symsx;f=x^6+1;>>

factor(f)函数展开expand(f)>>

symsx;f=(x+1)^6;>>

expand(f)

多项式展开函数简化y=simple(f):

对f尝试多种不同的算法进行简化,返回其中最简短的形式[R,How]=simple(f):

y

为f的最简短形式,How中记录的为简化过程中使用的方法。fRHOW2*cos(x)^2-sin(x)^23*cos(x)^2-1simplify(x+1)*x*(x-1)x^3-xcombine(trig)x^3+3*x^2+3*x+1(x+1)^3factorcos(3*acos(x))4*x^3-3*xexpand函数简化y=simplify(f):

对f进行简化>>

symsx;f=sin(x)^2+cos(x)^2;>>

simplify(f)>>

symscalphabeta;

>>

f=exp(c*log(sqrt(alpha+beta)));>>

simplify(f)函数简化举例>>

symscalphabeta;

>>

f=(1/x^3+6/x^2+12/x+8)^(1/3);>>

y1=simplify(f)>>

g1=simple(f)>>

g2=simple(g1)多次使用simple可以达到最简表达。例:简化计算极限limit(f,x,a):计算limit(f,a):当默认变量趋向于a时的极限limit(f):计算a=0时的极限limit(f,x,a,'right'):计算右极限limit(f,x,a,'left'):计算左极限例:计算,>>

symsxhn;

>>

L=limit((log(x+h)-log(x))/h,h,0)>>

M=limit((1-x/n)^n,n,inf)计算导数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论