Matlab:在期望的边界之间找到矩阵的值

时间:2012-11-17 11:54:26

标签: matlab sorting matrix

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

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元素,并将这些值放在矩阵中。有可能吗?

1 个答案:

答案 0 :(得分: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);

如果您只是要复制元素或行,那么甚至不需要查找,您可以使用logical indexing

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

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

这会复制第一列的元素,如果要复制整行,请使用colon operator

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