我有一个按升序排序的矩阵。
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 元素,并将这些值放在矩阵中。可能吗?
只需使用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);
如果您只是要复制元素或行,那么 find 甚至没有必要,您可以使用逻辑索引:
R500 = sortRT(find(sortRT(:,1)<500) , 1);
是相同的
R500 = sortRT(sortRT(:,1)<500 , 1);
这会复制第一列的元素,如果要复制整行,请使用冒号运算符:
R500 = sortRT(sortRT(:,1)<500 , :);