Matlab基本函数介绍与应用

matlab基本函数

1.生成矩阵

(1)直接法:a = [1,2,3;4,5,6;7,8,9];也可A = [5 7 8; 0 1 9; 4 3 6];

   (2)冒号一维矩阵: a = 开始:步长:结束,步长为1可省略

   b = 1:1:10;

   b = 1:10; (与上面等价)

   (3)函数生成:

   linspace(开始,结束,元素个数),等差生成指定元素数的一维矩阵,省略个数则生成100个

   c = linspace(0,10,5);

   (4)特殊矩阵:

   zeros函数:产生零矩阵

   ones函数:产生全1矩阵
eye函数:产生对角线为1的矩阵
rand函数:产生(0,1)区间均匀分布的随机矩阵

   randn函数:产生均值为0,方差为1的标准正态分布随机矩阵

   repelem函数:生成相同元素的数组;q = repelem(3,5);(如果如果用单引号,则构建出来的是字符:

   p2=repelem(‘kk’,5))

   magic(n)(魔方方阵):

   n阶魔方阵由1,2,3,…,n2 共n2 个整数组成,且每行、每列以及主副对角线上个元素之和都相等。

   n阶魔方阵每行每列元素的和为(1+2+3+…+,n2)/n=(n+n3)/2。

   Matlab函数magic(n)产生一个特定的魔方阵。

   eg:
8阶魔方阵·

   vander(v):生成以向量V为基础的范德蒙矩阵。
在这里插入图片描述

hilb(n):生成n阶希尔伯特矩阵。

   eg:
n阶希尔伯特矩阵

   compan(n):生成多项式n的伴随矩阵
多项式p的伴随矩阵

   其中n是一个多项式的系数向量,高次幂系数排在前,低次幂系数排在后。例如,生成多项式x.^3-2x- 5x+6的伴随矩阵。
在这里插入图片描述

   帕斯卡矩阵
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

2.基本运算符


符号作用
+加法运算
-减法运算
*矩阵乘法
.*数组乘法(只有维数相同的矩阵才能用这种,即相同位置相乘)
/斜杠或者矩阵右除 (B/A等于公式B*inv(A))
./数组右除(A./B等于A(i,j)/B(i,j))
|反斜杠或者矩阵左除 A\B等于inv(A)*B
.|数组左除(A.\B等于B(i,j)/A(i,j))
^矩阵幂计算
.^数组幂计算( A.^B等于A(i,j)的B(i,j)次幂)
矩阵转置

[]:表示空矩阵,A(m,:)删除A中的一行,A(:,n)删除A中的一列

   {}:元胞组赋值

   关系操作符:< <= > >= == ~ =

   逻辑操作符 : 逻辑:&& || 数组:& | ~

3.特殊矩阵运算

函数diag(A,k):提取矩阵A第k条对角线的元素,产生一个列向量

   函数diag(V):以向量V为主对角线元素,产生对角矩阵

   函数diag(V,k):以向量V为第k条对角线元素,产生对角矩阵

   函数triu(A):提取矩阵A的主对角线及以上的元素

   函数triu(A,k):提取矩阵A的第k条对角线及以上的元素

   函数tril用于产生下三角矩阵,用法同triu函数一样
(我也不太清楚他为什么这么写我寻思B=(A’)也可)


   共轭转置,其运算符是单引号('),它在转置的基础上还要取每个数的复共轭

   函数rot90(A,k):将矩阵A逆时针方向旋转90°的k倍,当k为1时可省略

   函数fliplr(A),对矩阵A实施左右翻转

   函数flipud(A),对矩阵A实施上线翻转


   函数det(A):求方阵对应的行列式的值


   函数trace(A):求矩阵的迹(迹等于矩阵的对角线元素之和,也等于矩阵的特征值之和)

   函数reshape(A,m,n):将指定的矩阵变换成特定维数矩阵一种函数。

4.替换

a = a;

   a(2,3) = 4; % (行,列)元素替换

   a(1,:) = [2,2,2]; % (行,:)替换行,[]为删除该行

   a(:,1) = []; % (:,列)替换列,[]为删除该列

5.指定维数拼接

C = cat(1,A,B); % 垂直拼接,相当于[A; B]

   C = cat(2,A,B); % 水平拼接,相当于[A, B]

   其他基本函数

   format:设置数据输出格式。format(‘command’)

   disp:在commandwindow中显示字符和矩阵。

   disp(x)—x为矩阵

   disp(‘x’)—x为字符

   disp([‘x’ a ‘y’])—打印字符合集

   clear:清空工作空间的所有变量

   clear name—clear(‘name’):清空以name命名的m文件,mex文件或变量名

   clear globe name:完全清空以name命名的全局变量,清空后该全局变量不能被函数调用。

   help:在MATLAB命令窗口中显示MATLAB的m函数,mdl文件,工具箱等的帮助信息。

6.语句

break:终止执行for循环或者while循环, break语句结束循环,把语句控制返回给循环结束后的语句。

continue:传递控制给下一个for或while循环

case:条件为真时执行代码,case是switch语法中的允许有条件执行语句的一部分。case语句块由case函数,case表达式和其后的一条或多条语句构成。

switch:有条件执行的代码,在基本语法中,当switch_expr ==case_expr时执行相关语句,如果没有实例表达式与switch表达式相匹配,则语句控制传递给otherwise语句块。

If:如果条件为真,则执行相关语句 if expression, statements, end

   elseif:—if expression1,statement1,elseifexpresstion,statement2,end

else:如果条件为假时执行语句

end:终止代码块,或为数组的最后一位数字索引, end用来终止for、while、switch、try和if语句—end函数也作为数组的最后一个索引,如X(3:end)和X(1,1:2:end-1)。可以用end增加数组,如X存在的情况下使用X(end+1)=5。

error:显示信息并终止函数—error(‘说明信息’)

for:反复运算指定代码块 forvariable=initval:endval, statements, end

while:当条件为真时重复执行语句—whileexpression,statement,end

return:从调用函数中返回

7. 多维数组

创建

   直接法

   A(:,:,1) = [1,2,3;2,3,4];

   A(:,:,2) = [3,4,5;4,5,6];

   扩展法

   A = [1,2,3;2,3,4];

   A(:,:,2) = [3,4,5;4,5,6]; % 若不赋值第一页,第一页全为0

   cat法

   A = [1,2,3;2,3,4];

   A = [3,4,5;4,5,6];

   A= cat(3,B,C); % 把B,C按照“3”维连接

(matlab默认1为行向量,2为列向量)

8.字符串

字符串

   创建

   str0 = ‘hello world’; % 单引号引起

   str1 = ‘I’‘m a student’; % 字符串中单引号写两遍

   str3 = [‘I’‘m’ ‘a’ ‘student’]; % 方括号链接多字符串

   str4 = strcat(str0, str1); % strcat连接字符串函数

   str5 = strvcat(str0, str1); % strvcat连接产生多行字符串

   str6 = double(str0); % 取str0的ASCII值,也可用abs函数

   str7 = char(str6); % 把ASCII转为字符串

   操作

   比较

   strcmp(str0, str1); % 相等为1,不等为0

   strncmp(str0, str1, 3); % 比较前3个是否相等(n)

   strcmpi(str0, str1); % 忽略大小写比较(i)

   strncmpi(str0, str1, 3); % 忽略大小写比较前3个是否相等

   查找替换

   strfind(str0, str1); % 在str0找到str1的位置

   strmatch(str1, str0); % 在str0字符串数组中找到str1开头的行数

   strtok(str0); % 截取str0第一个分隔符(空格,tab,回车)前的部分

   strrep(str0, str1, str2); % 在str0中用str2替换str1

   其他

   upper(str0); % 转大写,lower转小写

   strjust(str0, ‘right’); % 将str0右对齐,left左对齐,center中间对齐

   strtrim(str0); % 删除str0开头结尾空格

   eval(str0); % 将str0作为代码执行

9.转换及判断

single:转换为单精度浮点数

   double:转换为双精度浮点数

   base2dec :把指定进制的数字字符串转换为十进制数 d=base2dec(‘strn’, base)

   bin2dec :把二进制数字字符串转换为十进制数 bin2dec(binarystr)

   hex2dec :把十六进制数字字符串转换为十进制数 d=hex2dec(‘hex_value’)

   hex2num :把十六进制数字字符串转换为双精度浮点数 n=hex2num(S)

   str2double :把字符串转换为双精度浮点数

   str2num :把字符串转换为数字

   dec2base:把十进制数转换为指定基下的数值字符串 str=dec2base(d, base)

   dec2bin :把十进制数转换为二进制数值字符串

   dec2hex :把十进制数转换为十六进制的数值字符串

   int2str :把整数转换为字符串

   mat2str :把矩阵转换为字符串

   num2str :把数字转换为字符串

   display:显示字符或者数组

   isempty :判断数组是否为空,空返回1,不空返回0

   isequal :判断数组是否相同 (认为NaN不同)

   isequalwithequalnans:判断数组是否相同,把NaN看成相同的数

   isfinite :判断数组元素是否为有限数

   isfloat :判断数组元素是否为浮点数

   isinf :判断数组元素是否为无限数

   isinteger :判断元素是否为整数

   islogical :判断元素是否为逻辑变量

   isnan :判断元素是否为NaN

   isnumeric :判断数组元素是否为数值

   isscalar :判断输入是不是离散量

   issparse :判断矩阵是否为稀疏矩阵

   isvector :判断输入是否为向量

10.数组及矩阵常见计算

length :计算向量的长度

   max :找出向量中的最大元素

   C=max(A) A为一个向量,返回向量最大值,矩阵A,返回每列向量最大值

   C=max(A,B) A、B维数一样,返回对应位置最大元素

   max(A,[],dim)

   [C,I]=max(A)找出最大值和索引

   min :找出向量中的最小元素

   ndims :计算矩阵的维数 ndims同length(size(x)) 一致

   numel:计算数组中元素的个数或者下标数组表达式的个数

   size :计算数组维数大小 d=size(X) [m,n]=size(X)m行n列 m=size(X,dim)

   bsxfun:两个数组间元素逐个计算 C=bsxfun(fun,A,B)

   @plus(加)@minus(减)@times(数组乘)@rdivide(左除)@ldivide(右除)@power(幂)@max@min@rem(整除)@mod(模除)

   dot :向量点乘 C=dot(A,B)

   create :生成随机数流 [s1,s2,…]=RandStream.create(‘gentype’,‘NumStreams’,n)

   sort :把数组元素按升序或降序排列

   B=sort(A,dim) B=sort(…,mode) [B,IX]=sort(A,2)返回B元素在A中的位置的索引

   sortrows :矩阵行按照升序排列

   det :求方阵行列式值

   norm :计算向量或者矩阵范数 n=norm(A) n=norm(A,p)

   normest :返回矩阵2-范数估计值

   null :计算矩阵零空间

   rank :返回矩阵的秩

   rand:产生由在(0, 1)之间均匀分布的随机数组成的数组

   subspace :返回两个子空间夹角

   trace :返回矩阵的迹(对角元素之和)

   eig :计算矩阵特征值和特征向量

   condeig :计算特征值对应的条件数

   eigs :计算矩阵的最大特征值和特征向量

   gsvd :矩阵广义奇异值分解

   svd :矩阵奇异值分解

   sort :数组元素按升序或降序排列 B=sort(A) B=sort(A,dim) B=sort(…,mode)[B,IX]=sort(A,…)

   sortrows :把矩阵中每行按照升序排列 B=sortrows(A) B=sortrows(A,column)

   sum :求数列元素的和 B=sum(A) A是向量,向量求和,A是矩阵就没列求和 B=sum(A,dim)


   除法

   ceil :向正无穷方向舍入

   fix :向零方向舍入

   floor :向负无穷方向舍入

   idivide :舍入操作 C=idivide(A,B, opt)

   mod :计算相除后的模值

   factorial:阶乘—factorial(N),N!

   perms:元素所有可能的全排列

   dblquad :计算矩形区域的二重定积分

   q=dblquad(fun,xmin,xmax,ymin,ymax)

   q=dblquad(fun,xmin,xmax,ymin,ymax,tol)q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method)

   quad :求基于变步长Simpson法的函数定积分数值解 q=quad(fun,a,b)

   quad2d :在平面区域求二重积分的数值解 q=quad2d(fun,a,b,c,d)

   dblquad :计算矩形区域的二重定积分 q=dblquad(fun,xmin,xmax,ymin,ymax)

   cumtrapz :累积梯形数值积分 Z=cumtrapz(Y)Z=cumtrapz(X,Y) 对于多维数组从第一维开始计算 Z=cumtrapz(X,Y,dim)

   diff :差分与微分近似 Y=diff(X) Y=diff(X,n) Y=diff(X,n,dim)

   gradient :计算函数数值梯度 FX=gradient(F) [FX,FY]=gradient(F)

11.函数方程计算

biltin:重载方法中执行MATLAB内部自带的函数 builtin(…) 函数和 feval(…)函数相同

   evalc :计算表达式值 T=evalc(S):同函数eval(S)用法相同

   feval :计算函数值 [y1, y2, …]=feval(fhandle, x1, …, xn)

   linsolve :使用部分主元LU因子分解法求解线性方程组 X = linsolve(A,B) [X, R] = linsolve(A,B) X = linsolve(A,B,opts)

   lscov :已知协方差时求解方程的最小二乘解

   x = lscov(A,b) 线性方程组Ax = b的一般最小二乘解
x = lscov(A,b,w) 线性方程组A
x = b的加权最小二乘解

   x = lscov(A,b,V) 线性方程组A*x = b 的广义最小二乘解

   x =lscov(A,b,V,alg)

   bicg :求解线性方程的双共轭梯度法

   x=bicg(A,b) bicg(A,b,tol)bicg(A,b,tol,maxit)

   bicg(A,b,tol,maxit,M1,M2)bicg(A,b,tol,maxit,M1,M2,x0)[x,flag]=bicg(A,b,…)

   [x,flag,relres]=bicg(A,b,…)[x,flag,relres,iter]=bicg(A,b,…)

   [x,flag,relres,iter,resvec]=bicg(A,b,…)

   bicgstab :求解线性方程的稳定的双共轭梯度法

   bicgstabl :求解线性方程的双共轭梯度l稳定法

   bicgstab :求解线性方程的稳定的双共轭梯度法

   bicgstabl :求解线性方程的双共轭梯度l稳定法

   cgs :求解线性方程的共轭梯度平方法

   gmres :求线性方程的广义最小残差法

   lsqr :求解线性方程的LSQR 方法

   minres :求解线性方程的最小残差法

   pcg :求解线性方程的预处理共轭梯度法

   qmr :求解线性方程的准最小残差法

   symmlq :求解线性方程的对称 LQ 法

   tfqmr :求解线性方程的自由转置准最小残差法

   syms:定义符号变量的函数

   log:默认以e为底,如果需要计算以10为底的对数,那么需要用log10()函数。

   复合函数

   用compose函数来实现,格式:compose(f,g) //f(g(x))

   反函数

   用finverse函数来实现,格式:g=finverse(f) //g为反函数

   函数的极限

   格式:

x趋近于a

一元函数符号求导

   y=f(x)的各阶导数为y’,y’’,y’’’…或记为yx,yxx,yxxx…

   符号求导的函数是diff,

   调用格式:


   不定积分

   运算函数是int,格式:F=int(f(x),x)

   定积分

   格式:int(f(x),x,a,b)

在这里插入图片描述

常微分方程的符号解

   解析解

   函数为

   调用格式:

   求通解:y=dsolve(‘常微分方程表达式’,’自变量’)

   求特解:y=desolve(‘常微分方程表达式’,‘初始条件’,‘自变量’)

   数值解

   函数为

   调用格式:

   [x,y]=solver(‘fun’,ts, x 0 x_0 x0​,options)

x为自变量,y为函数值,ts=[ t 0 t_0 t0​, t f t_f tf​], x 0 x_0 x0​为函数的初值,options用于设定误差限。

12、线性规划

fminbnd :在指定区间上求解单变量函数的最小值x=fminbnd(fun,x1,x2)x=fminbnd(fun,x1,x2,options) 结构体options用于指定优化参数

   [x,fval]=fminbnd(…) [x,fval,exitflag]=fminbnd(…)

   [x,fval,exitflag,output]=fminbnd(…)

   fminsearch :利用derivative-free算法求无约束多变量函数的最小值

   x=fminsearch(fun,x0)x=fminsearch(fun,x0,options)

   [x,fval,exitflag]=fminsearch(…)

   fzero:求单变量连续函数的零值点 x=fzero(fun,x0) x=fzero(fun,x0,options)

   isqnonneg :求解非负最小二乘法约束问题

   x=lsqnonneg(C,d)返回一个向量x,满足x >= 0时(C*x-d)的范数最小。

   x=lsqnonneg(C,d,x0) x=lsqnonneg(C,d,x0,options)

linprog函数:主要用来求线型规划中的最小值问题(最大值的镜像问题,求最大值只需要加个“-”)

%调用格式:
x=linprog(f,A,b)
x=linprog(f,A,b,Aeq,beq)
x=linprog(f,A,b,Aeq,beq,lb,ub)
x=linprog(f,A,b,Aeq,beq,lb,ub,x0)

f:目标函数

   A:不等式约束条件矩阵

   b:对应不等式右侧的矩阵

   Aeq:等式约束条件矩阵

   beq:不等式右侧的矩阵

   Aeq:等式约束条件矩阵

   beq:对应等式右侧的矩阵

   lb:x的下界

   ub:x的上界

   x0:设置初始点x0

%例:
% 求最大值 :f= 7·x1 + 4·x2
% 约束条件为:
% x1 + x2 ≤ 12
% 3·x1 + 2·x2 ≤ 26
% 2·x1 + x2 ≤ 16
% x1≥0,x2≥0
% 根据目标函数f= 7·x1 + 4·x2可得:
%代码
f = [ 7 4 ];
A = [1 1;3 2;2 1];
b = [12 26 16];
lb = [0 0];
[ x , fval ] = linprog( -f , A , b , [] , [] , lb , ub);
disp(x)
disp(-fval)

多项式函数

   polyfit :多项式拟合

   p=polyfit(x,y,n) 根据拟合数据x,y求n阶多项式p(x)的系数,p是系数

   [p,S]=polyfit(x,y,n) p是系数,使用S和多项式的值能得到误差估计值或预测

   polyval :多项式求值 y=polyval(p,x)

   poly :根据根求解多项式

   polyder :解析求解多项式微分表达式k=polyder§ k=polyder(a,b)

   polyint :解析求解多项式积分表达式系数 polyint(p,k)

   mkpp :构建分段多项式 pp=mkpp(breaks,coefs)

   breaks是一个长度为L+1的向量,该向量元素严格递增。coefs为L*k的矩阵,每行元素代表

   [breaks(i),breaks(i+1)]的k阶多项式的系数。

(注:本人小白一个,文章部分文字摘自于

   作者:glanny

   https://www.bilibili.com/read/cv7966685?spm_id_from=333.788.b_636f6d6d656e74.6

   出处: bilibili

   仅供个人学习)

13、 图形修饰处理

1、view:视点处理

   view(az,el),其中az为方位角,el为仰角。

   view(x,y,z),x,y,z为视点在笛卡尔坐标系下的位置。

   view(2),从二维平面观察图形,其方位角为0度,仰角为90度。

   view(3),从三维空间观察图形,视点为默认方位角和仰角。

   2、colormap:色图矩阵

   第一列为R(红色)

   第二列为G(绿色)

   第三列为B(蓝色)

   3、imshow:imshow(I,[low high]) 显示灰度图像

   4、imread:从图形文件读取图像

   (可以将图形中需要剪裁部分对应的函数值设置为NaN,这样在绘制图形时,函数值为NaN的部分将不显示出来

   例:

t=linspace(0,2*pi,100);
x=sin(t);
y=cos(t);
p=y>0.5;
y(p)=NaN;
plot(x,y)
axis([-1.1,1.1,-1.1,1.1])
axis square
grid on


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空