查找特定行中的特定值

时间:2014-12-04 23:28:24

标签: arrays matlab matrix

我有一个矩阵A(97x13),范围从0到90

我想在特定的行中找到哪些值低于45。

find(A(:,[4,7,10])<45);

我的问题是我不知道如何将结果索引与整个A矩阵联系起来。

有人可以帮我吗?

2 个答案:

答案 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

>>