% 逗号或空格表示同一行的数,分号表示不同行
A = [1, 2, 3; 4 5 6];
% 分号表示 起始:间距:终值
A = 1:3; %[1 2 3]
A = 1:2:5; %[1 3 5]
% linspace函数,参数分别为起始值、中值、取点数量。等距离取点,得到等差数组
A = linspace(0, pi, 100);
除了上述常用方法,还有下面的特殊函数:
命令 | 说明 | 命令 | 说明 |
---|---|---|---|
eye(n) | n×n单位阵 | eye(m,n) | m×n单位阵 |
ones(n) | n×n全1矩阵 | ones(m,n) | m×n全1矩阵 |
zeros(n) | n×n全0矩阵 | zeros(m,n) | m×n全0矩阵 |
rand(n) | n×n随机矩阵 | rand(m,n) | m×n随机矩阵 |
diag(v) | v为对角元素创建方阵 | diag(v,k) | v为第k条对角线创建矩阵 |
切片的形式和其他语言都差不多,在 () 中切片,特别说明,MATLAB 数组从 1 开始,不是从 0 开始。聪明的你看以下例子就能理解:
% 第 1 行第 2 列
A(1, 2)
% 第 2 行所有列
A(2, :)
% 倒数第二行,第 1、3、5列
A(end-1, [1 3 5])
简单来说就是 : 表示所有,end 表示最后,可以嵌套行向量。
对切片进行复制可以修改,但是两边矩阵的大小要一模一样。
A([2, 4, 6], [1, 3]) = [8, 6; 5, 7; 5, 4];
直接对切片赋 [],即可删除。
以下总结了常用的矩阵相关函数,简单来说,所有你能想到的基本操作都有对应的函数,想干什么直接 google 以下,找都函数名就行了。
命令 | 说明 |
---|---|
rot90(A) | 将A逆时针旋转90° |
rot90(A,k) | 将A逆时针旋转k×90° |
flipdim(X,dim) | dim=1时上下翻转,dim=2时左右翻转 |
det(A) | 求矩阵行列式 |
eig(A) | 求矩阵特征值 |
inv(A) | 求矩阵的逆 |
rank(A) | 求矩阵的秩 |
trace(A) | 求矩阵的迹 |
矩阵的加减运算没啥说的,就是每个数据分别加减,对用的矩阵维度满足要求,如下:
A = [1, 2, 3; 4, 5, 6];
% 每个元素都加 1
B = A + 1
% 对应元素分别相加
B = A + [7, 8, 9; 10, 11, 12];
% 第一行加 1,第二行加 2
B = A + [1; 2];
%第一列加 1,第二列加 2,第三列加 3
B = A + [1, 2, 3];
矩阵的乘法,就要注意了, * ^ / \ 对应的是矩阵的乘除运算,在前面加一个 . 才表示对应位置的数据分别相乘、相除。
A/B 表示 \(AB^{-1}\) ,A\B 表示 \(A^{-1}B\) ,而 A./B 和 A.\B 就没区别了。
A = [1, 2; 3, 4];
B = [3, 4; 5, 6];
% 矩阵乘法
C = A * B;
% 对应位置相乘
C = A .* B;
一个向量可以代表一个多项式,例如 [3 -2 1 0 5] 可以对应多项式:
\[ 3x^4-2x^3+x^2+5 \]
所以可以直接用向量调用下面的函数就可以进行多项式运算:
求p1和p2对应多项式的乘积。
k返回的是多项式p除以q的商,r是余式。即 \(p=conv(q,k)+r\)
求对应多项式导数的向量。
将多项式函数化为向量。其中 f 是数学符号表达式。
本文章使用limfx的vsocde插件快速发布