我在维度上有一个数组S 440x120
。还有另一个数组T 440x1
。
我需要根据以下条件将说明的S行附加到另一个数组T1
T(100:200)==1
的行。这意味着,如果T(100)=0
则不应包含S(100,:)
,如果T(101)=1
则应包括S(101,:)
。我尝试使用以下内容但由于明显的原因而失败,因为它包含来自第一个索引而不是来自第100个。
T1=S(T(100:200)==1,:);
除了编写一个完整的循环之外,还有更简单的方法在matlab中执行此操作吗? 谢谢你的回答。
答案 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,:)