假设我有一个向量:
A=[1 2 3 6 7 8 11 12 13]
我试图获得最终输出,如:
[1 6 11 2 7 12 3 8 13]
将向量重新排列到每第n列的前面,在本例中为第3列。使用索引可以工作,但它需要一个循环,我试图避免。知道如何以矢量化的方式做到这一点吗?谢谢!
nth=3;
for i=1:nth:size(A,2)
A_(:,nth)= A(:,i:nth:end)
end
答案 0 :(得分:1)
@jodag在评论中发布的建议完全正常。或者,这也应该起作用......但约束是相同的,A
必须可以被nth
整除:
nth = 3;
A = [1 2 3 6 7 8 11 12 13];
A_len = numel(A);
A_div = floor(A_len / nth);
seq = repmat(1:nth:A_len,1,A_div);
inc = sort(repmat(0:nth-1,1,A_div));
A = A(seq + inc)
输出:
A =
1 6 11 2 7 12 3 8 13