1

我对矩阵维度和find函数有疑问。

对于每一行,我试图找到与大于 20 的值相关的索引并将结果存储在另一个矩阵中。

例如:

A = [
    10  21  30
     1  40  50
     1   0   0 
    50  10   3];


index = 
    2 3 
    2 3
    0
    1

有什么建议么?

4

3 回答 3

5

使用findaccumarray

>> [r c] = find( A > 20 );
>> index = accumarray( r, c, [], @(x) {x} )

index = 
 [ 2, 3 ]
 [ 2, 3 ]
       []
 [    1 ]

请注意,这index是一个单元阵列。

于 2013-09-09T14:44:10.703 回答
2

你真的需要索引吗?如果不:

>> A = [
    10  21  30
     1  40  50
     1   0   0 
    50  10   3];

>> A>20
ans =
     0     1     1
     0     1     1
     0     0     0
     1     0     0
于 2013-09-09T14:50:08.653 回答
2

你的输出必须是那种格式吗?这很简单:

[row,col] = find(A > 20);
于 2013-09-09T14:45:35.550 回答