Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

MATLAB实用教程(第三版)(郑阿奇) 学习笔记

1
阅读(17384)

第一部分 MATLAB常用的函数、指令等知识点整理

(注:按照书上出现的先后顺序)

1、常用基本指令

1.1、变量管理指令

1.1.1、save FileName 变量1 变量2 … 参数

|-将工作空间中的数据存放到MAT数据文件

|-变量1、变量2可以省略,省略时则保存工作空间的所有变量;参数为保存的方式,有-ASCII、-append等方式。

1.1.2、load FileName 变量1 变量2…

|-从数据文件中取出变量存放到工作空间

|-变量1、变量2可以省略,省略时装载所有的变量。

1.1.3、who

|-查阅MATLAB内存变量名(工作空间中的变量)。

1.1.4、whos

|-查阅MATLAB内存变量名(工作空间中的变量)、大小、类型和字节数。

1.1.5、clear 变量名1 变量名2 …

|-删除工作空间中的变量

|-变量名1、变量名2可以省略,省略时删除所有的变量。

1.1.6、i=exist(‘X’)

|-查询工作空间中是否存在某个变量

|-i=1:表示存在一个变量名为‘X’的变量;

|-i=2:表示存在一个名为‘X.m’的文件;

|-i=3:表示存在一个名为‘X.mex’的文件;

|-i=4:表示存在一个名为‘X.mdl’文件;

|-i=5:表示存在一个名为‘X’的内部函数;

|-i=0:表示不存在以上的变量或者文件。

1.2、帮助指令

1.2.1、help topic

|-显示MATLAB命令和M文件的帮助信息

1.2.2、lookfor topic 参数

|-在所有的帮助条目中搜索关键字,常用来查找具有某种功能而不知道准确名字的命令

|-当参数为‘-all’时,则在所有的M文件中搜索关键字。

1.2.3、doc topic

|-打开并显示帮助窗口。

1.3、文件管理命令

1.3.1、what

|-列出当前目录下的M、MAT、MEX文件清单。

1.3.2、dir 文件名

|-显示指定M文件的内容。

1.3.3、which 文件名

|-指出M文件、MEX文件、MAT文件、工作空间向量、内置函数或Simulink模型所在的目录。

1.3.4、matlabroot

|-返回安装MATLAB的根目录。

2、MATLAB数值计算

2.1、数据类型

2.1.1、整型:8种,分别为uint8、uint16、uint32、uint64、int8、int16、int32、int64。

2.1.2、浮点型:2中,分别为single、double。

2.1.3、字符型:使用‘’括起来,使用ASCII码形式存放,每个字符占2个字节。

2.1.4、逻辑型:表示true(1)和false(0),每个逻辑型数据占1个字节。

2.1.5、复数:使用i和j表示需要虚数单位:

|-real:计算实部;

|-imag:计算虚部;

|-abs:计算幅值;

|-angle:计算相角。

2.1.6、特殊变量:

|-ans:默认的运算结果变量名;

|-pi:圆周率;

|-eps:计算机的最小数;

|-flops:浮点运算数;

|-inf:无穷大,如1/0;

|-Nan或者nan:非数,如0/0、∞/∞、0×∞;

|-i或者j:虚数;

|-nargin:函数的输入变量数目;

|-nargout:函数的输出变量数目;

|-realmin:最小的可用正实数;

|-realmax:最大的可用正实数。

2.2、矩阵输入

2.2.1、from:step:to

|-from、step和to分别表示开始值、步长和结束值。当step省略时默认为step=1。

2.2.2、linspace(a,b,n)

|-用来生产线性等分向量

|-a、b、n分别表示开始值、结束值和元素个数,如果n省略则默认为100。

2.2.3、logspace(a,b,n)

|-用来生成对数等分向量

|-a、b、n分别表示开始值、结束值和元素个数,如果n省略则默认为50。

2.3、特殊矩阵

2.3.1、zeros(m,n)

|-产生m×n的全0矩阵,只有一个参数时,产生方阵

2.3.2、ones(m,n)

|-产生m×n的全1矩阵,只有一个参数时,产生方阵

2.3.3、rand(m,n)

|-产生均匀分布的随机矩阵,元素取值范围为0.0-1.0,只有一个参数时,产生方阵

2.3.4、randn(m,n)

|-产生正态分布的随机矩阵,只有一个参数时,产生方阵

2.3.5、magic(n)

|-产生n阶魔方矩阵(矩阵的行、列和对角线上的元素之和相等)

2.3.6、eye(m,n)

|-产生m×n的单位矩阵,只有一个参数时,产生方阵

2.3.7、true(m,n)、false(m,n)

|-产生逻辑矩阵,分别全为true和false,只有一个参数时,产生方阵

2.4、矩阵元素

2.4.1、矩阵的全下标表示法:

|-即由行下标和列下标表示。

2.4.2、矩阵的单下标表示法:

|-就是把矩阵的所有按先左后右的次序连接成“一维长列”,然后对元素进行编号。

2.5、子矩阵的产生方式

2.5.1、a([1 3],[2 3])

|-取出行数为1、3,列数为2、3的元素构成子矩阵

2.5.2、a(1:3,2:3)

|-取出行数为1-3,列数为2-3的元素构成子矩阵

2.5.3、a(:,3)

|-取出所有的行数,列数为3的元素构成子矩阵

2.5.4、a(1:3,end)

|-取出行数为1-3,最后一列的元素构成子矩阵

2.5.5、a([1 3;2 6])

|-取出下标为1、3、2、6的元素构成子矩阵

2.5.6、逻辑矩阵产生法

|-逻辑矩阵的大小需和原矩阵相同,取逻辑矩阵不为0的元素对应的元素构成子矩阵

2.6、矩阵的赋值

2.6.1、全下标方式:

|-A(i,j)=B,给A矩阵的部分元素赋值,则B矩阵的行列数必须的等于A矩阵的行列数

2.6.2、单下标方式:

|-A(s)=b,b为向量,元素的个数必须等于A矩阵的元素的个数

2.6.3、全元素方式:

|-A(:)=B,给A矩阵的所有元素赋值则B矩阵的元素总数必须等于A矩阵的元素总数,但行列数不一定相等。

2.6.4、生成大矩阵:

|-通过[]将小矩阵联结起来可以生成一个较大的矩阵

2.7、矩阵的翻转

2.7.1、triu(X)

|-产生X矩阵的上三角矩阵,其余元素补0

2.7.2、tril(X)

|-产生X矩阵的下三角矩阵,其余元素补0

2.7.3、flipud(X)

|-使矩阵X沿水平轴上下翻转

2.7.4、fliplr(X)

|-使矩阵X沿垂直轴左右翻转

2.7.5、flipdim(X,dim)

|-使矩阵X沿特定的轴翻转,dim=1时,按行维翻转dim=2时,按列维翻转

2.7.6、rot90(X)

|-使矩阵X逆时针旋转90°

2.8、字符串函数

2.8.1、length

|-用来计算字符串的长度(即组成字符的个数)

2.8.2、double

|-用来将字符型转化为以ASCII码为数值的double型数据,包括空格(ASCII码为32)

2.8.3、char

|-用来将数值型按照ASCII码转化成字符型,省略小数点后的数据

2.8.4、class或ischar

|-用来判断数据类型是否为字符串

|-class返回char,ischar返回1,则表示为字符串

|-class还可以用于测试其他数据类型

2.8.5、strcmp(x,y)

|-比较字符串x和y的内容是否相同

|-返回值为1表示相同,为0表示不同

2.8.6、findstr(x,x1)

|-寻找在某个长字符串x中的子字符串x1,返回其起始位置

2.8.7、deblank(x)

|-删除字符串末尾的空格

2.8.8、eval(x)

|-执行字符串,可将字符串转换成为数字型

2.8.9、disp(x)

|-显示字符串内容

2.8.10、str2mat、strvcat、char

|-构造字符串矩阵,不必考虑每行的字符数是否相等,总是按照最长的字符串进行设置,不足的字符串的末尾将用空格补齐。

2.9、常用矩阵运算函数

2.9.1、det(x)

|-计算方针的行列式

2.9.2、rank(x)

|-求矩阵的秩

2.9.3、inv(x)

|-求矩阵的逆阵

2.9.4、[v,d]=eig(x)

|-计算矩阵的特征值和特征向量

|-v为特征向量,d为特征值

2.9.5、diag(x)

|-产生x矩阵的对角阵

2.9.6、[l,u]=lu(x)

|-方阵分解为一个准下三角方阵和一个上三角方阵的乘积

2.9.7、[q,r]=qr(x)

|-m×n阶矩阵x分解为一个正交方阵q和一个与x同阶的上三角矩阵r的乘积。

2.10、矩阵和数组的算术运算

2.10.1、加减法

|-矩阵和数组的加减法运算规则一致,必须大小相同才可以相加减

2.10.2、乘法

|-矩阵的乘法A*B,矩阵A的列数必须等于矩阵B的行数

|-数组的乘法A.*B,表示数组A和B中的元素依次相乘

2.10.3、除法

|-A\B是方程A*X=B的解,即A\B=A-1*B

|-A/B是方程X*A=B的解,即A/B=A*B-1

|-A.\B表示数组的左除,即B除A

|-A./B表示数组的右除,即A除B

2.10.4、矩阵的乘方:A^B

|-当A为矩阵时,必须为方阵

|-B为正整数,表示A矩阵自乘B次;

|-B为负整数,表示先将矩阵A求逆,在自乘|B|次,仅对非奇异矩阵成立;

|-B为矩阵时,不能运算,报错;

|-B为非整数,涉及特征值和特征向量的求解,将A分解为A=W*D/W,D为对 角阵,则有运算式A^B=W*D^B/W;

|-当A为标量时

|-B为矩阵时,将A分解为将A分解为A=W*D/W,D为对角阵,则有运算式 A^B=W*diag(D^B)/W;

2.10.5、数组的乘方:A.^B

|-A为矩阵,B为标量时,将A(i,j)自乘B次;

|-A为矩阵,B为矩阵时,A和B数组必须大小相同,则将A(i,j)自乘B(i,j)次;

|-A为标量,B为矩阵时,将A^B(i,j)构成新矩阵的第i行低j列元素。

2.10.6、转置

|-A’表示矩阵A的转置,如果A为复数矩阵,则为共轭转置

|-A.’表示数组A的转置

2.11、矩阵和数组的数学函数

2.11.1、基本数学函数:分别对每一个元素进行运算

|-sin、cos、tan、asin、acos、atan、atan2、sinh、cosh、tanh、sqrt

2.11.2、abs

|-绝对值或者复数求模函数,也是分别对每一个元素进行运算

2.11.3、复数相关函数

|-real、imag

|-conj用于求解复数共轭

2.11.4、近似函数

|-rat:有理数近似

|-round:四舍五入到整数

|-fix:向最接近0取整

|-floor:向最接近-∞取整

|-ceil:向最接近+∞取整

2.11.5、其他常用数学函数

|-sign:符号函数

|-mod:模数求余

|-rem:求余数留数

|-log:以e为底的对数(自然对数)

|-log10:以10为底的对数

|-pow2:2的幂

|-bessel:贝塞尔函数

|-gamma:伽马函数

2.11.6、特殊的矩阵函数

|-expm、logm、sqrtm:均以矩阵为对象操作,而不是操作矩阵中的元素

|-funm(a,‘fun’):a必须为方阵,fun为函数名

|-例如:funm(a,‘sqrt’)等价于sqrtm(a)

2.12、关系运算符与逻辑运算符

2.12.1、关系运算符:

|-关系操作符<、<=和>、>=仅对参加比较变量的实部进行比较,而==和~=同时对实 部和虚部进行比较

2.12.2、逻辑运算符:

|-通用型:&、|、~(非)、xor(异或)

|-先决型:&&(先决与)、||(先决或)。只能用于标量的运算。

2.13、常用的关系逻辑函数

2.13.1、all(a)

|-判断a的向量元素是否全非0,全非0则为1

2.13.2、any(a)

|-判断a的向量元素中是否有非0的元素,有则为1

2.13.3、isequal(a,b)

|-判断a,b对应元素是否完全相等,相等为1(按全下标方式比较)

2.13.4、isempty(a)

|-判断a是否为空矩阵,为空则为1,否则为0

2.13.5、isfinite(a)

|-判断a的各个元素值是否为有限值,是则为1

2.13.6、isnumeric(a)

|-判断a中的元素是否全为数值型元素,是则为1

2.13.7、isinf(a)

|-判断a的各个元素值是否为无穷大,是则为1

2.13.8、isnan(a)

|-判断a的各个元素值是否为NAN,是则为1

2.13.9、isreal(a)

|-判断a中的元素是否全为实数,是则为1

2.13.10、isprimme(a)

|-判断a中的各个元素值是否为素数(质数),是则为1

2.13.11、isspace(a)

|-判断a中的各个元素是否为空格,是则为1

2.13.12、find(a)

|-寻找a中非0元素的下标(按照单下标方式查找)

2.14、运算符的优先级

2.14.1、运算符的优先级顺序(降序排列)

|- ’(矩阵转置)、^(矩阵幂)、.’(数组转置)、.^(数组幂)

|- ~(逻辑非)

|- *(乘)、/(左除)、\(右除)、.*(点乘)、./(点左除)、.\(点右除)

|- +(加)、-(减)

|- :(冒号)

|- <、<=、>、>=、~=、==

|- &(逻辑与)

|- |(逻辑或)

|- &&(先决与)

|- ||(先决或)

2.15、多维数组

2.15.1、cat(w,p1,p2,…)

|-将一系列的数组沿着特定的维连接成一个多维数组

|-w表示是沿着第几维连接数组p1、p2等

2.15.2、repmat(p,行 页 列 …)

|-按照指定行列放置模块数组生产多维数组

|-p是用来放置的模块数组,后面的变量要放在指定的各维

2.15.3、reshape(p,行 页 列 …)

|-在总元素不变的前提下重新确定数组的行列数来重组数组

|-p是待重组的数组,后面的变量是重新生产的数组的行数、列数和页数

2.15.4、ndims(p)

|-直接给出数组的维数

2.15.5、给出数组各维的大小

|-[m,n,…]=size(p) 给出数组各维的大小

|-m=size(p,x) 得出某一维的大小

2.15.6、length(p)

|-返回行数或者列数的最大值

|-等价于max(size(p))

2.16、日期和时间

2.16.1、日期格式

|-日期字符串:01/01/2007、01-Jan-2007等

|-连续的日期数值:以公元元年1月1日开始的,日期数值表示当前时间与开始时 间的间隔天数

|-日期向量:包括6个数字的数组,分表为[year month day hour minute second], 日期向量一般不参加运算

2.16.2、日期格式转换

|-datestr:将日期格式转换为字符串格式

|-datenum:将日期格式转换为连续的日期数值格式

|-datevec:将日期格式转换为日期向量格式

2.16.3、获取系统时间

|-date:按照日期字符串格式输出当前系统时间

|-clock:按照日期向量格式获取当前系统时间

|-now:按照连续的日期数值格式获取当前的系统时间

2.16.4、datastr(d,f)

|-按照指定的字符串格式显示日期

|-参数d为日期,f为格式,例如‘dd-mm-yyyy’、‘mm/dd/yy’等

2.16.5、计时函数

|-cputime:返回自MATLAB启动以来的CPU时间

|-tic/toc:tic用于启动定时器,toc用于终止定时器,同时返回程序运行的时间

|-t=etime(t1,t0):计算时间间隔

2.17、稀疏矩阵

2.17.1、sparse

|-sparse(i,j,s,m,n)

|-直接创建稀疏矩阵

|-i,j为非0元素的行列下标;s是非0元素所形成的向量;m,n是s的行 列维数,可省略;i,j,s都是长度相同的向量,生成的矩阵的元素s(k)下标 分别为i(k)和j(k)

|-sparse(p)

|-由全元素矩阵产生

|-p为全元素矩阵

2.17.2、spdiags(D,k,m,n)

|-矩阵D的每一列代表矩阵的对角线向量;k代表对角线的位置(0代表主对角线,-1代表向下位移一单位的次对角线,1代表向上位移一单位的次对角线,一次类推); m,n分别代表矩阵的行,列维数。

2.17.3、返回稀疏矩阵的元素个数

|-nnz:可返回稀疏矩阵的非0元素个数

|-nonzeros:可返回1个包含所有非0元素的向量

|-nzmax:返回最大的非0元素个数

2.18、多项式

2.18.1、polyval(p.s)

|-多项式求值

|-p为多项式,s为给定矩阵

2.18.2、r=roots(p)

|-多项式求根

|-p为多项式,r为求得的根,以向量的形式保存

2.18.3、p=ploy(r)

|-与roots相反,此函数用于根据多项式的根计算多项式的系数

2.18.4、p=ploy(s)

|-求解特征多项式

|-s必须为方阵,p为特征多项式

2.18.5、[r,p,k]=residue(b,a)

|-部分分式展开

|-b和a分别是分子和分母多项式的系数行向量;r为留数行向量;p为极点行向 量;k为直项行向量

2.18.6、p=conv(p1,p2)

|-p是多项式p1和p2的乘积多项式

2.18.7、[q,r]=deconv(p1,p2)

|-除法不一定除尽,可能会有余子式,q为商多项式,r为余子式

2.18.8、polyder

|-多项式的微分函数

|-MATLAB中没有专用的积分函数,但是却可以使用[p./length(p):-1:1,k]的方式 完成

2.18.9、p=polyfit(x,y,n)

|-多项式拟合使用一个多项式逼近一组给定的数据,准则是最小二乘法

|-x,y向量分别是n个数据点的横坐标、纵坐标;n是用来拟合多项式的阶次,p 为n+1个系数构成的行向量

2.18.10、yi=interp1(x,y,xi,’method’)

|-插值运算根据数据点的规律,找到一个多项式表达式可以连接的2个点,插值得 出相邻数据点之间的数值

|-x,y为行向量,xi为插值范围内的任意点的x的坐标,yi则是运算之后求得对 应的y的坐标;method是插值函数的类型,其中,linear为线性插值(默认)、nearest 为最接近的相邻点插值,spline为三次样条插值,cubic为三次插值

2.19、元胞数组与结构数组

2.19.1、元胞数组的创建方式

|-直接使用{}创建

|-由各个元胞创建

|-由各个元胞内容创建

2.19.2、结构数组的创建方式

|-使用.操作符直接创建

|-使用struct函数创建

2.19.3、结构数组的获取与设置

|-使用.操作符直接获取

|-使用getfield获取:getfield(array,{array_index},field,{field_index})

|-使用setfield设置:setfield(array,{array_index},field,{field_index}, V),V是需要设置的值

|-使用fieldnames获取结构数组的所有域

2.20、数据统计分析函数

2.20.1、max(x)、min(x)、mean(x)

|-获得矩阵x中各的最大值、最小值、平均值

2.20.2、std(x)

|-矩阵中各标准差,即各个元素与该列平均值之差的平方和开方

2.20.3、median(x)

|-矩阵中各的中间元素

2.20.4、var(x)

|-矩阵中各的方差

2.20.5、C=cov(x)

|-矩阵中各间的协方差

2.20.6、S=corrcoef(x)

|-矩阵中各列间的相关系数矩阵

2.20.7、[S,k]=sort(X,n)

|-沿第n维按模增大重新排序,k为S元素的原位置

2.21、差分与积分函数

2.21.1、diff(X,m,n)

|-沿第n维求第m阶列向量差分,差分是求相邻行之间的差,结果会少掉一行

2.21.2、[fx,fy]=gradient(Z)

|-对Z求x,y方向二等数值梯度

2.21.3、sum(X)

|-求矩阵各列元素之和

2.21.4、cumsum(X,n)

|-沿第n维列累计求和

2.21.5、cumprod(X,n)

|-沿第n维列求累计成绩

2.21.6、trapz(X,y)

|-阶梯法求积分近似于求元素和,把相邻两点数据的平均值乘以步长表示面积。

2.21.7、cumtrapz(X,y,n)

|-用阶梯法沿第n维求函数y对自变量x累计积分

2.22、卷积与傅里叶变换

2.22.1、conv(x,y)

|-计算x与y的卷积

2.22.2、[q,r]=deconv(x,y)

|-解卷积运算

2.22.3、X=fft(x,N)

|-一维快速傅里叶变换

|-x可以是向量、矩阵或者多维数组;N为输入变量x的序列长度,可以省略,如果X的长度小于N,则会自动补0;如果X的长度大于N,则会自动截断;当N取2的整数幂时,傅里叶变换的计算速度最快。通常取大于且有最靠近x长度的幂次。

2.22.4、X=ifft(x,N)

|-一维快速傅里叶逆变换

2.22.5、cross(a,b)

|-向量的矢量积(叉乘)

2.22.6、dot(a,b)

|-向量的数量级(点乘)

3、MATLAB符号计算

3.1、符号表达式的建立

3.1.1、sym(‘常量’,参数)

|-创建符号常量

|-参数可以省略,当使用参数时,则将数值转换成某种格式的符号常量

|- d:返回最接近的十进制数

|- f:返回该符号值最接近的浮点表示

|- r:返回该符号最接近的有理数型

|- e:返回最接近的带有机器浮点的误差有理值

|- positive:限定为正数

|- real:限定为实数

|- unreal:限定为非实数

3.1.2、syms(arg1,arg2,…,参数)

|-同时创建多个符号常量,参数使用方法与sym一致

|-可以将该函数的括号省略,写成指令的形式

3.1.3、Symbolic Math Toolbox中的算术运算

|-数值型:MATLAB的浮点运算

|-有理数型:精确地符号运算

|-VPA型:任意精度的运算

|-digits(n):设定默认的精度

|-S=vpa(s,n):将s表示为有n位有效数的符号对象

3.2、符号表达式的操作与转换

3.2.1、自由变量的确定原则

|-小写字母i和j不能作为自由变量

|-符号表达式中如果有多个符号变量,则按照以下的顺序选择自由变量:

|-首先选择x,如果没有x,则选择字母顺序中最接近x的字符变量,在x后 面的优先

|-大写字母比所有的小写字母都靠后

3.2.2、symvar(EXPR)

|-symvar函数列出除了i,j,pi,inf,nan,eps和函数名之外的符号变量,返 回值是元胞数组

3.2.3、findsym(EXPR,n)

|-EXPR可以是符号表达式或者符号矩阵;n为按顺序得出符号变量的个数,当n 省略时,则不按顺序得出EXPR中所有的符号变量

3.2.4、多项式化简函数表

|-pretty:给出排版形式的输出结果

|-collect:表示为合并同类项多项式

|-expand:表示为多项式形式

|-horner:表示为嵌套的形式

|-factor:表示为因式的形式

|-simplify:利用多种代数恒等式对符号表达式进行化简

|-simple:在多种化简方式中寻找最优

3.2.5、符号表达式的替换

|-subexpr(s,s1)

|-利用符号变量s1置换s中的子表达式

|-只有比较长的子表达式才被置换,比较短的子表达式,即使重复出现多次, 也不被置换

|-subs(s,old,new)、subs(s,new)

|-用new替换符号表达式s中的old变量

|-当old省略是,则替换自由变量

3.3、符号表达式的运算

3.3.1、求反函数和复合函数

|-finverse(f,v)

|-对指定自变量v的函数f(v)求反函数

|-compose(f,g)

|-求f(x)和g(x)的复合函数f(g(y))

|-compose(f,g,z)

|-求f(x)和g(x)的复合函数f(g(z))

|-compose(f,g,x,z)

|-以x为自变量构成复合函数f(g(z))

|-compose(f,g,x,y,z)

|-以x为自变量构成复合函数f(g(z)),并用z替换y

3.3.2、符号表达式的转换

|-sym2poly:将构成多项式的符号表达式转换为按降幂排列的行向量

|-poly2sym:将按降幂排列的行向量转换成符号表达式

3.3.3、通分后提取分子分母

|-[n,d]=numden(f):n为分子;d为分母,f为分式

3.3.4、符号极限

|-limit(f):对x求趋近于0的极限

|-limit(f,x,a):对x求趋近于a的极限

|-limit(f,x,a,left):对x求趋近于a的左极限

|-limit(f,x,a,right):对x求趋近于a的右极限

3.3.5、符号微分

|-diff(f):对自由变量求一阶微分

|-diff(f,t):对变量t求一阶微分

|-diff(f,t,n):对变量t求n节微分,t可以省略

3.3.6、符号积分

|-int(f,t):求符号变量t的不定积分,t可省略

|-int(f,t,a,b):求符号变量t的定积分,区间为[a,b]

3.3.7、符号级数

|-symsum(s,x,a,b)

|-x为自变量,可省略,s为符号表达式

|-计算级数从a项到第b项的和

|-taylor(f,x,n)

|-对f进行泰勒级数展开,展开至第n项

3.3.8、符号的积分变换(三大变换)

|-F=fourier(f,t,w)

|-傅里叶变换

|-w可省略,省略默认为w,t可省略,省略默认为自由变量

|-f=ifourier(F,w,t)

|-傅里叶反变换

|-F=laplace(f,t,s)

|-拉普拉斯变换

|-f=ilaplace(F,s,t)

|-拉普拉斯反变换

|-F=ztrans(f,n,z)

|-Z变换

|-f=iztrans(F,z,n)

|-逆Z变换

3.3.9、符号方程组的求解

|-solve(eq1,eq2,v1,v2,…)

|-求方程组关于指定变量的解

|-dsolve(eq1,eq2,con1,con2,v1,v2)

|-求解微分方程组

|-eq为微分方程,con为初始条件,v为指定的自由变量

|-一阶导数表示为Dy,n阶导数表示为Dny

|-微分初始条件应写成y(a)=b,Dy(c)=d的形式,当初始条件少于微分方程组时,在所得解中会出现任意常数符C1,C2……

3.4、符号函数的绘图命令

3.4.1、ezplot(F,[xmin,xmax],fig)

|-F是将要画的符号函数,[xmin,xmax]是绘图的自变量范围,省略是默认值 为[-2π,2π],fig为指定的图形窗口,省略是默认为当前的图形窗口

3.4.2、ezplot3(x,y,z,[tmin,tmax],animate)

|-x、y、z分比为符号表达式x(t)、y(t)、z(t)

|-[tmin,tmax]是t的范围

|-animate是可选的动画绘制曲线过程,可省略

3.4.3、其他的绘图命令

|-ezcontour:画等高线

|-ezcontourf:画带填充颜色的等高线

|-ezmesh:画三维网线图

|-ezmeshc:画带等高线的三维网线图

|-ezpolar:画极坐标图

|-ezsurf:画三维曲面图

|-ezsurfc:画带登高先的三维曲面图

4、MATLAB计算的可视化

4.1、绘图基本知识

4.1.1、基本绘图命令

|-plot(x)

|-绘制以x为纵坐标的二维曲线

|-当x为m×n的矩阵时,则矩阵的每一列画一条线,共话n条曲线

|-当x为复数时,以实部作为横坐标,虚部作为纵坐标

|-plot(x,y):绘制以x为横坐标,y为纵坐标的二维曲线

|-plot(x,y1,x,y2,x,y3):绘制多条曲线

4.1.2、绘制二维、三维图形的一般步骤

a)曲线数据准备:对于二维曲线,准备横坐标和纵坐标的数据变量;对于三维曲面, 准备矩阵参变量和对应的函数值;

b)指定图形窗口和子图的位置:默认时,打开Figure No.1窗口或者当前窗口、当 前子图;也可以打开指定的图形窗口和子图

c)设置曲线的绘制方式:线形、色彩、数据点形;

d)设置坐标轴:坐标的范围、刻度和坐标分格;

e)图形注释:图名、坐标名、图例、文字说明;

f)着色、明暗、灯光、材质处理(仅对三维图形使用);

g)视点、三度(纵横高)比(仅对三维图形使用);

h)图形的精细修饰(图形句柄操作):利用对象的属性值进行设置;利用图形窗口 工具条进行设置。

4.1.3、多个图形的绘制方法

|-figure(n):打开n个图形窗口

|-subplot(m,n,k):使m×n幅中的第k幅图成为当前图,其中的,号可以省略

|-同一个窗口多次叠加绘图

|-hold on:使当前的坐标系和图形保留

|-hold off:是当前的坐标系和图形不保留

|-hold:在以上的2个命令中切换

|-plotyy(x1,y1,x2,y2)

|-双纵坐标绘图

|-左纵轴用于绘制x1,y1的数据,…

|-坐标轴的刻度和范围都是自动产生的

4.2、曲线的线形、颜色和数据点形

plot(x,y,s)中的s为控制字符串,可以取下列的值:

4.2.1、颜色类

|-y:黄色

|-m:品红色(紫色)

|-c:青色

|-r:红色

|-g:绿色

|-b:蓝色

|-w:白色

|-k:黑色

4.2.2、数据点间的连线

|-实线(默认): -

|-点线: :

|-点画线: -.

|-虚线: --

4.2.3、数据点形

|-实点标记: .

|-圆圈标记: o

|-叉号标记: ×

|-十字形: +

|-星号标记: *

|-方块标记: s

|-钻石型标记: d

|-向下三角形标记: v

|-向上三角形标记: ^

|-向左三角形标记: <

|-向右三角形标记: >

|-五角星标记: p

|-六连型标记: h

4.3、坐标轴设置与文字标注

4.3.1、plot命令常用的坐标轴控制命令

|-axis auto: 使用默认设置

|-axis manual: 使当前坐标范围不变

|-axis off: 取消轴背景

|-axis on: 使用轴背景

|-axis ij: 矩阵式坐标,原点在左上方

|-axis xy: 普通直角坐标,原点在左下方

|-axis([xmin,xmax,ymin,ymax]):设定坐标的范围,可以使用inf

|-axis equal: 纵、横轴采用等长刻度

|-axis fill: 在manual方式下起作用,是坐标充满整个绘图区

|-axis image: 纵、横轴采用等长刻度,且坐标框紧贴数据范围

|-axis normal: 默认矩形坐标系

|-axis tight: 把数据范围直接设置为坐标范围

|-axis square: 产生正方形坐标系

|-axis vis3d: 保持高、宽比不变,用于三维旋转时,避免图形的 大小变换

4.3.2、分割线

|-grid on: 显示分格线

|-grid off: 不显示分格线

|-grid: 在以上2个命令之间切换

|-MATLAB默认不显示分格线,分格线的疏密取决于坐标刻度

4.3.3、文字标注

|-title(s):添加图名

|-xlabel(s)、ylabel(s):添加坐标轴名

|-legend(s,pos)

|-在指定位置添加图例

|-pos取值对照: 0 自动取得最佳位置

1 右上角(默认)

2 左上角

3 左下角

4 右下角

-1 图右侧

|-legend off:删除当前的图例

4.3.4、添加文字注释

|-text(xt,yt,s):在图形(xt,yt)处书写文字注释

4.4、特殊图形的绘制

4.4.1、条形图

|-bar(x,y,width,参数)

|-bar3(x,y,width,参数):三维条形图

4.4.2、面积图

|-area(y)

|-area(x,y)

|-使用fill函数填充,可以达到实心的效果

4.4.3、直方图

|-hist(y,m)

4.4.4、饼型图

|-pie(x,explode,label)

|-pie3(x,explode,label):三维饼型图

4.4.5、离散数据图

|-stem:火柴杆图

|-stairs:阶梯图

|-scatter:点图

4.5、特殊坐标系绘图

4.5.1、对数坐标绘图

|-semilogx(x,y,参数) 绘制x为对数坐标的曲线

|-semilogy(x,y,参数)

|-loglog(x,y,参数) 绘制x和y都是对数坐标的曲线

4.5.2、极坐标绘图

|-polar(theta,radius,参数)

|-tjeta为相角,radius是离原点的距离

4.5.3、等高线图

|-contour(Z,n);绘制Z矩阵的等高线

|-contour(x,y,z,n):

|-contour3:绘制三维等高线

4.5.4、复向量图

|-compass、feather

4.6、绘制三维图形

4.6.1、plot3(x,y,z,s)、plot3(x1,y1,z1,s1,x2,y2,z2,s2,…)

|-s为控制字符串

4.6.2、三维网线图

|-mesh(z)

|-mesh(x,y,x,c);c为指定各点的用色矩阵

4.6.3、三维曲面图

|-surf(z)

|-surf(x,y,z,c)

5、MATLAB程序设计

5.1、程序流程控制

5.1.1、for…end结构

|- for 循环变量=array

循环体

end

|-循环体执行的次数就是array的列数,array可以是向量,也可是矩阵

5.1.2、while…end结构

|- while 表达式

循环体

end

|-注意nan算作假!

5.1.3、if…else…end结构

|- if 条件1

语句段1

elseif 条件2

语句段2

else

语句段3

end

5.1.4、switch…case结构

|- switch 开关表达式

case 表达式1

语句段1

case 表达式2

语句段2

……

otherwise

语句段n

end

5.1.5、try…catch…end试探结构

|- try

语句段1

catch

语句段2

end

|-首先试探性的执行语句段1,如果执行过程中出现错误,则将错误信息赋值给保 留的lasterr变量,并放弃该语句,转而执行语句段2,当执行语句段2又出现错 误时,则终止该结构

|-运行结束后,可调用lasterr函数查询错误原因,空字符串,表示成功执行

5.1.6、流程控制语句

|-break

|-continue

|-return

|-pause:

|-用于使程序暂停,等待用户按任意键继续,用于程序调试

|-pause(n):暂停n秒

|-keyboard:用于时程序暂停运行,等待键盘命令,执行完自己的工作后,输入 return语句,程序就继续运行。该命令用于在程序调试或程序执行时修改变量。

|-input:用于提示用户应从键盘输入,并接受该输入

第二部分 MATLAB常用图像处理工具箱函数

6、MATLAB图像工具箱函数

6.1、图像显示

|-colorbar:显示颜色条

|-colormap:建立当前图像的颜色查找表

|-getimage:从坐标轴获得图像数据

|-image:将矩阵显示为图像,可返回一个图像的句柄给一个image对象

|-imshow:显示图像

|-mortgage:在矩形框中显示多幅图像

|-immovie:创建多帧索引图的电影动画

|-subimage:在一幅图中显示多幅图像

|-subplot:将多个子图画到一个图上

|-truesize:调整图像显示尺寸

|-warp:将图像显示到纹理映射表面

|-zoom:缩放图像

6.2、文件I/O

|-imfinfo:返回图像文件信息

|-imread:从图像文件中读取图像

|-imwrite:将图像文件写入到图像文件中

6.3、代数操作

|-imabsdiff:两幅图像的绝对差值

|-imadd:两幅图像的加法

|-imcomplement:反色

|-imdivide:两幅图像的除法

|-imlincomb:两幅图像的线性组合

|-immultiply:两幅图像的乘法

|-imsubstruct:两幅图像的减法

6.4、几何操作

|-imcrop:在指定的矩形裁剪图像

|-imresize:用指定的插值方法调整图像的大小

|-imrotate:使用指定的插值方法按逆时针方向将图像旋转任意指定的角度

|-interp2:二维数据插值

6.5、像素和统计处理

|-col2im:重排矩阵列为图像块

|-im2col:重排图像块为矩阵列

|-corr2:计算两幅图像(矩阵)的二维相关系数

|-imcontour:创建图像数据的轮廓图

|-imfeature:计算图像区域的特征尺寸

|-imhist:计算并显示图像数据的直方图

|-impixel:确定像素的颜色

|-improfile:沿线段计算剖面图的像素值

|-mean2:计算矩阵元素的平均值

|-mean:求向量平均值

|-median:求向量中值

|-numel:求图像像素的总数

|-pixval:显示图像像素的信息

6.6、图像复原

|-deconvblind:盲去卷积复原图像

|-deconvreg:规则化滤波器复原图像

|-deconvwnr:维纳滤波器复原图像

|-edgetaper:使图像边缘振铃逐渐减弱

6.7、图像分析

|-edge:识别灰度图像中的边界

|-qtdecomp:执行四叉树分解

|-qtgetblk:获得四叉树分解块值

|-qtsetblk:设置四叉树分解块值

6.8、图像增强

|-imadjust:对比度调整

|-histeq:直方图均衡

|-imnoise:给图像增加噪声,包括高斯白噪声、黑白像素点噪声、乘积性噪声

|-medfilt2:二维中值滤波器

|-ordfilt2:顺序统计滤波器

|-wiener2:二维自适应除噪滤波器

6.9、图像线性滤波及二维线性滤波器设计

|-conv2:二维卷积

|-convmtx2:计算二维卷积矩阵

|-convn:多维卷积

|-fspecial:产生预定义滤波器

|-filter:一维线性数字滤波,通常与产生预定义的滤波器函数fspecial配套使用

|-filter2:二维线性数字滤波,通常与产生预定义的滤波器函数fspecial配套使用

|-freqspace:确定二维频率响应间隔

|-freqz2:计算二维频率响应

|-fsamp2:用频率抽样法设计二维FIR滤波器

|-ftrans2:用频率转换法设计二维FIR滤波器

|-fwindl:用一维窗口法设计二维FIR滤波器

|-fwindl2:用二维窗口法设计二维FIR滤波器

|-imfilter:对任意类型数组或多维图像进行滤波

6.10、图像变换

|-fft、fft2、fftn:快速傅里叶变换

|-ifft、ifft2、ifftn:快速傅里叶逆变换

|-fftshift:直流分量移到频谱中心

|-dct、dct2:离散余弦变换

|-idct、idct2:离散余弦逆变换

|-dctmtx:计算DCT变换矩阵

|-dwt:一维离散小波变换

|-idwt:一维离散小波逆变换

|-wavedec:一维信号小波分解

|-waverec:一维信号小波重构

|-appcoef:从一维小波分解的分解结构中提取出信号的低频系数,常和waverec函数配套使用

|-detcoef:从一维小波分解的分解结构中提取出信号的高频系数,常和waverec函数配套使用

|-dwt2:二维离散小波变换

|-idwt2:二维离散小波逆变换

|-wavedec2:二维信号的小波分解

|-waverec2:二维信号的小波重构

|-appcoef2:……

|-detcoef2:……

|-wcodemat:对数据矩阵进行伪彩色编码

|-radon:计算Radon变换

6.11、图像领域操作与块操作

|-bestblk:选择块处理的块大小

|-blkproc:对图像进行分块处理

|-colfilt:使用列方向函数进行领域运算

|-nlfilter:进行一般领域运算

6.12、二值图像操作

|-applylut:使用查找表进行领域操作

|-bwarea:计算二值图像中的目标区域

|-bweuler:计算二值图形的欧拉数

|-bwfill:二值图像背景区域填充

|-bwlabel:标识二值图像中的连接成分

|-bwconncomp:查找二值图像中的联通分量

|-bwmorph:二值图像形态运算

|-bwperim:确定二值图像中的目标边界

|-bwselet:选择二值图像中的目标

|-imdilate:对二值图像进行膨胀运算

|-imerode:对二值图像进行腐蚀运算

|-imopen:对二值图像进行开运算

|-imclose:对二值图像进行闭运算

|-makelut:构造(applylut)函数使用的查找表

6.13、基于区域的图像处理

|-roicolor:根据颜色选择要处理的区域

|-roifill:在任意区域内平滑插值

|-roifilt2:对要处理的区域滤波

|-roipoly:选择要处理的多边形区域

6.14、图像的颜色操作

|-brighten:颜色图变亮或变暗

|-cmpermute:重新排列颜色图中的颜色

|-cmunique:寻找唯一的颜色图及向对应的图像

|-colormap:设置或获取颜色图

|-imapprox:由较少颜色的图像近似索引图像

|-rgbplot:绘制RGB颜色图

6.15、颜色空间转换

|-rgb2hsv,hsv2rgb:RGB颜色空间与HSV颜色空间相互转换

|-rgb2ycbcr,ycbcr2rgb:RGB颜色空间与YCbCr颜色空间相互转换

|-rgb2ntsc,ntsc2rgb:RGB颜色空间与NTSC(YIQ)颜色空间相互转换

6.16、图像类型转换

|-dither:通过抖动增加图像颜色分辨率

|-gray2ind,ind2gray:灰度图像转换和为索引图像相互转换

|-rgb2gray:RGB图像转换为灰度图像

|-rgb2ind,ind2rgb:转换RGB图像和索引图像相互转换为索引图像

|-im2bw:通过阀值化方法将图像转换为二值图像

|-mat2gray:将矩阵转换为灰度图像

|-grayslice:通过阀值化方法将从灰度图像转换为产索引图像

|-isgray,isbw,isrgb,isind:判断图像是否为灰度图像,黑白二值图像,真彩色RGB图像,索引图像

6.17、数据类型转换

|-double:

|-im2double:把图像数组转换成double类型

|-im2single:把图像数组转换成single类型

|-im2uint16、im2uint8:


Baidu
map