在 MATLAB 中,reshape 是一个函数,用于将数组重新调整为指定的形状,而不改变数组中的数据顺序。它可以将数组的维度重新排列为用户指定的大小。
语法
B = reshape(A, sz1, sz2, ...)
B = reshape(A, [sz1, sz2, ...])
A:输入数组。sz1, sz2, ...:新的维度大小,可以用逗号分隔或数组形式传入。B:返回的数组,具有新的维度。
功能说明
reshape只改变数组的形状,而不改变数据在内存中的存储顺序。- 新的形状必须满足元素总数与原数组一致,否则会报错。
示例
1. 基本用法
将一个 4×3 矩阵调整为 2×6 矩阵:
A = reshape(1:12, 4, 3); % 创建一个 4×3 矩阵
B = reshape(A, 2, 6); % 调整为 2×6 矩阵
disp(B);
结果:
A =
1 5 9
2 6 10
3 7 11
4 8 12
B =
1 3 5 7 9 11
2 4 6 8 10 12
2. 调整为三维数组
将一个 12×1 向量调整为 3×2×2 的三维数组:
A = (1:12)';
B = reshape(A, 3, 2, 2);
disp(B);
结果:
A =
1
2
3
4
5
6
7
8
9
10
11
12
B(:,:,1) =
1 4
2 5
3 6
B(:,:,2) =
7 10
8 11
9 12
3. 使用数组形式的尺寸
A = 1:12;
B = reshape(A, [3, 4]); % 将 A 调整为 3×4 矩阵
disp(B);
结果:
B =
1 4 7 10
2 5 8 11
3 6 9 12
使用场景
-
数据格式转换: 在数据分析或图像处理时,常需要将数据从一维向量转换为矩阵或多维数组。
-
简化计算: 调整数组形状后,可以方便地进行矩阵运算或其他批量计算。
-
兼容性调整: 某些函数可能需要特定的输入形状,
reshape可以调整数据形状以满足要求。
注意事项
-
元素总数必须匹配: 新形状的元素总数必须等于原数组的总数,否则会报错。例如:
A = 1:12; reshape(A, 3, 5); % 错误:元素总数不匹配 -
数据顺序不变:
reshape只改变形状,不会改变数据在内存中的顺序。 -
多维数组的调整: 当调整为多维数组时,数据按列优先顺序填充。
与其他函数的对比
permute:改变数组维度的顺序,而不是形状。squeeze:移除数组中的单一维度。reshape:调整数组形状,但不改变数据顺序。
892

被折叠的 条评论
为什么被折叠?



