【发布时间】:2015-11-11 15:23:30
【问题描述】:
我有一个向量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 中最有效地实现这一点?没有循环?
【问题讨论】:
我有一个向量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 可能是奇数,我猜你可以用两个NaNs 填充A,然后在最后从B 中删除最后两个元素?即A(end+1:end+2) = NaN在开头,然后B = B(1:end-2)在结尾
【讨论】: