在 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 提供了许多函数用于生成特殊矩阵。
Z = zeros(3, 4); % 生成3行4列的全零矩阵
O = ones(2, 3); % 生成2行3列的全一矩阵
I = eye(3); % 生成3阶单位矩阵
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 = 51; % 生成 [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 提供了丰富的函数用于数组操作。
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]
A = [1 2; 3 4];
B = inv(A); % 求A的逆矩阵
A = [1 2; 3 4];
[eigenvectors, eigenvalues] = eig(A); % 计算特征值和特征向量
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