0

我有一个按升序排序的矩阵。

S = 25;
RT = zeros(S,2);
  for i = 1:S;
    for j = 1:i;
    R = i *j;
    T = R + j;
    RT(j,:) = [R T];
    end

  end
sortRT = sortrows(RT, [1 2]);
disp(sortRT);

我想找到每列值低于 500(对于 R)和 490(对于 T)的 sortRT 元素,并将这些值放在矩阵中。可能吗?

4

1 回答 1

2

只需使用find

idx = find(sortRT(:,1)<500 & sortRT(:,2)<490)

idx' = 

 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18

这些是 和 的R<500T<490。您当然可以将这两者分开:

idxR500 = find(sortRT(:,1)<500);
idxT490 = find(sortRT(:,2)<490);

如果您只是要复制元素或行,那么 find 甚至没有必要,您可以使用逻辑索引

R500 = sortRT(find(sortRT(:,1)<500) , 1);

是相同的

R500 = sortRT(sortRT(:,1)<500 , 1);

这会复制第一列的元素,如果要复制整行,请使用冒号运算符

R500 = sortRT(sortRT(:,1)<500 , :);
于 2012-11-17T12:42:01.073 回答