本文收录了常用的matlab命令,适合matlab初学者分类记忆,加深学习印象。
注:本文目的在于为matlab初学者提供命令的分类记忆和参考,不适合小白直接阅读学习。
目录
Matlab数学应用基础函数
Contents
1.数字格式
2.数组,矩阵
2.1.若a为一数组
2.2.矩阵数值运算
3.向量与多项式的数值运算
3.1.多项式p(x)=a0*x^n+a1*x^(n-1)+...+an-1*x+an
3.2.匿名函数建立及其运算:可建立匿名函数f=@(x1,x2,...,xn)f(x1,x2,...,xn);
4.符号运算
4.1.符号变量的建立:syms x1 x2 ... xn %声明变量x1,x2,...,xn
4.2.方程组的求解:若有方程组:f1=0;f2=0;...;fn=0;方程中含有n个自变量x1,x2,...xn,令:
4.3.符号表达式的化简与替换
5.图形绘制
5.1.对于二维数值运算的绘图
5.2.对于符号及匿名函数的运算
5.3.三维图形绘制
5.3.1.三维符号函数及匿名函数运算的绘制:
5.3.1.三维数值运算曲面图的绘制:
6.程序输入输出与设计
6.1.选择语句
6.2.循环语句
format %十进制短格式,小数点后4位 format short %十进制短格式,小数点后4位 format long %小数点后15位 format shortE %短科学计数法,小数点后4位 inf %无穷大数 eps %浮点数的精度,运算时计算机的最小值 Nan%或nan 不定量 abs(x) %数值x的绝对值 vpa(x,n) %显示数值x,整数和小数部分一共n位 fix(x) %数值x向0取整 round(x) %数值x四舍五入取整 ceil(x) %数值x向右取整 floor(x) %数值x向左取整 gcd(x,y) %数值x,y的最大公约数 lcm(x,y) %数值x,y的最大公倍数 mod(x,y) %数值x/y的余数 imag(x) %复数x的虚数 real(x) %复数x的实数 angle(x) %复数x的相角 conj(x) %复数x的共轭 b=sym('n'); %将数值n转换为符号形式,返回b upper('c')%将小写字母c转化为大写字母C lower('C')%将大写字母C转化为小写字母c %逻辑运算介绍:与运算 a&b;或运算 a|b;非运算b=~a;异或运算 xor(a,b)
sort(a) %a元素按从小到大排序,若a为矩阵,则a按列升序排序 sort(a,'descend') %a元素按从大到小排序 norm(a) %向量a的2-范数(向量元素绝对值的平方和的平方根,a为矩阵时,为a'*a矩阵最大特征值的平方根) norm(a,1); %计算向量a的1-范数(向量元素绝对值之和,a为矩阵时,为矩阵列元素绝对值之和的最大值) norm(a,inf); %计算向量a的无穷大范数(所有向量元素绝对值中的最大值,a为矩阵时,为矩阵行元素绝对值之和的最大值) mean(a); %计算向量a的算数平均值 median(a); %计算向量a的中值 sum(a) %a元素求和,若a为矩阵,则a按列求和 prod(a) %a元素求积,若a为矩阵,则a按列求积 cumsum(a) %a元素求累加和,若a为矩阵,则a按列求累加和 cumprod(a) %a元素求累乘积,若a为矩阵,则a按列求累乘积 std(a) %a元素求标准差,若a为矩阵,则a按列求标准差 std(a,1,1) %a元素求总体标准差,若a为矩阵,则a按列求总体标准差 std(a,1,2) %a元素求总体标准差,若a为矩阵,则a按行求总体标准差 corrcoef(a) %返回a的相关系数矩阵,第i行第j列元素为a中第i列与第j列相关系数 length(a) %a中元素个数 max(a) %返回a中最大元素;若a为m×n矩阵(n>1),则返回a每列向量中最大的元素,组成一个行向量 [y,k]=max(a); %返回a中最大元素y及其序号k,a为矩阵时,返回a每列最大值组成行向量y,k记录每列最大值对应行号,为行向量 max(a,[],'all') %%返回m×n矩阵(n>1)a中最大元素 max(a,[],'2') %%返回m×n矩阵每行上的最大值为列向量 %矩阵a的条件数等于a的范数与a逆矩阵的范数的乘积,条件数越接近1矩阵性能越好 cond(a,1); %计算a的1-范数下的条件数 cond(a); %计算a的2-范数下的条件数 cond(a,inf); %计算a的无穷大范数下的条件数 fft(a); %a数据列的快速傅里叶变换 ifft(a); %a数据列的快速傅里叶逆变换
a=m:p:n; %生成初始值:步长:终值的行向量,若p缺省,则默认p=1 a=linspace(m,n,h); %生成起始值为m,终值为n,分成h-1段的行向量 %a1,a2为每行元素数量相同的矩阵,则: a=[a1;a2]; %a1,a2上下拼接为矩阵a %a1,a2为每列元素数量相同的矩阵,则: a=[a1.a2]; %a1,a2左右拼接为矩阵a %若a为矩阵 a(m,:); %表示第m行所有元素 a(:,m); %表示第m列所有元素 a(:); %将a各列向量从左到右堆叠成一列,形成一个列向量 a(m:n:q,x:y:z); %a矩阵中m到n以q为间隔的行与x到y以z为间隔的列所有的元素形成的矩阵 [m,n]=find(a>x); %返回a矩阵中大于x的元素所在行标数组m,列标数组n,形成数组 diag(a) %提取a对角线元素返回列向量,若a为列向量,则生成以a作为对角线元素的对角矩阵 diag(a,k) %提取第k条对角线元素返回列向量(k>0往上取,k<0往下取),若a为列向量,则产生以a作为第k条对角线的矩阵 d=eig(a); %a的特征值,返回到列向量d中 [v,d]=eig(a); %a的特征向量和特征值(v为矩阵,其列向量为特征向量;d为矩阵,对角线元素为对应特征值) rref(a); %将a化为行阶梯最简矩阵 orth(a); %a的正交化矩阵 trace(a); %a的迹(对角线元素之和) reshape(a,[m,n]); %将矩阵a按列重排为m×n矩阵 [m,n]=size(a); %返回a的行数和列数 triu(a); %返回矩阵a的主对角线及以上的元素 triu(a,k); %返回矩阵a的第k条对角线及以上的元素 tril(a); %返回矩阵a的主对角线及以下的元素 tril(a,k); %返回矩阵a的第k条对角线及以下的元素 rot90(a,k); %返回矩阵a的逆时针方向选择90度的k倍时的矩阵,k=1时可缺省 fliplr(a); %将矩阵a左右翻转后返回 flipud(a); %将矩阵a上下翻转后返回 inv(a); %返回矩阵a的逆矩阵 pinv(a); %返回矩阵a的伪逆矩阵 null(a); %返回a的基础解系 rank(a); %返回矩阵a的秩 [l,u]=lu(a); %获得a的上三角分解矩阵l,下三角分解矩阵u,满足a=l*u [l,u,p]=lu(a); %获得a的上三角分解矩阵l,下三角分解矩阵u,置换矩阵p,满足a=lu,a=p^(-1)*l*u [l,a1,m]=svd(a); %获得a的奇异值分解,a=l*a1*m a=sparse(s); %将矩阵s转化为稀疏存储方式的矩阵a s=full(a); %将矩阵a转化为完全存储方式的矩阵s sparse(m,n); %生成一个m*n的所有元素都为0的稀疏矩阵 sparse(u,v,s); %u,v,s为等长向量,u(i),v(i)分别为s(i)的行下标,列下标,建立稀疏矩阵 spconvert(a); %直接建立稀疏矩阵,a为一个m*3或m*4的矩阵,a(i,1)为第i个非零元素的行下标,a(i,2)第i个非零元素的列下标, %a(i,3)第i个非零元素的实部,a(i,4)第i个非零元素的虚部,若矩阵全部元素都是实数,则无需第四列 %生成特殊矩阵 a=[]; %生成空矩阵a eye(n); %n阶单位阵 magic(n);%n阶魔方矩阵 ones(m,n); %元素全为1的m×n矩阵 zeros(m,n); %元素全为0的m×n矩阵 rand(m,n); %元素在[0,1]均匀分布的m×n矩阵 a+(b-a)*rand(m,n); %元素在[a,b]均匀分布的m×n矩阵 randi([m,n],x,y); %元素服从m到n均匀分布的x×y矩阵 randn(m,n); %元素服从标准正态分布的m×n随机矩阵 u+o*randn(m,n); %元素服从(u,o^2)分布的m×n随机矩阵 unifrnd(a,b,[1,n]); %随机产生n个元素(范围为a~b)的行向量 vander(v);%v为一向量,产生以v为基础的范德蒙矩阵 hilb(n);%生成n阶希尔伯特矩阵(希尔伯特矩阵特点是hilb(n)(i,j)=1/(i+j-1);) compan(p);%p为一向量,生成以p为系数向量的多项式的伴随矩阵,伴随矩阵的特征值等于多项式方程的根 pascal(n);%生成n阶帕斯卡矩阵
%p(x)的系数向量a=[a0,a1,a2,...,an],若p(x)的单根为r1,r2,...,rn %,令r=[r1,r2,...rn]则: y=poly2sym(a); %生成多项式(多项式中以x为自变量,其中x为符号) y=poly(r); %生成多项式,若r为n阶矩阵,y为|x*I-a|特征多项式的n+1个系数 y=polyder(a); %返回p(x)导数的系数 y=polyder(a1,a2); %返回两多项式乘积的导数的系数 [p,q]=polyder(a1,a2); %返回两多项式相除的导数的系数,导数分子存入p,导数分母存入q y=roots(a); %返回p(x)的n个根 y=polyval(a,x); %返回p(x)在x的值,x为方阵时,计算方阵中每一个元素的多项式运算,返回方阵 y=polyvalm(a,x); %返回p(x)在x(x为方阵)的值,进行方阵的运算 %若a1,a2为两多项式f(x),g(x)的系数向量,则: y=conv(a1,a2); %返回f(x)*g(x)的系数向量 [div,rest]=deconv(a1,a2); %返回商多项式的系数向量div,余数多项式的系数向量rest,有关系:f(x)=g(x)*商+余数
a=fzero(f,x0); %求匿名函数f在x0附近的零点,返回值a a=fzero(f,[m,n]); %求匿名函数f在区间[m,n]的零点,返回值a,要求f(m)*f(n)<0 [x,y]=fminbnd(f,a,b); %求匿名函数f在[a,b]上的最小值点x,与最小值y [X,y]=fminsearch(f,X0); %求多元匿名函数f在X0附近最小值点X,最小值y integral(f,a,b) %求一元匿名函数f在[a,b]上的积分值,使用integral(f,a,b,'RelTol',1e-20)可获得高精度的值 %对于数值向量可以用integral(f,a,b,'RelTol',1e-20,'ArrayValued',true)求积分 integral2(f,a,b,c,d) %求二元匿名函数f在[a,b]*[c,d]上的二重积分值 integral3(f,a,b,c,d,e,f) %求三元匿名函数f在[a,b]*[c,d]*[e,f]上的三重积分值 %quadndg(f,[x1,x2,...,xn],[x11,x22,...,xnn])可求多元匿名函数的多重积分值
%建立符号表示式:f=f(x1,x2,...,xk); %分段函数表示:f=piecewise('a','f1(x)','b','f2(x)');定义域为a时函数为f1(x),定义域为b时函数为f2(x) %多元函数的雅克比矩阵 %有多元函数:y1=f1(x1,x2,...,xn);y2=f2(x1,x2,...,xn);...,ym=fm(x1,x2,...,xn); %则:j=jacobian(y,x);可求多元函数的雅克比矩阵,其中y为函数矩阵,x为自变量矩阵 %h=hessian(y,x);可求多元函数的Hessian矩阵 gcd(f1,f2) %提取f1,f2最大公约式 a=eval(f); %若运算到此步时,f有具体数值,则可返回f的数值为a y=str2sym('f(x1,x2...,xn)'); %将字符串转化为符号表达式 b=sym(a); %a为数值,则返回其符号类型 limit(f,x,a); %求f关于自变量x在a处的极限值 limit(f,x,a,'right'); %求f关于自变量x在a处的右极限值 limit(f,x,a,'left'); %求f关于自变量x在a处的左极限值 limit(f,x,inf,'right'); %求f关于自变量x左无穷处极限值 limit(f,x,inf,'left'); %求f关于自变量x右无穷处极限值 diff(f,x,n); %求f关于自变量x的n阶偏导数 int(f,x,a,b); %求f关于自变量x在区间[a,b]上的定积分 int(f,x); %求f关于自变量x的不定积分(结果中没有任意常数) symssum(f,x,a,b); %求数列f关于自变量x从a到b求和 symprod(f,k,a,b); %数列f关于自变量k从a到b求积 taylor(f,x,a,'order',n); %求f关于自变量x在x=a处的泰勒展开式前n项,若a缺省,则默认a=0 fourier(f,x,w);%对自变量为x的函数f进行傅里叶变换,变换后自变量为w ifourier(F,w,x);%对自变量为w的函数F进行傅里叶逆变换,变换后自变量为x laplace(f,x,s);%对自变量为x的函数f进行拉普拉斯变换,变换后自变量为s ilaplace(f,s,x);%对自变量为s的函数F进行逆拉普拉斯变换,变换后自变量为x
%f=[f1,f2,...,fn],vars=[x1,x2,...,xn] y=solve(f,vars); %返回方程组的解向量,对应于vars vars=solve(f,vars); %返回方程组的解向量更新vars vpasolve(eqns,vars) %求方程组准解析解 ff=optimset;ff.TolX=1e-5;ff.TolFun=1e-5; fsolve(f,x0,ff)%求满足以上精度的解 %注:只能求解具有形式解的方程组 %求解微分方程组:声明变量:syms y(x) %x是符号变量,y(x)是x的符号变量,使用diff(f,x,n)构造微分方程: dsolve(eqns) %求微分方程组eqns的解 dsolve(eqn,cond) %求微分方程eqn在条件cond下的解
collect(f,x) %将f按照变量x合并同类项 a=factor(f); %将f分解因式,返回a f=prob(a);%将因式分解后的因子乘起来返回多项式 f1=latex(f);%将多项式按照latex排版表示 subs(f,old,new); %将符号表达式f中变量old替换为new
subplot(m,n,k) %将当前窗口分割为m×n个子图,指定第k个子图为当前子图 plot(x,y,'b*-') %以x元素为横坐标,y对应元素为纵坐标,‘b*-’为颜色+点型+线型组合,有以下常用 %颜色:b蓝色,y黄色,g绿色,r红色;点型:.点,*标记*,x标记x;线性:-实线,:点线,-.点画线,--虚线 plot(x,y,'b*-',x,y,'linewidth',5,'markersize',10) %设置线宽,点型大小 axis([xmin,xmax,ymin,ymax]) %设置当前坐标轴x,y坐标范围 title('string') %添加标题 xlabel('string') %添加x轴标题 ylabel('string') %添加y轴标题 text(x,y,'string') %在(x,y)处添加文字说明 polarplot(theta,rho,'s') %在极坐标绘图,theta为极角,rho为极径,参数s与plot相似 comet(x,y) %绘制二维质点动画轨迹 bar(x,y,'s') %直方图,默认为'Group'形式(簇状分组);'Stack'为堆积分组 rose(theta,x) %极坐标下直方图,x用于指定区间的划分方式 stem(x,y,'s') %杆图 stairs(x,y,'s') %阶梯图 semilogx(x,y,'s') %半对数表示图,x为常用对数坐标 semilogy(x,y,'s') %半对数表示图,y为常用对数坐标 loglog(x,y,'s') %半对数表示图,x,y均为常用对数坐标 fill(x,y,'s') %填充闭合图形,x为闭合图形闭合曲线逆时针的横坐标点构成向量,y同理 pie(x,ex) %绘制饼图,ex代表要脱离饼图的部分 quiver(x,y,u,v) %绘制矢量图,(x,y)为矢量起点坐标,(u,v)为矢量终点坐标 legend('a','b','c','d','f') %对所给数据每一部分显示一个图例 hold on %保持图形编辑图 hold off %取消图形保持 grid on %加坐标网格 box on %加边框 %若x做分母可能取到0,则用x+eps取代x做分母 plotyy() %双纵轴表示 plotyyy() %三纵轴表示 plot4y()%四纵轴表示
%若f为匿名函数f=@(x)f(x),或符号函数syms x f=f(x),则: fplot(f,[xmin,xmax],s); %在指定范围[xmin,xmax]内画出f的图像 ezplot(f,[a,b]); %绘制f在[a,b]上的图形,若f为隐函数f(x,y)=0,则在a5.3.三维图形绘制
%对于三维数量值函数,三维绘制与二维绘制相似,若z=f(x,y)有以下基本函数: plot3(x,y,z,'b*-');5.3.1.三维符号函数及匿名函数运算的绘制:
%对于符号函数及匿名函数定义的f: fplot3(x,y,z,[a,b]); %在a5.3.1.三维数值运算曲面图的绘制:
%对于二元函数z=f(x,y),设其定义域为[a,b]*[c,d],则: %x=a:p1:b; %步长p1 %y=c:p2:d; %步长p2 [X,Y]=meshgrid(x,y); %按上述定义生成网格节点的坐标矩阵 Z=f(X,Y); %按照z=f(x,y)定义生成函数值矩阵Z mesh(X,Y,Z); %绘制网格曲面并赋以颜色 meshc(X,Y,Z); %绘制网格曲面并赋以颜色,并绘制等高线 meshz(X,Y,Z); %绘制网格曲面并赋以颜色,并绘制等底座 surf(X,Y,Z); %绘制光滑曲面 surfc(X,Y,Z); %绘制光滑曲面,并绘制等高线 surfl(X,Y,Z); %绘制光滑曲面,添加光照效果 rotate(h,v,a);%将图形h绕v沿正方形旋转角度a view(a,b);%从y轴负方向起,向x轴正方向a度,仰角为b的视角观察图形 view(x,y,z);%在(x,y,z)处观察图形 view(2);%俯视图形 shading flat %对曲面平滑并除去网格线 shading interp %在网格片内采用颜色插值处理 %柱面和球面图的绘制 (X,Y,Z)=cylinder(r,n); %返回一个半径为r,高度为1的圆柱体x,y,z的坐标,圆柱体圆周有n个距离相同的点 (X,Y,Z)=sphere(n); %在三个大小为(n+1)*(n+1)的矩阵中返回n*n球面的坐标 %坐标返回后可以使用surf或mesh绘图6.程序输入输出与设计
%函数文件: %function [y1,y2,...,yn]=函数名(x1,x2,...,xn) %yi为输出参数,xi为输入参数 %函数参数的输入输出具有可调性:用: %nargin可以控制实参的输入个数;nargout可以控制实参的输出个数 %输入,输出方式: x=input('提示符号串'); %输入数值赋给x,例如:x=input('x='); disp(x); %直接输出 fprintf('x=%.5f y=%.6f\n',x,y); %按照形式输出x,y的值 pause(n) %暂停n秒后执行文件 pause on %允许其后的暂停文件起作用 pause off %不允许其后的暂停文件起作用 warning('message') %显示警告信息message %可以用save和load命令存储和读取文件数据 save mydata A B C %将A,B,C数据存储在文件名为mydata的文件中,load命令用法相同 %matlab与excel交互 x=xlsread(filename,sheet,x1range); %读取文件名为filename,第sheet栏中,范围为x1range的数据6.1.选择语句
%单分支if语句 if a yuju; end %当条件a成立时,执行yuju %双分支if语句 if a yuju; else yuju2; end %当条件a成立时,执行yuju;否则执行yuju2 %多分支if语句 if a yuju; elseif b yuju2; else yuju3; end %当a成立时,执行yuju,否则,b成立时执行yuju2,否则执行yuju3 %switch语句 switch a case a1 yuju1; case a2 yuju2; otherwise yuju3; end %计算表达式a的值,若结果为a1,则执行yuju1,若结果为a2,执行语句2,否则执行语句36.2.循环语句
%for语句 for i=c yuju end %for语句针对向量c中的每一个元素执行一次循环体yuju,退出循环之后循环变量的值是向量中最后的元素值,向量为空时,循环体... %一次也不执行 %while语句 while a yuju end %当条件a成立时执行yuju,直到a不成立时跳出循环 while a if b break end end %执行循环时,当进行到选择语句时条件b成立,则跳出循环 while a if b continue end end %执行循环时,当进行到选择语句时条件b成立,则跳出本次循环,进行下一次循环
Published with MATLAB® R2021a