1

我有一个维度数组S 440x120。还有另一个数组T 440x1

我需要根据以下条件将 S 行附加到另一个数组 T1

  1. 附加的行必须来自索引,例如 S 中的 100 到 200。
  2. 只有那些行T(100:200)==1应该被包括在内。这意味着 if T(100)=0thenS(100,:)不应该被包括在内,而 if T(101)=1thenS(101,:)应该被包括在内。

我尝试使用以下内容,但由于明显的原因它失败了,因为它包括第一个索引而不是第 100 个索引。

T1=S(T(100:200)==1,:);

除了编写整个循环之外,在 matlab 中是否有更短的方法来执行此操作?感谢您的回答。

4

3 回答 3

2

怎么样T1=S([zeros(99,1); T(100:200)]==1,:);

于 2013-11-13T09:56:13.360 回答
2

你几乎拥有它。您只需要向数字(非逻辑)索引添加偏移量:

N = 100;
M = 200;
result = S(N-1+find(T(N:M)==1),:);
于 2013-11-13T10:01:30.627 回答
1

干得好:

idx = find(T==1);
idx = idx(idx>=100 & idx<=200);

S(idx,:)
于 2013-11-13T10:16:11.873 回答