入坑MATLAB必会的吐血总结
本渣想回过头来整理一下MATLAB的一些基本的知识(很多东西比较琐碎,应该系统的梳理梳理),下文中没有提到的,自己用help查即可。
此文用来存个档,便于回顾。
由于matlab各版本部分语法存在差异,可能会出现bug,用help查帮助文档即可。
里面的一些内容仅供参考,知识量有限,仅供入门。
后期可能会随缘写一点笔记。
如果没有装Matlab,我这里有一篇建模软件的博客:https://www.cnblogs.com/cruelty_angel/p/10563509.html
变量名:字母数字串(第一个字符必须英文字母 | 字符间无空格 | 最多19个字符);
用%注解;
检查现存于工作空间(Workspace)的变量,可键入who;
检查更加详细的信息,可键入whos;
删除工作空间里的变量clear;
一些永久常数:
基本虚数单位 i或j;
系统的浮点精确度 eps;
无限大 inf;
系统所能表示的最大/最小数值 realmax / realmin;
非数值 NaN;
圆周率 pi;
函数的输入/输出参数个数 nargin / nargout;
搜寻路径:which(空格)文件名;
1|0一、线性代数
1|1矩阵
基本命令:
- 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为单位矩阵的行变换矩阵
1|2例子:
①解方程组
求解方程组⎧⎩⎨⎪⎪⎪⎪⎪⎪5x1+4x3+2x4=3x1−x2+2x3+x4=14x1+x2+2x3=1x1+x2+x3+x4=0{5x1+4x3+2x4=3x1−x2+2x3+x4=14x1+x2+2x3=1x1+x2+x3+x4=0的解。
②解线性方程组
求解线性方程组:
⎧⎩⎨⎪⎪⎪⎪⎪⎪x1−2x2+3x3+x4+x5=7x1+x2−x3−x4−2x5=22x1−x2+x3−2x5=72x1+2x2+5x3−x4+x5=18{x1−2x2+3x3+x4+x5=7x1+x2−x3−x4−2x5=22x1−x2+x3−2x5=72x1+2x2+5x3−x4+x5=18
③解齐次线性方程组
⎧⎩⎨⎪⎪⎪⎪⎪⎪x1+x2+x3+4x4−3x5=02x1+x2+3x3+5x4−5x5=0x1−x2+3x3−2x4−x5=03x1+x2+5x3+6x4−7x5=0{x1+x2+x3+4x4−3x5=02x1+x2+3x3+5x4−5x5=0x1−x2+3x3−2x4−x5=03x1+x2+5x3+6x4−7x5=0
④求非齐次线性方程组的通解
⎧⎩⎨⎪⎪⎪⎪⎪⎪x1+5x2−x3−x4=−1x1−2x2+x3+3x4=33x1+8x2−x3+x4=1x1−9x2+3x3+7x4=7{x1+5x2−x3−x4=−1x1−2x2+x3+3x4=33x1+8x2−x3+x4=1x1−9x2+3x3+7x4=7
1|3图形功能
这一块结合实例来了解相关函数。
二维图像:
①——plot
②——fplot
③——ezplot
④——两曲线
三维图像:
①——plot3
②——参数方程
③——meshgrid和mesh
④——cylinder
1|4MATLAB的程序结构
设计一段程序,分别用for循环和while循环求1+2+3+…+100的和,写出完成实验的程序。
注意:i和j是系统的虚单位,原则上不能作为变量,建议换成k(sum属于系统函数名,同理,所以还是建议写成s)
switch以及一些像break、return、continue之类的程序流程控制语句,过于easy,请自行查询。
补充实例:
2|0二、微积分
2|11.极限和微分
函数类别 | MATLAB函数 |
幂函数 | x^a || sqrt(x) |
指数函数 | a^x || exp(x) |
对数函数 | log(x)【即lnx】 || log2(x) || log10(x) |
三角函数 | sin(x) || cos(x) || tan(x) || cot(x) || sec(x) || csc(x) |
反三角函数 | asin(x) || acos(x) || atan(x) || acot(x) || asec(x) || acsc(x) |
绝对值函数 | abs(x) |
求极限(摘自MATLAB2018说明文档):