如何在Matlab中构造一个递增子集数组

时间:2014-02-07 19:24:13

标签: arrays matlab vector functional-programming subset

在Matlab中,假设你有一个大的向量X

X = [1 2 3 4 5 6 ... 1000]

如何选择具有递增索引的K元素子集数组? (请不要循环)。

k = 100; % 100 element subsets
Y = foo(X,k);

>> Y = 
        1   2   3 ... 100
      101 102 103 ... 200
      201 202 203 ... 300
       .   .   .  ...  . 
       .   .   .  ...  .
       .   .   .  ...  .
      901 902 903 ... 1000

由于

- - - - 更新--------

感谢您的快速回复。在讨论愚蠢的问题时我讨厌它。

现在,我有一个更具挑战性的(我真的想知道)。 鉴于:

X = [1 2 3 4 5 6 ... 1000];
k = 900;

你是如何制作的?

Y = foo(X,k);

>> Y = 1   2   3 ... 900
       2   3   4 ... 901
       3   4   5 ... 902
       .   .   . ...  .
       .   .   . ...  .
       .   .   . ...  .
      100 101 102... 1000 

再次感谢

1 个答案:

答案 0 :(得分:1)

非常简单:使用reshape

X = 1:1000;
k = 100;
Y = reshape(X,k,[]).';

或者,如果您有通讯工具箱,则可以使用vec2mat

Y = vec2mat(X,k);