PDA

查看完整版本 : [MATLAB基础] 有类似于count这样的命令吗?


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

barcelona
2009-09-10, 23:07
可以用下面的命令行:
设column表示矩阵X的某一特定列,则该列的0的个数N=sum(sign(find(x(:,column)==0)));同理,矩阵某一行中0的个数表示为N=sum(sign(find(x(row,:)==0)));

slgu
2009-09-11, 00:33
谢谢2楼对该问题的思考与回复,但用find命令只能单列(行)进行,不太现实,且也过于复杂,不如sum(X~=0)等更为简单。

barcelona
2009-09-11, 13:22
我看你是要找每行或每列非零个数(不好意思,上面回复时看成是求矩阵中零的个数了),所以按行或列单独查找,如果要找矩阵中所有的非零数就变成了这样:N=sum(sign(find(x~=0)));


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

slgu
2009-09-11, 17:07
>> 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
果然!!
说实在的,我从来没这么用过,受教了!!