许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  入坑MATLAB必会的吐血总结:从入门到避坑全攻略

入坑MATLAB必会的吐血总结:从入门到避坑全攻略

阅读数 7
点赞 0
article_banner


本渣想回过头来整理一下MATLAB的一些基本的知识(很多东西比较琐碎,应该系统的梳理梳理),下文中没有提到的,自己用help查即可。 此文用来存个档,便于回顾。 由于matlab各版本部分语法存在差异,可能会出现bug,用help查帮助文档即可。 里面的一些内容仅供参考,知识量有限,仅供入门。 后期可能会随缘写一点笔记。

如果没有装Matlab,我这里有一篇建模软件的博客:https://www.cnblogs.com/fangxiaoqi/p/10563509.html

变量名:字母数字串(第一个字符必须英文字母 | 字符间无空格 | 最多19个字符);

用%注解;

检查现存于工作空间(Workspace)的变量,可键入who;

检查更加详细的信息,可键入whos;

删除工作空间里的变量clear;

一些永久常数:

基本虚数单位 i或j; 系统的浮点精确度 eps; 无限大 inf; 系统所能表示的最大/最小数值 realmax / realmin; 非数值 NaN; 圆周率 pi; 函数的输入/输出参数个数 nargin / nargout;

搜寻路径:which(空格)文件名;

一、线性代数

  矩阵

基本命令:

  • A的转置——A'
  • A的行列式——det(A)
  • 矩阵A的秩——rank(A)
  • A的逆矩阵——inv(A)
  • A的n次幂——A^n
  • 矩阵A和B里的元素相乘——A .* B
  • 选择A的第i行生成一个行向量——ai=A(i,:)
  • 选择A的第j列生成一个列向量——aj=A(:,j)
  • 生成n阶零矩阵——zeros(n)
  • 生成n阶单位矩阵——eye(n)
  • 两个向量的内积——a1 * a2'

其他命令:

  • 存储工作空间变量——save  文件名  变量名
  • 查询函数的用法——help  函数名
  • 列出所有变量的详细资料——whos
  • 演示程序demo——demo

特殊矩阵:

  • 全一矩阵——y = ones(n)      y = ones(m,n)
  • 均匀分布随机矩阵——y = rand(n)      y = rand(m,n)
  • 正态分布随机矩阵——y = randn(n)    y = randn(m,n)
  • 线性等分向量——y = linspace(a,b)    默认100等分    %n等分: y = linspace(a,b,n)
  • 对数等分向量——y = logspace(a,b)   默认50等分      %n等分:y = logspace(a,b,n)
  • 矩阵A中元素的个数——n = numel(A)
  • 以输入元素为对角线元素的矩阵——out = blkdiag(a,b,c...)
  • n阶Hadamard矩阵——H = hadamard(n)
  • Hankel矩阵——H = hankel(c)   第一列元素为c,反三角以下元素为0
  • n阶Hilbert矩阵——H = hilb(n)         H(i,j) = 1/(i+j-1)
  • n阶逆Hilbert矩阵——H = invhilb(n)
  • n阶魔方矩阵——M = magic(n)

向量的范数——n = norm(X)  具体help查询    

矩阵的范数——n = norm(A)  具体help查询

其他运算:

  • 矩阵A的特征值——D = eig(A)
  • 特征向量矩阵X和特征值组成的对角阵D——[X,D] = eig(A)
  • 将非奇异矩阵A正交化为Q——Q = orth(A)      (Q' * Q = 单位矩阵)
  • 由已定义的矩阵A,E,O,A作为矩阵的子块,生成矩阵B——B = [A,E;O,A]
  • 矩阵A的列向量组的极大线性无关组——rref(A)
  • 条件数——c = cond(A)   默认为2条件数             p条件数:c = cond(A,p)
数学定义为矩阵A的条件数等于A的范数与A的逆的范数的乘积,即cond(A) = ‖ A ‖·‖ A逆 ‖

LU = A——[L,U] = lu(A)

LU = PA——[L,U,P] = lu(A)

U为上三角阵,L为下三角阵或其变换形式,P为单位矩阵的行变换矩阵

  例子:

解方程组


clear
format rat   %format函数控制输出格式 format rat是小数去用分数输出表示
A=[5,0,4,2;1,-1,2,1;4,1,2,0;1,1,1,1];
B=[3;1;1;0];
S=length(A(:,1))
R=rank(A)
if S==R
   X=A\B
else
   fprintf('error\n')
end

解线性方程组


clear
A=[1,-2,3,1,1;1,1,-1,-1,-2;2,-1,1,0,-2;2,2,5,-1,1];
b=[7;2;7;18];
B=[A,b];
n=length(A(1,:))
RA=rank(A)
RB=rank(B)
if RA==RB
   if RA==n
      X=A\b
   else
      D=rref(B)
   end
else
   fprintf('No Solution for the Equations')
end

解齐次线性方程组


clear
A=[1,1,1,4,-3;2,1,3,5,-5;1,-1,3,-2,-1;3,1,5,6,-7];
R=rank(A)
%X=rref(A)
%仅仅用rref的话,本题的秩=2<5,方程有非零解,需要自己再去做
%因此不必用rref,MATLAB提供了一个求矩阵令空间的函数null来方便求解
Y=null(A,'r')

求非齐次线性方程组的通解


clear
A=[1,5,-1,-1;1,-2,1,3;3,8,-1,1;1,-9,3,7];
b=[-1;3;1;7];
B=[A,b];
RA=rank(A)
RB=rank(B)
Y=null(A,'r')
n=length(b)
if RA==RB
   if RA==n
      X=A\B      %方程组满秩时,求出唯一解
   else
      p=pinv(A)*b    %在方程组不满秩时,求出特解
      Y=null(A,'r')  %求出方程组的基础解系
      n1=length(Y(1,:))
      k=sym(['kI'])  %这里是ki,是为了把数组k说明成字符型变量
      for i=1:n1     %求出方程的全部解
         k(i)=strcat('k',num2str(i))
         p=p+k(i)*Y(:,i)
      end
   end
else
   fprintf('No Solution for the Equations')
end

  图形功能

这一块结合实例来了解相关函数。

二维图像:

  

①——plot


x=-10:0.1:10;
y1=3*x.^4+x.^2-1;
plot(x,y1,'r')
%x是向量,所以计算一定要表示成点乘

②——fplot


%函数
function y2=draw2(x)
y2=sin(x)+x;
end
%在命令行输入
fplot(@draw2,[-5,5])

③——ezplot


y3='x.^2*exp(-x.^2)';
ezplot(y3)


syms x
y=log10(x+sqrt(1+x.^2));
dy=diff(y,x);%求导函数,但x不能先定义为向量,所以用subs让x1作为一符号代替表达式y中的默认变量
x1=-3:0.1:3;
y1=subs(y,x1);
dy1=subs(dy,x1);
plot(x1,y1,'r',x1,dy1,'b')

 三维图像:

①——plot3


t=0:0.1:6*pi;
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z)

②——参数方程


t=0:0.1:6*pi;
x=1/2*cos(t)+1/2;
y=1/2*sin(t);
z=sqrt(1-x.^2-y.^2);
plot3(x,y,z)

③——meshgrid和mesh


s=-10:0.1:10;
t=-10:0.1:10;
[x,y]=meshgrid(s,t);%由两向量生成网格点(x,y),与mesh()配合使用
z=x.^2-y.^2;
mesh(x,y,z);%绘制着色的三维网纹去年

④——cylinder


s=-pi/5:pi/50:pi/5;
[X,Y,Z]=cylinder(1./s,60);%绘制用向量表示的曲线围绕x轴旋转的曲面,与surf()配合使用,相当于mesh()
surf(X,Y,Z);%mesh(X,Y,Z);

  MATLAB的程序结构

设计一段程序,分别用for循环和while循环求1+2+3+…+100的和,写出完成实验的程序。


clear;
sum=0;
for k=1:100
    sum=sum+k;%s=s+k
end
sum
注意:i和j是系统的虚单位,原则上不能作为变量,建议换成k(sum属于系统函数名,同理,所以还是建议写成s)


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

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

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空