matlab视频笔记.docx
《matlab视频笔记.docx》由会员分享,可在线阅读,更多相关《matlab视频笔记.docx(15页珍藏版)》请在冰点文库上搜索。
matlab视频笔记
常量与变量
数据类型:
基本型和构造型(包括数组型)
其中基本型包括数值型(整型和浮点型)和字符串型(需要引在单引号内)
变量:
用变量名表示变量,变量名不能以数字和下划线开头
注意:
matlab对大小写敏感
弱类型语言:
当变量取完名后,所附值的类型即变量的类型,不用事先声明。
初始化变量:
赋值语句(=),input函数R=INPUT(‘Howmanyapples’),初始化后会再workspace体现
常量:
i或j虚数单位
Inf或INF无穷大
NaN不定式
Pi圆周率
对变量取名最好用小写字母,不用更大些字母,切有特定意义,且不与自带字符相同,如变量,函数名,ans
Matlab的基本数据结构
修改currentfolder图标右键,属性
标量:
1*1的矩阵
向量:
1*n或n*1的矩阵
数组:
与向量的结构相同,是matlab中的用语
矩阵
定义矩阵:
分号隔开是列,空格或逗号隔开是行,单引号’表示转置
内置函数生成矩阵:
ones(a,b)生成元素均为1的矩阵
Zeros(a,b)
Eye(a,b)类似单位矩阵的矩阵
冒号表达式:
help:
3:
9
3:
2:
9
数组元素如何引用:
变量名(3)变量名(1,2)第一行第二列变量名()按列存储
d(:
2)引用d全部第二列的元素
d(1,:
)引用全部第一行元素
矩阵嵌套生成矩阵
函数:
size()矩阵的行数和列数
Length()返回行数和列数的最大值
当矩阵所含数量较大时,为方便编辑,可以使用矩阵编辑器进行编辑,workspace第一个按钮newvariable
空数组和子数组
算术运算符
标量运算:
运算优先级:
小括号,中括号,大括号都用小括号表示
矩阵运算:
magic()魔方矩阵:
加减乘除inv()逆矩阵函数A/B=A*INV(B)矩阵的乘方
A.*B对应元素相乘,区别于A*B,同理可得.^2./
A+3A中各个元素均加3
编程
1.三大结构:
顺序结构,选择结构,循环结构
2.编程的步骤:
清晰陈述要解决的问题
明确输入输出及变量
所用算法
将算法转换为matlab代码
测试程序
3.程序bug:
调试
语法出错导致的bug
逻辑出错导致的bug
运行出现的bug
自定义函数
1M文件的分类
1.1脚本文件scriptfile:
用来执行简单的Matlab命令,运行时只需输入文件名字,MATLAB就会自动执行文件中的命令
1.2函数文件functionfile:
与脚本文件不同,它可以接受参数,也可以返回参数,一般情况下,用户不能靠单独输入其文件名来运行函数文件,而必须由其他语句来调用,如脚本文件或Matlab命令
Matlab的大多数应用程序都以函数文件的形式给出。
如三角函数,工具箱
Which函数如whichsin可以查看相应文件的位置
可以将自己编写的工具包嵌入matlab中,以方便调用,网上有很多人编写
初识matlab函数
函数是特殊的M文件,功能相对独立,但一般不能独立运行,需要赋给它相应的参数才能运行。
一般通过命令语句如赋值语句来调用,讲返回值赋给一个变量。
基本格式如下:
结构:
Function[outarg1,outarg2,...]=fname(inarg1,inarg2,...)fname是函数名称(function关键字必须写,系统会识别是普通的m文件还是函数m文件)
注:
输出参数以逗号隔开,如果只有一个输出参数,方括号可以省略;函数名称的命名规则与变量相同,不要与系统内部重名;小括号内是入口参数,不管有几个入口参数,小括号均不可省略;入口参数与返回参数可以称为形式参数。
%H1注释行:
该行注释的内容在lookfor函数搜索的范围之内,给出函数作用的简单阐述
%其他注释:
更加详细的注释
(可执行代码)该代码用来实现函数的功能
(RETURN):
最后的return可以省略
到此函数文件编写完毕,但是保存后点击运行会出现错误,原因是函数m文件不能独立运行,必须由其他代码引用。
所以还需在commandwindow中对其进行引用。
此时出现实参的概念,实参即为形式参数赋予的值,形式参数只是用来占位的,不参与计算,实参的命名可以与形式参数不同,两个文件中返回值的命名也可以不一样。
注:
1.给一个函数命名之前,可以用which函数名来检测系统中是否存在相同的名字,以避免出错,如果不存在则可以使用该函数名,如果存在相同的,则需换其他函数名。
2.函数文件中的变量(入口参数变量,中间变量,返回值变量)均不会出现在workspace中,即对用户是隐藏的,其只存在于函数文件中,该类变量称为局部变量(local)。
函数当中的局部变量
编辑器中的调试功能:
按钮:
debug
断点:
breakpoint:
编辑器中,命令行的前面有小横线的命令行均可设置断点。
如何设置断点:
1.在小横线处左键,出现红色的圆点,再次点击圆点取消断点
2.快捷键f12
快捷键f5继续运行
函数调用过程中发生了什么:
按值传递(无论参数是数组还是标量):
将实际参数的值复制一份给形式参数,无论函数文件对形式参数做了什么变化,其都不会影响最初给实际参数赋予的值,即使实际参数与形式参数的名字形同。
例子:
参数值互换。
按地址传递:
后续进行讲解
显示信息的几种方式
Msgbox:
显示
Errodlg:
函数的函数
函数的函数:
指的是输入参数中含有其他函数,传递给函数的函数的变量名一般情况应用于这个函数的执行过程。
编写一个函数的函数:
能够绘制单参数函数在制定范围的图像·7
Matlab的数值运算
1.多项式f(x)=a0xn+a1xn-1+a2xn-2+...+an-1x+a其中x可以是标量也可以是矩阵
定义多项式:
[12356]表示a=x4+2x3+3x2+5x+6
2.多项式的求值,求多项在某点处的值。
函数polyval()
如:
polyval(a,2)表示求值函数a在x=2时的值。
数值微分
符号微分
1.符号极限:
1.1limit(f)默认对独立变量x取极限,并且默认x=0处的极限
1.2limit(f,a)默认对独立变量x取极限,且x=a
1.3Limit(f,v,a)对y求极限,y=a
1.4limit(f,v,a,’right’)取右极限
2.符号微分(注意变量需要引起来,区别于limit)
2.1diff(s,’v’)
2.2diff(s)默认对独立变量x
2.3diff(s,n):
求n阶微分
2.4diff(s,’v’,n)(对于要求导的变量可以用引号也可以不用)”
Eg:
>>symsxy;注意:
需要先定义变量,否则会出错
>>f3=cos(2*x+y);
>>diff(f3,'x',2)
3.求偏倒数
方法一:
利用多次diff
方法二:
利用嵌套diff
多元函数的极(最)值
在matlab中同样有求多元函数的极(最)小值得函数,但由于多元函数的形式比较复杂,不同情况用到不同的matlab函数,若要求多元函数u在某一区域的极(或最)大值。
可转化为求-u在该区域的极小值。
1.非线性无约束情形
求极(或最)小值点(或最)小值得调用格式是:
求方程解析解
函数:
solve寻求表达式的零点或方程的解:
solve函数中既可以写表达式也可以写方程式
线性方程和非线性方程的解析解均可以通过solve函数来求解。
例子:
求非线性方程组以y和z作变量的解:
uy2+vz+w=0y+z+w=0
在editor编辑器中编写代码:
clear;
clc;
symsxyuvwz;声明符号变量
L1=u*y^2+v*z+w;
L2=y+z+w;
[y,z]=Solve(L1,L2,y,z);注意小括号与中括号
解得表达方式有三种,具体参考视频教程:
1.一个方程对应一个解,直接返回响应的解;
2.当方程有多个解时,返回解得符号向量;
3.当解有多个,而输出只有一个时,解会输出到一个结构数组当中,用结构数组寻找相应的域即可。
常微分方程(组)解析解
函数:
dsolve
表达式化简
Matlab提供了化简和美化符号表达式的各种函数,具体有,合并同类项collect,多项式展开expand,因式分解factor,一般化简simplify,不定式化简simple,通分numden,和书写格式美化pretty.
1.合并同类项:
两种调用方法
Eg1:
f=x2y+xy-x2-2x
Symsxy;
f=x2y+xy-x2-2x;
Fx=collect(f);
Eg2:
g=(-1/4)*x*exp(-2*x)+3/16*exp(-2*x)
Gx=collect(g,exp(-2*x))指定合并同类项的项
2.多项式展开factor
Eg:
f1=x^2-y^2
Symsxy;
F1=x^2-y^2(此句后面不要加分号,让其运行一下,否则会出现没有定义f1的错误)
Factor(f1);
3.一般化简simplify(化简完的有时候也不是最简,这时候就需要手动化简)
Eg:
f2=x^2+y^2+2*x*y
Simplify(f2)
4.Simple会用各种方法对多项式进行化简,(不常用)
5.通分numden
F4=x/y+y/x
当直接用numden(f4)时,给出的结果只有分子。
所以正确的调用形式是[s1,s2]=numden(f4)
给出的结果中s1是分子,s2是分母。
6.书写格式美化pretty(f4):
可以将幂显示为常用的层叠形式,以便于视觉
绘图入门
1.Plot一般选择步长为0.01或0.001
X=0:
0.01:
2*pi;
Y1=sin(x);
Plot(x,y1)
2.还可以给图像添加坐标的描述
Xlabel(‘x轴’)
Ylabel(‘y轴’)
网格gridon或gridoff
另外还可以添加图例legend(‘正弦曲线’)
3.如何使两个图形同时出现
Plot(x,y1,x,y2)自动为不同函数分配不同颜色的曲线
还可以添加图例legend(‘正弦曲线’,’余弦曲线’)(按照plot函数中y1,y2的先后顺序)
Title(‘’)添加图形的标题
4.如何将已写程序保存为m文件(edit调出编辑器)
5.如何将下图中的横坐标改为想要的值axisaxisequal使横纵坐标的长度相同aixs([02*pi-11])指定值横坐标为(0-2*pi)纵坐标是-1到1
6.如何改变线的属性,Helpplot以及
7.调节图像属性的一些常熟函数:
semilogxsemilogylogloglegendtitlegridxlabelylabelhold
8.坐标轴的控制
Semilogx(x,y)
semilogy(x,y)
loglog(x,y)
9.图像窗口的工具栏:
可以对图形进行编辑
9.1关于图像的保存:
默认为fig格式,但是该格式的文件只能在matlab中打开,要想在其他文件中编辑或运用,可以将其保存为jpg.Bmp.等格式。
9.2rotate3d旋转为3d
9.3showplottoolsanddockfigure
10.格式化输出函数:
fprintffprintf(format,A...)格式化字符(查看fprintf的帮助文档和相应的变量
二维作图
注:
脚本文件的名字不可以和函数的名字相同,否则会出错。
前5种图的调用方式都相同(例子见m文件)
1.Stem
2.Stairs阶梯图
3.Bar竖式条形图
4.Barh水平条形图
5.Compass罗盘图(如果不对axis做说明,即可得出360度的图形,否则为扇形)
6.Pie(计算所占百分比)其调用方式不同于前五种
6.1pie(X,explode)
Examples
Emphasizethesecondsliceinthechartbysettingitscorrespondingexplodeelementto1.
x=[130.52.52];
explode=[01000];
pie(x,explode)
colormapjet
7.Hist柱状图(直角坐标系中的柱状图,极坐标中的柱状图用函数rose)
有些图形的作图方式有两种,一是调用函数,二是选中要作图的变量,点击workspace的作图按钮,如果要对图形做进一步的编辑,可以参见上述图片所显示的地址。
Syntax
n=hist(Y)
n=hist(Y,x)注:
y是函数值,x是y的取值范围
n=hist(Y,nbins)
[n,xout]=hist(...)
hist(...)
hist(axes_handle,...)
Description
Ahistogramshowsthedistributionofdatavalues.
n=hist(Y)binstheelementsinvectorYinto10equallyspacedcontainersandreturnsthenumberofelementsineachcontainerasarowvector.IfYisanm-by-pmatrix,histtreatsthecolumnsofYasvectorsandreturnsa10-by-pmatrixn.EachcolumnofncontainstheresultsforthecorrespondingcolumnofY.NoelementsofYcanbecomplexoroftypeinteger.默认分为10份
n=hist(Y,x)wherexisavector,returnsthedistributionofYamonglength(x)binswithcentersspecifiedbyx.Forexample,ifxisa5-elementvector,histdistributestheelementsofYintofivebinscenteredonthex-axisattheelementsinx,noneofwhichcanbecomplex.Note:
usehistcifitismorenaturaltospecifybinedgesinsteadofcenters.
n=hist(Y,nbins)wherenbinsisascalar,usesnbinsnumberofbins.分为Nbins份
8.Feather函数
9.Line函数
10.Ezplot和fplot:
这两个函数不需要创建中间数据,调用函数类似,后者更精确,所以优先使用该函数(详细调用方法见help文件)
10.1fplot函数是适应性的,它意味着在自变量范围内函数突然变化显示更多的点
10.2fplot支持latex命令,用来指定坐标图的标题和坐标标签,而函数ezplot不能。
高维数组
1.什么是高维数组:
2.如何创建高维数组:
方法一:
下标法
>>d(:
:
1)=[123;456;789];
>>d(:
:
2)=[234;567;8910];
>>d(:
:
3)=[345;678;91011]
方法二:
函数生成法zerosonesrandnrand
方法三:
拼接法:
reshaperepmatcat
3.如何访问高维数组中的元素:
4.如何存储:
三维作图(注意点乘)
命令:
plottools或者图像显示窗口的icon开启plottools(查看帮助文档helpplottools)
5.三维图像能更丰富的表现数据的几何关系,三维图像常用于表现以下两类数据:
5.1两个变量是同一自变量的函数,当你希望显示自变量重要性时,你可以用三维作图表示
如:
x和y均是t的函数
5.2一个变量是另外两个变量的函数
6.三维图像包括:
三维曲线图,三维表面图,三维网格图,三维等高线图(任意两变量函数均可以用三维表面图,三维网格图,三维等高线图来表示)
6.1三维曲线图:
Plot3()
6.2三维表面图:
surf(Z)
surf,surfc:
3-Dshadedsurfaceplot
Tographselectedvariables,usethePlotSelectorintheWorkspaceBrowser,orusetheFigurePalettePlotCatalog.ManipulategraphsinploteditmodewiththePropertyEditor.Fordetails,seePlottingTools—InteractivePlottingintheMATLABGraphicsdocumentationandCreatingGraphicsfromtheWorkspaceBrowserintheMATLABDesktopToolsdocumentation.
Syntax
前四种最为常用
surf(Z)
surf(Z,C)
surf(X,Y,Z)
surf(X,Y,Z,C)
surf(...,'PropertyName',PropertyValue)
surf(axes_handles,...)
surfc(...)
h=surf(...)
Description
Usesurfandsurfctoviewmathematicalfunctionsoverarectangularregion(矩形区域).surfandsurfccreatecoloredparametricsurfacesspecifiedbyX,Y,andZ,withcolorspecifiedbyZorC.
surf(Z)createsaathree-dimensionalshadedsurfacefromthezcomponentsinmatrixZ,usingx=1:
nandy=1:
m,where[m,n]=size(Z).Theheight,Z,isasingle-valuedfunctiondefinedoverageometricallyrectangulargrid.Zspecifiesthecolordataaswellassurfaceheight,socolorisproportionaltosurfaceheight.
Suf(z)可以创建一个三维的阴影表面图,Z是一个矩阵形式,x定义为1:
n,y定义为1:
m,z是m行n列的矩阵,高度z是一个单值函数,定义在一个曲形的网格区。
Z不仅可以指定网格图的高度,还可以定义网格图的颜色。
surf(Z,C)plotstheheightofZ,asingle-valuedfunctiondefinedoverageometricallyrectangulargrid,andusesmatrixC,assumedtobethesamesizeasZ,tocolorthesurface.
surf(X,Y,Z)createsashadedsurfaceusingZforthecolordataaswellassurfaceheight.XandYarevectorsormatricesdefiningthexandycomponentsofasurface.IfXandYarevectors,length(X)=nandlength(Y)=m,where[m,n]=size(Z).Inthiscase,theverticesofthesurfacefacesare(X(j),Y(i),Z(i,j))triples.TocreateXandYmatricesforarbitrarydomains,usethemeshgridfunction.
Meshgrid(创建网格)
GenerateXandYarraysfor3-Dplots
Syntax
[X,Y]=meshgrid(x,y)
[X,Y]=meshgrid(x)
[X,Y,Z]=meshgrid(x,y,z)
Description
[X,Y]=meshgrid(x,y)transformsthedomainspecifiedbyvectorsxandyintoarraysXandY,whichcanbeusedtoevaluatefunctionsoftwovariablesandthree-dimensionalmesh/surfaceplots.TherowsoftheoutputarrayXarecopiesofthevectorx;columnsoftheoutputarrayYarecopiesofthevectory.
[X,Y]=meshgrid(x)isthesameas[X,Y]=meshgrid(x,x).注意中括号,不是小括号
[X,Y,Z]=meshgrid(x,y,z)producesthree-dimensionalarraysusedtoevaluatefunctionsofthreevariablesandthree-dimensionalvolumetricplots.
surf(X,Y,Z,C)createsashadedsurface,withcolordefinedbyC.MATLABperformsalineartransformationonthisdatatoobtaincolorsfromthecurrentcolormap.
surf(...,'PropertyName',PropertyValue)specifiessurfa