【问题标题】:How to construct an array of incrementing subsets in Matlab如何在Matlab中构造一个递增子集的数组
【发布时间】:2014-02-07 19:24:13
【问题描述】:

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

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

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

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 

再次感谢

【问题讨论】:

  • 更新了问题。感谢 Luis 和其他人。

标签: arrays matlab vector functional-programming subset


【解决方案1】:

非常简单:使用reshape:

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

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

Y = vec2mat(X,k);

【讨论】:

  • 我能说什么? "You're right. When you're right, you're right, and you're right!"。这是一个简单的... :)
  • @chappjc 非常简单,是的。我不知道那句话! :-)
  • 当我读到这个问答时,我突然想到了……唐人街。说真的,我试图想出一个聪明的替代方案,但这似乎只是其中一种情况,只有一个明智的解决方案。也许有人会证明我错了?
  • @chappjc 我敢打赌你可以用accumarray 做到这一点! :-D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
相关资源
最近更新 更多