重塑59x16双重成236x4?

时间:2017-07-04 11:20:39

标签: matlab matrix reshape

如何在MATLAB中重塑矩阵,最好使用reshape

简单的矩阵设置:

A = [1 4 7 10; 2 5 8 11; 3 6 9 12]

我想重塑成

B = [1 4; 2 5; 3 6; 7 10; 8 11; 9 12]

我尝试了reshape的多种设置,但我无法理解。

1 2 3 4
5 6 7 8

重塑为

1 2
5 6
3 4
7 8

3 个答案:

答案 0 :(得分:7)

您可以使用reshape(permute(reshape(A,size(A,1),2,[]),[1 3 2]),[],2) permute

A

感谢@LuisMendo建议修改答案,以避免取决于. └── src ├── Domain │   ├── Customer │   │   ├── Basic.php │   │   └── Premium.php │   ├── Book.php │   ├── Customer.php │   ├── Payer.php │   └── Person.php └── init.php 的大小。

答案 1 :(得分:3)

如果我理解正确的转变,那就是:

A = [1 4 7 10; 2 5 8 11; 3 6 9 12]
B = A(:,1:end/2);
B = [B;A(:,end/2+1:end)];

这是对的吗?

编辑: 或者一般情况:

function [B] = elefaaant(A,n)
[a,b] = size(A);
if mod(b,n) ~= 0
    error('Cannot reshape')
end
B = zeros(a*n,b/n);
fac = b/n;
for i = 1:n
    B((i-1)*a+1:i*a,:) = A(:,(i-1)*fac+1:i*fac);
end

答案 2 :(得分:0)

B = A(:,1:end/2);
B = [B;A(:,end/2+1:end)];

C = B(:,1:end/2);
C = [C;B(:,end/2+1:end)];

也许它可以用更简单的方式完成,但似乎有效。