如何在没有循环的情况下重新排列此向量?

时间:2015-08-18 15:31:55

标签: matlab reshape

我有一个向量A = 1:2*N。我想把它的元素重新排列成另一个这样的向量:

B = [A(1:2), A(N+1:N+2), A(3:4), A(N+3:N+4), ..., A(N-1:N), A(2*N-1:2*N)];

如何在Matlab中最有效地实现这一点?没有循环?

1 个答案:

答案 0 :(得分:2)

N为偶数时,以下内容将起作用:

N = 4;
A = 1:2*N;

temp = permute(reshape(A,2,[],2), [1,3,2]);

B = temp(:)'

如果N可以是奇数,我猜你可以用A填充NaN,然后在结尾删除B的最后两个元素?即A(end+1:end+2) = NaN在开头,然后B = B(1:end-2)在结尾

相关问题