MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB基础] 有类似于count这样的命令吗? (https://www.labfans.com/bbs/showthread.php?t=9626)

slgu 2009-09-10 10:51

有类似于count这样的命令吗?
 
有一X矩阵,其中有些是0,我想计算每列(或行)非零数值的个数,其它软件有一简单的count命令,我刚才试找了一下,未能找到这一简单的命令。虽然有其它的办法能实现,但我想利用最简单(最少用时)的方式实现,不知有哪位知晓?请告知。谢谢!

barcelona 2009-09-10 23:07

回复: 有类似于count这样的命令吗?
 
可以用下面的命令行:
设column表示矩阵X的某一特定列,则该列的0的个数N=sum(sign(find(x(:,column)==0)));同理,矩阵某一行中0的个数表示为N=sum(sign(find(x(row,:)==0)));

slgu 2009-09-11 00:33

回复: 有类似于count这样的命令吗?
 
谢谢2楼对该问题的思考与回复,但用find命令只能单列(行)进行,不太现实,且也过于复杂,不如sum(X~=0)等更为简单。

barcelona 2009-09-11 13:22

回复: 有类似于count这样的命令吗?
 
我看你是要找每行或每列非零个数(不好意思,上面回复时看成是求矩阵中零的个数了),所以按行或列单独查找,如果要找矩阵中所有的非零数就变成了这样:N=sum(sign(find(x~=0)));


直接使用sum(x~=0)获得非零数的个数值只有在矩阵仅包含0和1的时候才成立;

slgu 2009-09-11 17:07

回复: 有类似于count这样的命令吗?
 
>> x=fix(randn(6,5)*5)
x =
-6 -3 0 1 -9
0 1 4 -3 5
3 -4 2 -3 4
1 -6 1 5 0
5 4 6 -8 0
5 0 4 0 -12
>> sum(x~=0)
ans =
5 5 5 5 4
>> sum(x==0)
ans =
1 1 1 1 2
>>

barcelona 2009-09-11 22:51

回复: 有类似于count这样的命令吗?
 
果然!!
说实在的,我从来没这么用过,受教了!!


所有时间均为北京时间。现在的时间是 11:10

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.