第一部分 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:
Stellaris LaunchPad入门讲座第一课——Stellar
CSMNT2016 & MAN2016来自多伦多大学的Yu Sun教授
CSMNT2016 & MAN2016 Microsystem&Nan
邓起:The Characteristics of Silicon M