如何在没有循环的情况下重新排列这个向量?
How to rearrange this vector without a loop?
我有一个矢量 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 中实现它?没有循环?
以下将在 N
为偶数时起作用:
N = 4;
A = 1:2*N;
temp = permute(reshape(A,2,[],2), [1,3,2]);
B = temp(:)'
如果 N
可以是奇数,我猜你可以用两个 NaN
填充 A
,然后在最后从 B
中删除最后两个元素?即 A(end+1:end+2) = NaN
在开头,然后 B = B(1:end-2)
在结尾
我有一个矢量 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 中实现它?没有循环?
以下将在 N
为偶数时起作用:
N = 4;
A = 1:2*N;
temp = permute(reshape(A,2,[],2), [1,3,2]);
B = temp(:)'
如果 N
可以是奇数,我猜你可以用两个 NaN
填充 A
,然后在最后从 B
中删除最后两个元素?即 A(end+1:end+2) = NaN
在开头,然后 B = B(1:end-2)
在结尾