MATLAB 矩阵基础操作

矩阵创建、切片、修改、删除

创建

% 逗号或空格表示同一行的数,分号表示不同行
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 \]

所以可以直接用向量调用下面的函数就可以进行多项式运算:

conv(p1,p2)

求p1和p2对应多项式的乘积。

[k,r]=deconv(p,q)

k返回的是多项式p除以q的商,r是余式。即 \(p=conv(q,k)+r\)

polyder(p)

求对应多项式导数的向量。

sym2poly(f)

将多项式函数化为向量。其中 f 是数学符号表达式。


本文章使用limfx的vsocde插件快速发布