matlab函.docx
- 文档编号:6400926
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:30
- 大小:55.91KB
matlab函.docx
《matlab函.docx》由会员分享,可在线阅读,更多相关《matlab函.docx(30页珍藏版)》请在冰豆网上搜索。
matlab函
基本概念:
一维数组相当于向量,二维数组相当于矩阵.所以矩阵是数组的子集,标量就是1*1的矩阵
在编function函数时候,变量如果多于一个应该用方括号括起来,否则可以省略方括号。
For循环中若变量赋值给它本身的话运行的会特别慢。
标量、向量、矩阵和数组是MATLAB运算中涉及的一组基本运算量。
它们各自的特点及相互间的关系可以描述如下:
(1)数组不是一个数学量,而是一个用于高级语言程序设计的概念。
如果数组元素按一维线性方式组织在一起,那么称其为一维数组,一维数组的数学原型是向量。
如果数组元素分行、列排成一个二维平面表格,那么称其为二维数组,二维数组的数学原型是矩阵。
如果元素在排成二维数组的基础上,再将多个行、列数分别相同的二维数组叠成一本立体表格,便形成三维数组。
依此类推下去,便有了多维数组的概念。
在MATLAB中,数组的用法与一般高级语言不同,它不借助于循环,而是直接采用运算符,有自己独立的运算符和运算法则。
(2)矩阵是一个数学概念,一般高级语言并未引入将其作为基本的运算量,但MATLAB是个例外。
一般高级语言是不认可将两个矩阵视为两个简单变量而直接进行加减乘除的,要完成矩阵的四则运算必须借助于循环结构。
当MATLAB将矩阵引入作为基本运算量后,上述局面改变了。
MATLAB不仅实现了矩阵的简单加减乘除运算,而且许多与矩阵相关的其他运算也因此大大简化了。
(3)向量是一个数学量,一般高级语言中也未引入,它可视为矩阵的特例。
从MATLAB的工作空间窗口可以查看到:
一个n维的行向量是一个1×n阶的矩阵,而列向量则当成n×1阶的矩阵。
(4)标量的提法也是一个数学概念,但在MATLAB中,一方面可将其视为一般高级语言的简单变量来处理,另一方面又可把它当成1×1阶的矩阵,这一看法与矩阵作为MATLAB的基本运算量是一致的。
(5)在MATLAB中,二维数组和矩阵其实是数据结构形式相同的两种运算量。
二维数组和矩阵的表示、建立、存储根本没有区别,区别只在它们的运算符和运算法则不同。
例如,向命令窗口中输入a=[12;34]这个量,实际上它有两种可能的角色:
矩阵a或二维数组a。
这就是说,单从形式上是不能完全区分矩阵和数组的,必须再看它使用什么运算符与其他量之间进行运算。
(6)数组的维和向量的维是两个完全不同的概念。
数组的维是从数组元素排列后所形成的空间结构去定义的:
线性结构是一维,平面结构是二维,立体结构是三维,当然还有四维以至多维。
向量的维相当于一维数组中的元素个数。
Sym型数据是做符号运算前需要对符号变量进行定义
例如:
MATLAB不接受f=sin(x),系统会指出变量x无定义。
但是可以接受f='sin(x)',这时候f是一个字符串,没有任何含义,对字符串的内容不作任何分析。
用sym(symbolic工具箱里的函数)可以分析字符串的含义。
如:
x=sym('x')定义了x是一个字符变量,f=sin(x)就有了意义了。
计算时,用sym或syms(多个符号变量定义语句)定义变量,才可以直接把这些变量当数运算了。
即比如积分出来的是一串带x,y的函数式子,即使xy赋值,也是式子不是数值,此时只需double()一下就可以了。
Matlab中sin,cos函数都是以弧度为单位的,若想进行角度运算,只需要用sind,cosd即可。
Matlab反三角函数命令:
asin(),acos(),atan(),acot()生成的值为弧度值,即rad;
asind(),acosd(),atand(),acotd()生成的值为角度值;
将弧转换为角度的命令:
rad2deg()
deg2rad()作用则相反
函数:
Im2bw,getrangefromclass
matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscaleimage)转换成二值图像。
所谓二值图像,一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。
当然,也可以是其他任意两种颜色的组合。
在matlab命令行中键入docim2b或helpim2bw即可获得该函数的帮助信息。
阈值变换
比如数组a=[120,254,0,200,99];
设定一个阈值125,并对a进行阈值变换,那么a中凡是大于125的,则变为255,小于等于125的则变为0
(具体对临界情况处理可能不同,不过matlab中im2bw函数是按照上述方法处理的)
这样a经过阈值变换后变为[0,255,0,255,0]
语法
BW=im2bw(I,level)
BW=im2bw(X,map,level)
BW=im2bw(RGB,level)
其中level就是设置阈值的。
level取值范围[0,1]。
例如:
>>I=uint8([0,255,128,127,121,202]);
>>range=getrangefromclass(I)
range=
0255
>>I2=im2bw(I,0.5)
I2=011001
>>I3=im2uint8(I2)
I3=025525500255
getrangefromclass函数能够根据图像数据类型(I的数据类型是uint8)获得图像数据的取值范围。
通过这个例子,可以看到,图像I中每个像素的取值范围是0~255,设定阈值为0.5,则图像数据中凡是超过255*0.5=127.5的都变为255,否则都变为0。
函数:
graythresh
阈值都是表示为0-1的范围的,理解为一个系数吧。
graythresh你说的对,是使用otsu法求阈值的。
你一般自己选择阈值的话,需要不停地调整取值,才能选择合适的阈值,关键是整个图像只有一个阈值,graythresh会根据背景的不同,自动调整阈值。
size:
获取数组的行数和列数
length:
1、数组长度(即行数或列数中的较大值)2、屏幕上显示出向量a的长度
numel:
元素总数。
s=size(A),当只有一个输出参数时,返回一个行向量,该行向量的第一个元素时数组的行数,第二个元素是数组的列数。
[r,c]=size(A),当有两个输出参数时,size函数将数组的行数返回到第一个输出变量,将数组的列数返回到第二个输出变量。
如果在size函数的输入参数中再添加一项,并用1或2为该项赋值,则size将返回数组的行数或列数。
其中r=size(A,1)该语句返回的时数组A的行数,c=size(A,2)该语句返回的时数组A的列数。
n=numel(A)该语句返回数组中元素的总数。
n=length(A):
如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。
n=max(size(A):
若A为非空数组,返回A的最大维数;若A为空数组,返回A中最长的非0维数。
find
找到非零元素的索引和值
语法:
1. ind=find(X)
2. ind=find(X,k)
3. ind=find(X,k,'first')
4. ind=find(X,k,'last')
5. [row,col]=find(X,...)
6. [row,col,v]=find(X,...)
说明:
1. ind=find(X)
找出矩阵X中的所有非零元素,并将这些元素的线性索引值(linearindices:
按列)返回到向量ind中。
如果X是一个行向量,则ind是一个行向量;否则,ind是一个列向量。
如果X不含非零元素或是一个空矩阵,则ind是一个空矩阵。
2. ind=find(X,k)或3. ind=find(X,k,'first')
返回第一个非零元素k的索引值。
k必须是一个正数,但是它可以是任何数字数值类型。
4. ind=find(X,k,'last')
返回最后一个非零元素k的索引值。
5. [row,col]=find(X,...)
返回矩阵X中非零元素的行和列的索引值。
这个语法对于处理稀疏矩阵尤其有用。
如果X是一个N(N>2)维矩阵,col包括列的线性索引。
例如,一个5*7*3的矩阵X,有一个非零元素X(4,2,3),find函数将返回row=4和col=16。
也就是说,(第1页有7列)+(第2页有7列)+(第3页有2列)=16。
6. [row,col,v]=find(X,...)
返回X中非辑表示,则v是一个逻辑矩阵。
输出向量v包含通过评估X表示得到的逻辑矩阵的非零元素。
例如,
例7
如果X是一个全零向量,find(X)返回一个空矩阵。
例如indices=find([0;0;0])
indices=
Emptymatrix:
0-by-
Ismember:
判断a是否属于b,但是只能对向量判断判断,不能对数组进行判断(若想判断矩阵,可以使矩阵化为A(:
)(可以得到一个长向量,该向量的元素是按列一一叠加在一起的。
)的形式。
polyva是求值函数
polyfit是曲线拟合函数
polyfit用于多项式曲线拟合
p=polyfit(x,y,m)
其中,x,y为已知数据点向量,分别表示横,纵坐标,m为拟合多项式的次数,结果返回m次拟合多项式系数,从高次到低次存放在向量p中.
y0=polyval(p,x0)
可求得多项式在x0处的值y0
poly2sym:
将把系数数组转换为符号多项式
Reshape:
reshape把指定的矩阵改变形状,但是元素个数不变,
例如,行向量:
a=[123456]
执行下面语句把它变成3行2列:
b=reshape(a,3,2)
执行结果:
b=
14
25
36
若a=[123
456
789]
使用reshpe后想得到b=[123456789]
只需要将a转置一下就可以了:
b=reshape(a',1,9)
细胞组中序号不能为0.
Pdist函数:
用于求两点间距离
调用格式:
D=pdist(X,’distance’)说明:
用‘distance’指定的方法计算X数据矩阵中对象之间的距离。
X:
一个m×n的矩阵,m个样本,每个样本的变量数为n。
D:
一个行向量,维数为m*(m-1)/2,对应两两样本间的距离。
'distance'取值如下:
‘euclidean’:
欧氏距离(默认);
‘seuclidean’:
标准化欧氏距离;...
求矩阵中非零数的最小值:
min(A(A>0)),如果A中有负值,这个语句再讨论。
fliplr 左右翻转矩阵
语法:
B=fliplr(A)
将矩阵A的列绕垂直轴进行左右翻转matabc
如果A是一个行向量,fliplr(A)将A中元素的顺序进行翻转。
如果A是一个列向量,fliplr(A)还等于A。
举例说明:
例一:
如果A是一个3×2的矩阵
A=[14
25
36]
fliplr(A)
ans=[41 ; 52 ;63]
例二:
如果A是一个行向量
A=[13579]
fliplr(A)
ans=[97531]
例三:
如果A是一个列向量
A=[1
3
5
7
9]
fliplr(A)
ans=[1
3
5
7
9]
unique函数:
用来去除矩阵A中重复的元素,
比如说A=[1,2,3,3,4],那么unique(A)=[1,2,3,4];
如果A=[1,2,3;3,4,5],那么unique(A)=[1,2,3,4,5];
unique(A,'rows')用来去除矩阵A中重复的行,
比如说A=[1,2,3;4,5,6;1,2,3],
那么unique(A,'rows')=[1,2,3;4,5,6];
画图函数:
plot、line
Plot函数可以画已知x,y的图像,line只是连线,相当于plot加上holdon,plotyy可以绘制双纵坐标图形,但是plot绘制的都必须是xy已知的,可以用ezplot来绘制一元二元函数。
gca返回当前axes对象的句柄值
set(gca,'xgrid','on')绘制X轴垂直网格线
set(gca,'ydir','reverse');用于将Y轴反向
Matlab中Tick的设置及风格
(2010-08-1118:
01:
19)
转载▼
x=1:
8;
subplot(2,2,1)
plot(x)
%tickstyle0(auto)
subplot(2,2,2)
plot(x)
set(gca,'xtick',[1368]);%style1
set(gca,'ytick',[]);%style2
subplot(2,2,3)
plot(x)
set(gca,'xtick',[1368]);
set(gca,'xticklabel',sprintf('%03.4f|',get(gca,'xtick')));%style3
set(gca,'ytick',[2457]);
set(gca,'yticklabel',{'Two','Four','Five','Seven'});%style4
subplot(2,2,4)
plot(x)
set(gca,'xminortick','on');%style5
set(gca,'ticklength',[0.050.025]);%style6
set(gca,'tickdir','out');%style7
Text函数
功能:
在当前轴中创建text对象。
函数text是创建text图形句柄的低级函数。
可用该函数在图形中指定的位置上显示字符串。
用法:
text(x,y,'string')在图形中指定的位置(x,y)上显示字符串string
text(x,y,z,'string')在三维图形空间中的指定位置(x,y,z)上显示字符串string
text(x,y,z,’string’.'PropertyName',PropertyValue…)对引号中的文字string定位于用坐标轴指定的位置,且对指定的属性进行设置。
表7-6给出文字属性名、含义及属性值。
例子:
Forexample:
1.
x=[0:
0.2:
10];
y=x.^2;
plot(x,y);
holdon
text(3,9,'\leftarrow3^2=9','FontSize',18)
stem(3,9);
2.
fori=1:
12
x= ;
y= ;
text(x,y,num2str(i))
end;
这个例子中num2str(i)不需要加单引号,可以实现动态的编号。
gtext函数,你可以手动放置其位置。
表7-6
属性名
属性说明
属性值
定义字符串
Editing
能否对文字进行编辑
有效值:
on、off
缺省值:
off
Interpretation
TeX字符是否可用
有效值:
tex、none
缺省值:
tex
String
字符串(包括TeX字符串)
有效值:
可见字符串
放置字符串
Extent
text对象的范围(位置与大小)
有效值:
[left,bottom,width,height]
HorizontalAlignment
文字水平方向的对齐方式
有效值:
left(文本外框左边对齐,缺省对齐方式)、center(文本外框中间对齐)、right(文本外框右边对齐)
缺省值:
left
Position
文字范围的位置
有效值:
[x,y,z]直角坐标系
缺省值:
[](空矩阵)
Rotation
文字对象的方位角度
有效值:
标量(单位为度)
缺省值:
0
Units
文字范围与位置的单位
有效值:
pixels(屏幕上的像素点)、normalized(把屏幕看成一个长、宽为1的矩形)、inches(英寸)、centimeters(厘米)、points(图象点)、data
缺省值:
data
VerticalAlignment
文字垂直方向的对齐方式
有效值:
top(文本外框顶上对齐)、cap(文本字符顶上对齐)、middle(文本外框中间对齐)、baseline(文本字符底线齐)、bottom(文本外框底线对齐)
缺省值:
middle
指定文字字体
FontAngle
设置斜体文字模式
有效值:
normal(正常字体)、italic(斜体字)、oblique(斜角字)
缺省值:
normal
FontName
设置文字字体名称
有效值:
用户系统支持的字体名或者字符串FixedWidth。
缺省值为Helvetica
FontSize
文字字体大小
有效值:
结合字体单位的数值
缺省值为:
10points
FontUnits
设置属性FontSize的单位
有效值:
points(1点=1/72英寸)、normalized(把父对象坐标轴作为一单位长的一个整体;当改变坐标轴的尺寸时,系统会自动改变字体的大小)、inches(英寸)、Centimeters(厘米)、Pixels(像素)
缺省值:
points
FontWeight
设置文字字体的粗细
有效值:
light(细字体)、normal(正常字体)、demi(黑体字)、Bold(黑体字)
缺省值:
normal
控制文字外观
Clipping
设置坐标轴中矩形的剪辑模式
有效值:
on、off
on:
当文本超出坐标轴的矩形时,超出的部分不显示;
off:
当文本超出坐标轴的矩形时,超出的部分显示。
缺省值:
off
EraseMode
设置显示与擦除文字的模式。
这些模式对生成动画系列与改进文字的显示效果很有好处。
有效值:
normal、none、xor、background
缺省值:
normal
SelectionHighlight
设置选中文字是否突出显示
有效值:
on、off
缺省值:
on
Visible
设置文字是否可见
有效值:
on、off
缺省值:
on
Color
设置文字颜色
有效的颜色值:
ColorSpec
控制对文字对象的访问
HandleVisibility
设置文字对象句柄对其他函数是否可见
有效值:
on、callback、off
缺省值:
on
HitTest
设置文字对象能否成为当前对象(见图形CurrentObject属性)
有效值:
on、off
缺省值:
on
文字对象的一般信息
Children
文字对象的子对象(文字对象没有子对象)
有效值:
[](即空矩阵)
Parent
文字对象的父对象(通常为axes对象)
有效值:
axes的句柄
Seleted
设置文字是否显示出“选中”状态
有效值:
on、off
缺省值:
off
Tag
设置用户指定的标签
有效值:
任何字符串
缺省值:
’’(即空字符串)
Type
设置图形对象的类型(只读类型)
有效值:
字符串’text’
UserData
设置用户指定数据
有效值:
任何矩阵
缺省值:
[](即空矩阵)
控制回调例行执行程序
BusyAction
设置如何处理对文字回调过程中断的句柄
有效值:
cancel、queue
缺省值:
queue
ButtonDownFcn
设置当鼠标在文字上单击时,程序做出的反应(即执行回调程序)
有效值:
字符串
缺省值:
''(空字符串)
CreateFcn
设置当文字被创建时,程序做出的反应(即执行的回调程序)
有效值:
字符串
缺省值:
''(空字符串)
DeleteFcn
设置当文字被删除(通过关闭或删除操作)时,程序做出的反应(即执行的回调程序)
有效值:
字符串
缺省值:
''(空字符串)
Interruptible
设置回调过程是否可中断
有效值:
on、off
缺省值:
on(能中断)
UIContextMenu
设置与文字相关的菜单项
有效值:
用户相关菜单句柄
Texlabel:
:
如果要输出希腊字母,可以使用texlabel函数将希腊字母的变量名转化为希腊字母的函数,供函数title、xlabel、ylabel、zlabel或text使用。
texlabel转换MATLAB表达式为等价的Tex格式字符串。
它处理希腊字母的变量名为实际显示的希腊字母字符串。
希腊字母的变量名为“\”后面的字符串
Comet函数:
这是一个质点运动轨迹动画的绘制函数, comet(x,y,n),n代表额外定义的轨迹尾线的长度nXlength(y),n的范围在0到1之间,默认为0.1
subs是赋值函数,用数值替代符号变量替换函数
例如:
输入subs(a+b,a,4)意思就是把a用4替换掉,返回4+b
也可以替换多个变量,例如:
subs(cos(a)+sin(b),{a,b},[sym('alpha'),2])
分别用字符alpha替换a和2替换b,返回cos(alpha)+sin
(2)
若symsx
y=x^2;
subs(y,2)则是以2代替y中的变量,subs(y,p)则是以p代替y中的变量。
arrayfun函数:
[B1,...,Bm]=arrayfun(func,A1,...,An)
[B1,...,Bm]=arrayfun(func,A1,...,An,Name,Value)
其中func为函数,A相当于变量的值,可以是向量比如1:
10,若加上UniformOutput',false)则输出的是细胞组,否则默认的是输出向量,二者的不同在于,结果是标量与否,若是标量则不需要UniformOutput',false),若不是标量按照默认的设置输出则会出现错误。
symst
f=(12*t-t^2)^(1/2)*49*8.9/6;
arrayfun(@(x)int(f,t,0,x),1/100:
1/100:
3/100,'UniformOutput',false);
fminbnd函数:
用于求某个给定函数的最小值点。
使用方法是:
x=fminbnd(func,x1,x2)
func是函数句柄,然后x1和x2就是函数的区间,得到的结果就是使func取最小值的x值
当然也可以使用[x,fv]=fminbnd(func,x1,x2)的方式,这个时候fv就是函数的最小值,即有:
fv=f(x)
测试程序如下:
>>f=@(x)exp(x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab