我有一个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从此矩阵中找到正值的数量?
答案 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)
但对于较大的矩阵来说速度很慢,我不得不承认。