MATLAB:如何重新排序此向量?

时间:2015-11-12 02:22:46

标签: matlab vector

我有一个列向量A.

我想将A重新排序为一个新的列向量B,它应按如下方式组织,每个第12个元素:

[元素1,13,25 ......然后2,14,26,......,3,15,27等等]

我可以使用以下代码开始

B = A(1:12:length(A))

我可以继续这样做并附加到B.然而,我怀疑有更好的方法可以做到这一点,而不必重复十二次代码。

1 个答案:

答案 0 :(得分:1)

扩展戴维斯评论(这提供了一个很好的建议,但有点模糊)。您可以使用重塑来创建矩阵,其中行具有您想要的形状[1,13,15, ...; 2,14,26, ...; ...]。然后,您可以转置矩阵并使用重新整形重建它。这个例子的规模略小,长度为24的矢量和更短的排列[1,9,17,2,10,18, ...](步长为8)。

a = 1:24
q = reshape(a,8,3)
r = q.'
b = reshape(r,1,24)

请注意,如果向量中的元素数量不是M * N,则可能需要用零填充。

按照示例,您还将向您展示Matlab按列工作,这可能是您将在这里学到的最重要的事情。利用这些知识,您将来可以编写更有效的Matlab代码。