使用MATLAB从Matrix中查找正值的数量

时间:2014-01-15 10:09:42

标签: matlab matrix

我有一个6x6双矩阵A

 1   1   2  -1  -2   2

-1  -3   1   1   2   1

 3   5   1  -1  -3   3

 4  -5   2   2   1  -3

-4   1   3   3  -2   3

 2   3  -3  -4   2  -3

如何使用MATLAB从此矩阵中找到正值的数量?

5 个答案:

答案 0 :(得分:9)

您可以使用

sum(A(:) >= 0)
ans = 23

出于好奇,快速的表现检查:

A = randn(10000);

tic 
sum(A(:) >= 0);
toc

tic 
nnz(sign(A)+1);
toc

tic 
size(find(A>=0),1);
toc

tic 
length(A(A>=0));
toc

Elapsed time is 0.147514 seconds.
Elapsed time is 0.769115 seconds.
Elapsed time is 1.107935 seconds.
Elapsed time is 0.820353 seconds.

答案 1 :(得分:2)

我的建议:

nnz(sqrt(A)+sqrt(A)'.')
ans =  23

这不是最快的解决方案,但它是唯一能说明'.'之间差异的解决方案。

答案 2 :(得分:1)

使用find

> count = size(find(A>=0),1)
count =  23

答案 3 :(得分:1)

x = [
  1  1  2 -1 -2  2 ;
 -1 -3  1  1  2  1 ;
  3  5  1 -1 -3  3 ;
  4 -5  2  2  1 -3 ;
 -4  1  3  3 -2  3 ;
  2  3 -3 -4  2 -3 ]

length( x(x>0) )

和= 23p>

答案 4 :(得分:1)

更加不同寻常:

nnz(sign(A)+1)

但对于较大的矩阵来说速度很慢,我不得不承认。