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<500との両方が含まれる行T<490です。もちろん、これら2つを分離することができます。

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

要素または行をコピーするだけの場合は、検索も必要なく、論理インデックスを使用できます。

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

と同じです

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

これにより、最初の列の要素がコピーされます。行全体をコピーする場合は、コロン演算子を使用します。

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