我有一个矩阵A(97x13),范围从0到90
我想在特定的行中找到哪些值低于45。
find(A(:,[4,7,10])<45);
我的问题是我不知道如何将结果索引与整个A矩阵联系起来。
有人可以帮我吗?
答案 0 :(得分:2)
结果是linear index的形式。您可以使用ind2sub
转换为行和列:
cols = [4,7,10];
ind = find(A(:,cols)<45);
[r, c] = ind2sub([size(A,1) numel(rows)], ind);
c = cols(c); %// change from "1,2,3" to "4,7,10"
为了节省一些运行时间,您可以使用&#34;手册&#34;版本ind2sub
:
cols = [4,7,10];
ind = find(A(:,cols)<45);
r = mod(ind-1,size(A,1))+1;
c = cols(ceil(ind/size(A,1)));
示例:
A =
8 66 87 57 4 24 10 82 3 55
24 44 50 62 80 31 59 81 67 56
73 53 47 36 83 62 45 31 46 78
3 22 21 34 72 13 71 63 44 73
84 42 45 89 9 65 65 18 82 52
给出
r =
3
4
1
c =
4 4 7
答案 1 :(得分:1)
使用ind2sub获取行和列,例如:
>> A=round(rand(5,3)*90)
A =
85 19 18
79 27 20
50 42 15
56 21 20
53 76 39
>> [I,J] = ind2sub(size(A), find(A(:,[1,3])<45))
I =
1
2
3
4
5
J =
2
2
2
2
2
>>