根据matlab中的条件向数组添加特定索引

时间:2013-11-13 09:51:57

标签: arrays matlab

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

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

  1. 附加的行必须是S中的索引,例如100到200。
  2. 只应包含T(100:200)==1的行。这意味着,如果T(100)=0则不应包含S(100,:),如果T(101)=1则应包括S(101,:)
  3. 我尝试使用以下内容但由于明显的原因而失败,因为它包含来自第一个索引而不是来自第100个。

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

    除了编写一个完整的循环之外,还有更简单的方法在matlab中执行此操作吗? 谢谢你的回答。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

N = 100;
M = 200;
result = S(N-1+find(T(N:M)==1),:);

答案 2 :(得分:1)

你走了:

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

S(idx,:)