我有一个按升序排序的矩阵。
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元素,并将这些值放在矩阵中。有可能吗?
答案 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<500
和T<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 , :);