MATLAB笔记.docx

上传人:b****4 文档编号:3536752 上传时间:2022-11-23 格式:DOCX 页数:26 大小:967.49KB
下载 相关 举报
MATLAB笔记.docx_第1页
第1页 / 共26页
MATLAB笔记.docx_第2页
第2页 / 共26页
MATLAB笔记.docx_第3页
第3页 / 共26页
MATLAB笔记.docx_第4页
第4页 / 共26页
MATLAB笔记.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

MATLAB笔记.docx

《MATLAB笔记.docx》由会员分享,可在线阅读,更多相关《MATLAB笔记.docx(26页珍藏版)》请在冰豆网上搜索。

MATLAB笔记.docx

MATLAB笔记

介绍

如何得到help:

1.单击MATLAB桌面工具栏上的图标

2.在MATLAB命令窗口(TheCommandWindows)中输入help或help和所需要的函数的名字。

3.通过lookfor命令得到帮助。

lookfor命令与help命令不同,help命令要求与函数名精确匹配,而lookfor只要求与每个函数中的总结信息有匹配

如果变量名与MATLAB中的函数或命令重名,那么这个函数或命令将不能被访问。

不要创建和MATLAB内建函数或命令同名的M文件

Matlab的操作对象是矩阵

定义矩阵A=[123;456;789]

矩阵元素可以是任何数值表达式:

x=[-1.3,sqrt(3),(1+2+3)*4/5]

单独赋值:

x(5)=abs(x

(1))Matlab自动将向量x的长度扩展到5,并将未赋值部分置零。

abs函数:

数值的绝对值和复数的幅值

对数组元素进行绝对值处理的函数,函数的定义域包括复数。

对于复数x=a+b*i,有abs(x)=sqrt(a^2+b^2)

数组中的单个数据是可以被访问的,访问的方法是数组名后带一个括号,括号内是这个数据所对应的行标和列标。

如果这个数组是一个行向量或列向量,则只需要一个下标。

例如数组A(21)为3,C

(2)为2。

大矩阵可以把小矩阵作为其元素

元素的引用:

x(i):

向量x中的第i个元素

A(i,j):

矩阵A中的第i行,第j列元素

A(i:

j,m:

n)表示由矩阵A的第i到第j行和第m到第n列交叉线上的元素组成的子矩阵。

可利用冒号提取矩阵的整行或整列,A(:

1:

3)

B=A(v1,v2)v1是子矩阵要包含的行号构成的矩阵,v2是要包含的列号构成的向量。

B=A([3,2,1],[2,3,4])提取3,2,1行,2,3,4列构成矩阵。

变量的查询:

who显示工作空间中的所有变量whos查看工作空间中变量的详细属性

避免给系统预定义变量重新赋值:

pi:

圆周率

inf,Inf:

无穷大

nan,NaN:

一个不定值

eps:

浮点运算相对精度

特殊变量ans:

如果未定义变量名,用于默认的计算结果

变量名由一个字母引导,后面可以跟着字母数字或者下划线

字符串也是由单引号串起来的

存储,若无指定变量,则系统会自动将结果赋给变量“ans”

i,j:

虚部单位

 realmax:

最大的正浮点数;

realmin:

最小的正浮点数;

nargin:

函数输入参数个数;

nargout:

函数输出参数个数;

lasterr:

存放最新的错误信息;

lastwarn:

存放最新的警告信息

Matlab中的数默认是双精度实数,Matlab中数的输出格式可以通过format命令指定,只改变变量的输出格式,但不会影响变量的值

存储指定的变量:

save文件名变量名列表(变量名列表中各变量之间用空格分隔)其中文件名是指变量存入的文件。

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

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

变量的读取:

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

loadmydataAx从数据文件中提取指定变量

清除当前工作空间中的变量:

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

clearAx清除指定的变量

矩阵(数值)运算

利用M文件建立矩阵:

对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。

其步骤为:

第一步:

使用编辑程序输入文件内容。

第二步:

把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。

第三步:

在MATLAB命令窗口中输入mymatrix,就会自动建立一个名为AM的矩阵,可供以后显示和调用。

建立矩阵的函数:

eye(size(A))产生与A矩阵同阶的单位矩阵

eye(m,n)生成一个主对角线全为1的m行n列矩阵,m=n时可简写为eye(n),即为n维单位矩阵

zeros(m,n)产生0矩阵

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

rand(m,n)产生随机元素的矩阵,产生0~1间均匀分布的随机矩阵m=n时简写为rand(n)

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

Size(a)返回包含两个元素的向量。

Length(a)返回向量的长度。

diag(X)若X是矩阵,则diag(X)为X的主对角线向量,若X是向量,diag(X)产生以X为主对角线的对角矩阵

tril(A)提取一个矩阵的下三角部分

triu(A)提取一个矩阵的上三角部分

常见的MATLAB函数

max:

这个函数一般情况下返回输入向量中的最大值,但是它返回的第二个参数是输

入向量中的最大值在向量中的位置。

[maxvalindex]=max([1-56-3])

将会产生结果maxval=6,和index=3.

Conv函数:

求两个多项式的乘积

若要求多个多项式的乘积,可以自己定义一个函数convs

Functiona=convs(varargin)

a=1;

fori=1:

length(varargin)

a=conv(a,varargin{i});

end

inline函数:

图形与可视化(Graphic)

线性坐标曲线plot:

plot绘图在确定自变量的取值间隔时,一般采用平均间隔

例:

在同一图形窗口中用命令plot(x,y)绘出正弦余弦函数的图形。

x=0:

0.01:

2*pi;

y=[sin(x);cos(x)];

plot(x,y)

二维函数曲线专用命令fplot:

数据点是自适应产生的,对那些导数变化较大的函数,用fplot函数绘出的曲线比等分取点所画出的曲线更加接近真实。

[X,Y]=fplot(‘fun’,lims)

fun:

函数名字符串;lims:

定义x的取值区间,lims=[xmin,xmax];

plot(x,y,s),s为类型说明参数,是字符串。

串可以是三种类型的符号之一,也可以是线型与颜色和定点标记与颜色的组合。

每调入一次绘图函数,MATLAB将擦掉坐标系中已有的图形对象。

可以用holdon命令在一个坐标系中增加新的图形对象。

同一个窗口中同时显示多个图像:

subplot(m,n,i)

其含义为:

把图形窗口分割为m行n列子窗口,然后选定第i个窗口为当前窗口。

坐标系的调整:

axis([xmin,xmax,ymin,ymax,zmin,zmax])注意这个是彼此之间是逗号。

可以这样写axis([0,max(t),min(y),max(y)])

单参数的三维曲线plot3:

plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…)

Xn、Yn、Zn:

第一到三维数据,是尺寸相等的向量/矩阵;

s、s1、s2:

是字符串,用来设置线型、颜色、数据点标记。

title(’绘制螺旋线’)%用命令title对图形主题进行标注

zlabel(’t’,’FontWeight’,’bold’,’FontAngle’,’italic’)t是单位,后面一大堆是各种特性。

三维曲面绘图命令可分为平面网格点的生成、在平面网格基础上绘制三维网格及对三维表面进行处理三个步骤。

D=[x0,xm]×[y0,yn]注意对应的情况

平面网格点的生成[X,Y]=meshgrid(x,y)。

[X,Y]=meshgrid(x)等价于[X,Y]=meshgrid(x,x)将由两个向量决定的区域转换为对应的网格点矩阵

正确的阅读顺序是从左到右,从上到下。

对每个矩阵按照列来阅读,比如首先是x矩阵的第一列与y矩阵的第一列,取出它们的第一个元素就是点(0,0),取出第二个元素就是(0,1),依次是(0,2)、(0,3)。

分别对应了上图的第一列点。

后面的以此类推。

x=-2:

.1:

2;是什么意思:

x=a:

b:

c在matlab中是给x赋值语句:

a,c为赋值的起始端,b为递增(减)步长。

.1表示0.1。

x=-2:

.1:

2意思是x=-2,-1.9,-1.8,-1.7,-1.6....0,0.1,0.2,0.3....2

三维网格命令mesh:

生成网格曲面

mesh(X,Y,Z,C):

X、Y、Z、C是同维数的矩阵,X、Y、Z对应空间上的网格点,网格线颜色由C决定;

mesh(x,y,Z,C):

x和y是向量,Z和C是同维数的矩阵,网格曲面的网格顶点是(x(j),y(i),Z(i,j)),网格线的颜色由矩阵C决定;

mesh(Z,C):

等价于mesh(x,y,Z,C),此时向量x=1:

n,向量y=1:

m;

例子:

[X,Y]=meshgrid(-2:

.2:

2,-2:

.2:

2);

Z=X.*exp(-X.^2-Y.^2);

mesh(Z)

三维表面命令surf:

对网格曲面片进行着色,将网格曲面转化为实曲面

调用格式与mesh相同

图形可视化

柱面cylinder:

轴线定义为z轴

[X,Y,Z]=cylinder(R,N);

[X,Y,Z]=cylinder(R):

缺省值N=20;

[X,Y,Z]=cylinder:

缺省值N=20,R=[1,1]。

R:

是一描述柱面母线的向量;

N:

是旋转柱面上的分割线条数;

[X,Y,Z]:

是返回的x,y,z坐标向量

球面sphere:

[X,Y,Z]=sphere(N)产生一个(N+1)×(N+1)的矩阵,然后用函数surf命令绘制一个单位的球面,N为设置分割线的条数,没有N的话就是N=20surf函数是形成一个实曲面

例:

[X,Y,Z]=sphere;

surf(X,Y,Z)

面积图命令area:

area(X,Y):

与plot的命令的使用方法相似,将连线图到x轴的那部分填上了颜色

area(X,Y,LEVEL)或area(Y,LEVEL):

填色部分为由连线图到y=level的水平线之间的部分

直方图命令bar

bar(X,Y,WIDTH)或bar(Y,WIDTH):

用WIDTH指定竖条的宽度,如果WIDTH>1,条与条之间将重合。

缺省宽度为0.8;逗号之后还可以写别的性质之类的,颜色啥的。

饼图命令pie:

pie和pie3分别用于绘制二维和三维饼图

pie(X):

向量X的饼图。

把X的每一个元素在所有元素总和中占的比例表达出来;

pie(X,EXPLODE):

向量EXPLODE(和向量X长度相等)用于指定饼图中抽出一部分的块(非零值对应的块);pie(x,[00010])

pie(...,LABELS):

LABELS是用于标注饼图的字符串数组,其长度必须和向量X相等;

极坐标系下绘制图形ploar(THETA,RHO,S)其中S是字符串,用来控制图形的线型

例:

绘制半径为2的渐开线。

rhe=2;

theta=0:

pi/20:

4*pi;

rho=rhe+theta*rhe;

polar(theta,rho,'r')

标注坐标轴x、y和z的命令函数为xlabel、ylabel和zlabel,调用格式为:

xlabel(’text’,’Property1’,PropertyValue1,’Property2’,PropertyValue2,...)’text’是要添加的标注文本。

’Property’是文本的属性名,’PropertyValue’是属性值(所用字体、大小、标注角度等)

加标题的函数为title,其调用格式与坐标轴标注类似。

不同图例的说明:

legend(string1,string2,string3,...,Pos)

按顺序把字符串添加到相应的曲线线型符号之后;Pos对图例的位置作出设置和调整:

0=自动把图例置于最佳位置(和图中曲线重复最少);

1=置于图形窗口的右上角(缺省值);

2=置于图形窗口的左上角;

3=置于图形窗口的左下角;

4=置于图形窗口的右下角;

-1=置于图形窗口的右侧(外部)

分格线

gridon都带有分格线

gridoff不带

符号运算

符号对象的建立:

sym函数用来建立单个符号变量符号变量=sym(A)A可以是一个数或数值矩阵,也可以是字符串

syms命令用来建立多个符号变量,一般调用格式为:

syms符号变量1符号变量2...符号变量n注意相互之间是空格

symsvar-listvar-props

var-list:

需要申明的变量列表

var-props:

申明变量的类型,如postive,real

举例:

symsab;

Symsareal;

Vpa函数用来变精度,以任意指定的精度显示出来。

Vpa(A)或vpa(A,n)其中,n是指定的有效数字的位数,默认32位

符号对象的基本运算

乘法:

-----*:

乘法。

矩阵相乘(除的时候通过逆矩阵来实现),要求内维相同,也就是前一个矩阵的列的维数等于后一个矩阵的行的维数。

     -----.*:

点乘

当让两个矩阵相乘时,是按矩阵相乘算出的,点乘则是相应位置的元素乘相应位置的元素

矩阵都是点乘

除法:

-----/:

左除:

a/b表示矩阵a乘以矩阵b的逆

     -----./:

点除:

点除是数组中对应元素相除,如A中第(m,n)个元素除B中第(m,n)个元素

     -----\:

右除:

a\b表示矩阵a的逆乘以b

^:

sqrt:

开方(根号)

exp:

自然对数e的幂,格式exp(a)

    自然对数e的表示:

exp(0)=e

求阶乘的函数:

factorial()

矩阵转置:

’该符号表示共轭转置,当矩阵为实矩阵时表示转置

.’该符号表示转置运算

矩阵翻转:

A左右翻转再给B:

B=fliplr(A)

A上下翻转再给B:

B=flipud(A)

A逆时针翻转90度再给B:

B=rot90(A)

矩阵的乘方:

A^X

矩阵的逻辑运算

A&B,A|B,A~,Xor(A,B):

异或运算

查找符号表达式中的符号变量

findsym(expr)按字母顺序列出符号表达式expr中的所有符号变量

findsym(expr,N)按顺序列出expr中离x最近的N个符号变量

用给定的数据替换符号表达式中的指定的符号变量

subs(f,x,a)

用a替换字符函数f中的字符变量x,可以是数/数值变量/表达式或字符变量/表达式

符号矩阵

使用sym函数直接生成:

A=sym('[1+x,sin(x);5,exp(x)]')

将数值矩阵转化成符号矩阵:

>>B=[2/3,sqrt

(2);5.2,log(3)];>>C=sym(B)

六类常见符号运算:

因式分解:

factor(f)

函数展开:

expand(f)

合并同类项:

collect(f,v):

按指定变量v进行合并collect(f):

按默认变量进行合并

函数简化:

y=simple(f)返回其中最简短的形式

[How,y]=simple(f):

y为f的最简短形式,How中记录的为简化过程中使用的方法。

y=simplify(f):

对f进行简化,主要是对表达式化简。

函数简化:

[N,D]=numden(f):

其中N为通分后的分子,D为通分后的分母

horner多项式:

嵌套形式的多项式,

symsx;

f=x^4+2*x^3+4*x^2+x+1;

g=horner(f)

计算极限

limit(f,x,a):

计算趋向于a时的极限

limit(f,a):

当默认变量趋向于a时的极限

limit(f):

计算a=0时的极限

limit(f,x,a,'right'):

计算右极限

limit(f,x,a,'left'):

计算左极限

导数

g=diff(f,v):

求符号表达式f关于v的导数

g=diff(f):

求符号表达式f关于默认变量的导数

g=diff(f,v,n):

求f关于v的n阶导数

积分

int(f,v,a,b):

计算定积分有a,b上下限

int(f,a,b):

计算关于默认变量的定积分

int(f,v):

计算不定积分

int(f):

计算关于默认变量的不定积分

求和

inf为无穷大量+∞,-inf为无穷小量-∞

代数方程求解Solve(f,v)

微分方程y=dsolve('eq1','eq2',...,'cond1','cond2',...,'v')其中y为输出的解,eq1、eq2、...为微分方程,cond1、cond2、...为初值条件,v为自变量

比如:

微分方程中用D表示对自变量的导数,如:

Dy=y';D2y=y'';D3y=y''

反函数

finverse(f,v):

求f关于指定变量v的反函数

finverse(f):

求f关于默认变量的反函数

语言程序设计

赋值语句的分号:

which命令,它能帮助我们找到正在执行的文件版本和它的路径

whichfilename

filename代表你所要加载的函数名。

举个例子,你要加载的函数是cross.m:

>>whichcross

MATLAB有两种工作方式:

交互式的命令行工作方式,M文件的程序工作方式

数据的输入输出:

输入一个参数:

A=input(提示信息,选项);注:

‘s’选项,则允许用户输入一个字符串。

例如想输入一个人的姓名,可采用命令

xm=input('What''syourname:

','s')

暂停程序的执行:

pause(延迟秒数)若直接使用pause,则按任一键后程序继续执行

输出函数:

disp(输出项)注:

输出项为字符串或矩阵

if-else-end语句还有if-end语句记住要加end哟!

Switch语句:

注意是otherwise而且不用再每一句后面加break

例:

主要用于多项选择

>>No=input('Pleaseinputyourchoice!

');

Pleaseinputyourchoice!

1

>>switchNo

case0

disp('returntomainmenu');

case1

disp('Sheisagirl');

case2

disp('Heisaboy');

otherwise

disp('Ican''tdetermine')

end

Sheisagirl

循环语句:

for循环变量=表达式1:

表达式2:

表达式3

循环体语句

end

注意的是表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值

试探结构:

Try,语句段1,

Catch,语句段2,

End

先试探性的执行语句段1,若错误,将错误信息付给保留的lasterr变量,并终止这段语句的执行,执行语句段2的。

每一个函数文件都定义一个函数

function输出形参表=函数名(输入形参表)

注释说明部分用%

输入,返回变量格式的检测:

由nargin和nargout来给出

函数体

注意:

当输出形参多于1个时,则应该用方括号括起来。

例如:

function[a,b,c]=test(d,e,f)

a=d+e;

b=e+f;

c=f+d;

end

函数调用的一般格式是:

[输出实参表]=函数名(输入实参表)

在调用函数时,MATLAB用两个永久变量nargin和nargout分别记录调用该函数时的输入实参和输出实参的个数。

只要在函数文件中包含这两个变量,就可以准确地知道该函数文件被调用时的输入输出参数个数,从而决定函数如何进行处理。

nargin用法示例:

全局变量和局部变量

全局变量的作用域是整个MATLAB工作空间,即全程有效,用命令global定义。

线性变换及其特征

fill(x,Y,C)创建填充多边形顶点的颜色从C中指定的X和Y的数据是一个向量或矩阵用于作为颜色表索引。

plot(x(1,:

),x(2,:

))第一行第二行的所有数据

二维矩阵的特征值表示该变换在原图形的特征向量的方向上的放大量。

eigshow函数

计算矩阵A的特征值和特征向量的函数是eig(A),常用的调用格式有5种:

1.E=eig(A):

求矩阵A的全部特征值,构成向量E。

2.[V,D]=eig(A):

求矩阵A的全部特征值,构成对角阵D,并求A的特征向量构成V的列向量。

3.[V,D]=eig(A,'nobalance'):

与第2种格式类似,但第2种格式中先对A作相似变换后求矩阵A的特征值和特征向量,而格式3直接求矩阵A的特征值和特征向量。

4.E=eig(A,B):

由eig(A,B)返回N×N阶方阵A和B的N个广义特征值,构成向量E。

5.[V,D]=eig(A,B):

由eig(A,B)返回方阵A和B的N个广义特征值,构成N×N阶对角阵D,其对角线上的N个元素即为相应的广义特征值,同时将返回相应的特征向量构成N×N阶满秩矩阵,且满足AV=BVD。

基坐标变换

在基准坐标系中的n个分量都是已知的,因此u和v都可表示为n*n矩阵。

如果Rn中的一个向量w在以u为基的坐标系内的坐标为wu(n1数组),在以v为基的坐标系内的坐

标为wv(n*1数组),它们在基准坐标系内的坐标应分别为u*wu和v*wv,这两者应该相等。

u*wu=v*wv。

所谓基坐标的变换就是已知wu,求出wv

坐标变换矩阵P可由u和v求得:

P(u→v)v\u

wv=P*wu

MATLAB求解系统的响应

零状态响应:

y=lsim(sys,f,t)

Sys是系统模型,表示微分方程,f是输入信号,t是计算系统相应的抽样点向量

注意:

系统模型sys要借助tf函数

Sys=tf(b,a)其中b是微分方程右端的各项系数,a是左端的各项系数。

a,b可以写成矩阵的形式。

Gui图形用户界面,又称图形用户接口

如何打开:

新建-APP-guide

静态文本写字的话用检查器中text里的string

通过file-new-gui,打开guiquickstart窗口,选择openexistinggui选中你的.fig文件,可以继续编辑gui文件

编程的基本思想:

目的->当点击按钮A时,然后执行任务C,

则->进入按钮A的回调函数callback里,写下任务C的代码。

viewcallbacks->选择callback

也可以在制作gui界面的时候,在界面上相应的控件上右击,然后在“viewcallback”选项

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1