【问题标题】:How to rearrange this vector without a loop?如何在没有循环的情况下重新排列这个向量?
【发布时间】: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 中最有效地实现这一点?没有循环?

【问题讨论】:

    标签: matlab reshape


    【解决方案1】:

    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)在结尾

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2021-10-12
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多