% 创建行向量
row_vector = [1, 2, 3, 4, 5];
% 创建列向量
column_vector = [1; 2; 3; 4; 5];
% 创建二维数组
matrix = [1, 2, 3; 4, 5, 6; 7, 8, 9];
% 创建一个 2*2*2 的三维数组
highD_array = [[1, 2; 3, 4],[5, 6; 7, 8]];
%创建一个 2*2*2 的三维数组
suzu(2,2,2)=0
% 创建从1到10的整数数组
array1 = 1:10;
% 创建从1到10,步长为2的数组
array2 = 1:2:10;
当使用 start:end
这种形式时,会创建一个从 start
开始,以步长为 1 递增,直到不超过 end
的等差数列行向量。
使用 start:step:end
形式时,会创建一个从 start
开始,以 step
为步长递增(或递减,当 step
为负数时),直到不超过 end
的等差数列行向量。
如果按照 step
递增(或递减)无法正好达到 end
值,向量会取不超过 end
的最接近的值。
% 创建维度为3*4*5全零矩阵
zero_matrix = zeros(3,4,5);
% 创建维度为2*2全一矩阵
ones_matrix = ones(2,2);
% 创建单位矩阵
identity_matrix = eye(3);
% 创建对角矩阵
diagonal_vector = [1, 2, 3, 4];
diagonal_matrix = diag(diagonal_vector);
% 创建随机矩阵,元素值在 0 到 1 之间
random_matrix = rand(4,4,4);
% 创建魔术矩阵
magic_matrix = magic(5);
随机矩阵是指矩阵中的元素是随机生成的矩阵。在 MATLAB 里,常用 rand
函数来生成随机矩阵,其背后的原理基于均匀分布随机数生成算法。简单来说,均匀分布意味着在指定的区间内,每个数值被选中的概率是相等的。当使用 rand
函数时,它会按照均匀分布的规则,在 (0, 1)
这个区间内为矩阵的每个元素随机选取一个值。
魔术矩阵(Magic Square)是一种特殊的方阵,也就是行数和列数相等的矩阵。它具有独特的性质:矩阵的每一行、每一列以及两条对角线上的元素之和都相等,这个相等的和被称为魔术常数。对于一个 n 阶魔术矩阵(n 表示矩阵的行数或列数),其魔术常数可以通过公式n(n*n+1)/2计算得出。通过magic(n)生成的矩阵具有重复性。
线性索引是按照数组元素在内存中的存储顺序进行编号,从 1 开始。对于二维数组,元素按列优先存储
% 创建一个 2x3 的数组
A = [1, 2, 3; 4, 5, 6];
% 使用线性索引访问元素
element1 = A(3);
在上述例子中,二维数组 A
按列优先存储,元素依次为 1, 4, 2, 5, 3, 6
,所以 A(3)
访问的是 2
。
下标索引使用下标来访问数组元素
% 创建一个 2x3 的数组
A = [1, 2, 3; 4, 5, 6];
% 使用下标索引访问元素
element2 = A(2, 3); % 访问第 2 行第 3 列的元素
这里 A(2, 3)
访问的是数组 A
中第 2 行第 3 列的元素 6
。
逻辑索引使用一个与原数组大小相同的逻辑数组来选择元素,逻辑数组中的 true
表示选择对应位置的元素,false
表示不选择
% 创建一个 2x3 的数组
A = [1, 2, 3; 4, 5, 6];
% 创建一个逻辑数组
logical_index = [true, false, true; false, true, false];
% 使用逻辑索引访问元素
selected_elements = A(logical_index);
上述代码中,逻辑数组 logical_index
决定了哪些元素会被选择,最终选择的元素为 1, 3, 5
。
可以使用冒号运算符指定行或列的范围来选择数组的一部分。
% 创建一个 3x3 的数组
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
% 选择所有行,第 2 到 3 列的元素
sub_array = A(:, 2:3);
这里 A(:, 2:3)
选择了数组 A
中第 1 到 2 行,第 2 到 3 列的元素,形成一个新的子数组。
语法为A(范围1,范围2,......(根据具体维度来确定))
% 创建一个三维数组
threeD_array = rand(2, 3, 2);
% 选取第 1 个“切片”(第一维为 1),第 2 到第 3 行,第 1 到第 2 列的元素
slice6 = threeD_array(1, 2:3, 1:2);
通过索引能够精准定位数组中的元素,进而对其进行修改。索引既可以针对单个元素,也可以针对一个范围的元素
% 创建一个 3x3 的数组
A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
% 修改单个元素,将第 2 行第 3 列的元素改为 20
A(2, 3) = 20;
% 修改一个范围的元素,把第 1 行第 1 列到第 2 列的元素都改为 50
A(1, 1:2) = 50;
借助逻辑索引,可依据特定条件来修改数组中的元素。逻辑索引是一个与原数组大小相同的逻辑数组,其中 true
表示对应位置的元素会被修改,false
则表示不修改。
% 创建一个 3x3 的数组
B = [10, 20, 30; 40, 50, 60; 70, 80, 90];
% 将数组中大于 50 的元素都改为 0
B(B > 50) = 0;
在 MATLAB 中,使用空矩阵 []
能够删除数组中的元素。对于二维数组,可以删除行或列;对于一维数组,可以删除特定位置的元素。
% 一维数组删除元素
oneD_array = [1, 2, 3, 4, 5];
% 删除第 3 个元素
oneD_array(3) = [];
% 二维数组删除列
twoD_array = [1, 2, 3; 4, 5, 6; 7, 8, 9];
% 删除第 2 列
twoD_array(:, 2) = [];
水平合并是将多个数组在水平方向(列方向)上拼接在一起,要求参与合并的数组行数必须相同。可以使用方括号 []
或者 horzcat
函数来实现。
% 创建两个示例数组
A = [1, 2; 3, 4];
B = [5, 6; 7, 8];
% 使用方括号进行水平合并
C1 = [A, B];
% 使用 horzcat 函数进行水平合并
C2 = horzcat(A, B);
垂直合并是将多个数组在垂直方向(行方向)上拼接在一起,要求参与合并的数组列数必须相同。可以使用方括号 []
或者 vertcat
函数来实现。
% 创建两个示例数组
D = [1, 2, 3];
E = [4, 5, 6];
% 使用方括号进行垂直合并
F1 = [D; E];
% 使用 vertcat 函数进行垂直合并
F2 = vertcat(D, E);
对于高维数组,可以使用 cat
函数沿指定的维度进行合并。cat
函数的第一个参数指定合并的维度,后面依次跟上要合并的数组。
% 创建两个三维示例数组
G = rand(2, 2, 2);
H = rand(2, 2, 2);
% 沿第三维进行合并
I = cat(3, G, H);