让我们考虑使用矩阵进行说明
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
所以在重塑(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对吗?提前感谢
答案 0 :(得分:1)
Matlab按列存储其矩阵。这意味着在内部它基本上只是一个数组,其中所有列都连接在一起。矩阵的形状是单独存储的。
我不太明白你的最后一个问题,因为你的矩阵A有18个条目,但是你试图将它重塑为一个矩阵,其中3 * 4 = 12个条目
我希望这有助于你
答案 1 :(得分:1)
Reshape
用于重新排序元素,如@alex answer 中所述(当然,元素数量不得更改!)。如果您想调整矩阵,请使用indexing:
A = rand(6,6) % Start matrix
A =
0.0113 0.5362 0.3510 0.7220 0.2084 0.8344
0.5013 0.9770 0.5221 0.5743 0.8442 0.8102
0.1214 0.0390 0.9594 0.1385 0.9038 0.6081
0.2480 0.9165 0.1986 0.3692 0.5135 0.6154
0.3631 0.9843 0.3697 0.5964 0.6437 0.6901
0.9978 0.8182 0.1990 0.8273 0.6811 0.2464
A(2:3, :) = [] % This removes 2nd and 3rd lines
A(:, [2 5]) = [] % This further removes 2nd and 5th columns
A =
0.0113 0.3510 0.7220 0.8344
0.2480 0.1986 0.3692 0.6154
0.3631 0.3697 0.5964 0.6901
0.9978 0.1990 0.8273 0.2464
AA = zeros(6, 6); % Build larger matrix the size you want ...
AA([1 2 4 6], [2 3 5 6]) = A % Place elements of `A` inside `AA` as you wish ...
AA =
0.0000 0.0113 0.3510 0.0000 0.7220 0.8344
0.0000 0.2480 0.1986 0.0000 0.3692 0.6154
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.3631 0.3697 0.0000 0.5964 0.6901
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.9978 0.1990 0.0000 0.8273 0.2464
A([4 4 1 1 2 3], end:-1:1)
ans =
0.2464 0.8273 0.1990 0.9978
0.2464 0.8273 0.1990 0.9978
0.8344 0.7220 0.3510 0.0113
0.8344 0.7220 0.3510 0.0113
0.6154 0.3692 0.1986 0.2480
0.6901 0.5964 0.3697 0.3631