文章目录
前言
在 MATLAB 里,矩阵和数组是其核心数据结构,掌握它们的操作是进行高效计算和数据处理的关键。下面为你详细介绍 MATLAB 矩阵与数组的基础操作。
环境配置
MATLAB下载安装教程:https://blog.csdn.net/2501_91538706/article/details/147232213
一、创建矩阵与数组
(一)直接输入法
使用方括号[]来创建矩阵或数组,元素之间可用空格或逗号分隔,不同行用分号分隔。
- 创建行向量
a = [1 2 3 4 5]; % 用空格分隔元素
b = [1, 2, 3, 4, 5]; % 用逗号分隔元素,效果与上面相同
- 创建列向量
c = [1; 2; 3; 4; 5]; % 分号表示换行
- 创建二维矩阵
A = [1 2 3; 4 5 6; 7 8 9]; % 3行3列矩阵
B = [1, 2, 3; 4, 5, 6]; % 2行3列矩阵
(二)特殊矩阵生成函数
MATLAB 提供了许多函数用于生成特殊矩阵。
- 全零矩阵:zeros(m, n)生成 m 行 n 列的全零矩阵。
Z = zeros(3, 4); % 生成3行4列的全零矩阵
- 全一矩阵:ones(m, n)生成 m 行 n 列的全一矩阵。
O = ones(2, 3); % 生成2行3列的全一矩阵
- 单位矩阵:eye(n)生成 n 阶单位矩阵(主对角线元素为 1,其余为 0)。
I = eye(3); % 生成3阶单位矩阵
- 随机矩阵:rand(m, n)生成 m 行 n 列的随机矩阵,元素值在 0 到 1 之间均匀分布。
R = rand(2, 2); % 生成2行2列的随机矩阵
(三)使用冒号表达式创建数组
冒号表达式的格式为start:step:end,用于创建从start开始,以step为步长,到end结束的数组。
x = 1:5; % 等同于 [1 2 3 4 5],默认步长为1
y = 0:2:10; % 生成 [0 2 4 6 8 10],步长为2
z = 5👎1; % 生成 [5 4 3 2 1],步长为-1
二、矩阵与数组的基本操作
(一)访问元素
MATLAB 中矩阵和数组的索引从 1 开始。
- 访问单个元素:使用矩阵名(行索引, 列索引)访问矩阵中指定位置的元素。
A = [1 2 3; 4 5 6; 7 8 9];
a12 = A(1, 2); % 获取第1行第2列的元素,结果为2
a33 = A(3, 3); % 获取第3行第3列的元素,结果为9
- 访问整行或整列:使用冒号:表示所有行或列。
row2 = A(2, 😃; % 获取第2行的所有元素,结果为 [4 5 6]
col3 = A(:, 3); % 获取第3列的所有元素,结果为 [3; 6; 9]
- 访问子矩阵:使用行列索引范围获取子矩阵。
subA = A(1:2, 2:3); % 获取第1到2行,第2到3列的子矩阵,结果为 [2 3; 5 6]
(二)修改元素
直接通过索引对元素进行赋值来修改矩阵或数组中的元素。
A = [1 2 3; 4 5 6; 7 8 9];
A(2, 2) = 10; % 将第2行第2列的元素修改为10,修改后A变为 [1 2 3; 4 10 6; 7 8 9]
A(3, 😃 = [11 12 13]; % 将第3行的元素修改为 [11 12 13]
(三)矩阵运算
- 基本算术运算:矩阵的加+、减-、乘*、除/、乘方^等运算。
A = [1 2; 3 4];
B = [5 6; 7 8];
C = A + B; % 矩阵加法,结果为 [6 8; 10 12]
D = A * B; % 矩阵乘法,结果为 [19 22; 43 50]
E = A.^2; % 矩阵元素的平方,结果为 [1 4; 9 16],注意这里的点号
- 点运算:点运算用于对矩阵的对应元素进行运算,包括点乘.*、点除./、点乘方.^等。
A = [1 2; 3 4];
B = [5 6; 7 8];
C = A .* B; % 对应元素相乘,结果为 [5 12; 21 32]
D = A ./ B; % 对应元素相除,结果为 [0.2 0.3333; 0.4286 0.5]
(四)数组操作函数
MATLAB 提供了丰富的函数用于数组操作。
- 求矩阵大小:size()函数返回矩阵的行数和列数。
A = [1 2 3; 4 5 6];
[m, n] = size(A); % m为行数2,n为列数3
- 矩阵转置:使用单引号’进行矩阵转置。
A = [1 2 3; 4 5 6];
B = A’; % 转置后B为 [1 4; 2 5; 3 6]
- 矩阵拼接:使用方括号[]进行矩阵的拼接。
A = [1 2; 3 4];
B = [5 6; 7 8];
C = [A B]; % 水平拼接,结果为 [1 2 5 6; 3 4 7 8]
D = [A; B]; % 垂直拼接,结果为 [1 2; 3 4; 5 6; 7 8]
三、矩阵与数组的高级操作
(一)线性代数运算
- 矩阵求逆:inv()函数用于求方阵的逆矩阵。
A = [1 2; 3 4];
B = inv(A); % 求A的逆矩阵
- 特征值和特征向量:eig()函数用于计算矩阵的特征值和特征向量。
A = [1 2; 3 4];
[eigenvectors, eigenvalues] = eig(A); % 计算特征值和特征向量
- 矩阵分解:如 LU 分解、QR 分解等。
A = [1 2; 3 4];
[L, U] = lu(A); % LU分解
[Q, R] = qr(A); % QR分解
(二)向量化运算
向量化运算是 MATLAB 的一大优势,它可以避免使用循环,提高计算效率。
% 传统循环方式
a = [1 2 3 4 5];
b = zeros(1, 5);
for i = 1:length(a)
b(i) = a(i)^2;
end
% 向量化方式
a = [1 2 3 4 5];
b = a.^2; % 直接对数组每个元素进行平方运算,效率更高
四、实例演示
(一)计算矩阵的行列式
A = [1 2 3; 4 5 6; 7 8 9];
det_A = det(A); % 计算矩阵A的行列式,结果为0
(二)解线性方程组
求解方程组:
x + 2y + 3z = 1
4x + 5y + 6z = 2
7x + 8y + 10z = 3
A = [1 2 3; 4 5 6; 7 8 10];
b = [1; 2; 3];
x = A\b; % 求解线性方程组Ax = b