【发布时间】:2014-06-10 10:11:22
【问题描述】:
让我们考虑以下矩阵进行说明
A=rand(6,3)
A =
0.3500 0.8308 0.7537
0.1966 0.5853 0.3804
0.2511 0.5497 0.5678
0.6160 0.9172 0.0759
0.4733 0.2858 0.0540
0.3517 0.7572 0.5308
在应用重塑功能后,我们总共有 6*3=18 个元素
reshape(A,2,9)
ans =
0.3500 0.2511 0.4733 0.8308 0.5497 0.2858 0.7537 0.5678 0.0540
0.1966 0.6160 0.3517 0.5853 0.9172 0.7572 0.3804 0.0759 0.5308
很明显,如果我们查看原始数组,那么我们可以很容易地看到这些新矩阵的行与
B=A(:)'
B =
Columns 1 through 9
0.3500 0.1966 0.2511 0.6160 0.4733 0.3517 0.8308 0.5853 0.5497
Columns 10 through 18
0.9172 0.2858 0.7572 0.7537 0.3804 0.5678 0.0759 0.0540 0.5308
>> B(1:2:18)
ans =
0.3500 0.2511 0.4733 0.8308 0.5497 0.2858 0.7537 0.5678 0.0540
所以在 reshape(A,m,n) 中,m*n 必须是总元素,m 表示从第一列中的第一个元素开始,在列中递增直到第 n 个元素?也是当我尝试过时
reshape(A,3,4)
Error using reshape
To RESHAPE the number of elements must not change.
它给了我错误,所以每当我选择 n,m 必须是数组中的元素数除以 n 对吗?提前谢谢
【问题讨论】:
-
是的,
n*m必须等于numel(A)。但是您也可以这样做:reshape(A,3,[])并让reshape自动选择您使用[]的维度的大小。 -
你的问题到底是什么?
-
同样可以用 reshape(A,[],3) right
-
m 和 n 在 reshape(A,m,n) 中的作用以及它们的工作原理
-
不值得投反对票,但对我来说重要的是知识