Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2009-08-28
年龄: 45
帖子: 14
声望力: 16 ![]() |
![]()
可以用下面的命令行:
设column表示矩阵X的某一特定列,则该列的0的个数N=sum(sign(find(x(:,column)==0)));同理,矩阵某一行中0的个数表示为N=sum(sign(find(x(row,:)==0))); |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21 ![]() |
![]()
谢谢2楼对该问题的思考与回复,但用find命令只能单列(行)进行,不太现实,且也过于复杂,不如sum(X~=0)等更为简单。
此帖于 2009-09-11 08:28 被 slgu 编辑。 |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-08-28
年龄: 45
帖子: 14
声望力: 16 ![]() |
![]()
我看你是要找每行或每列非零个数(不好意思,上面回复时看成是求矩阵中零的个数了),所以按行或列单独查找,如果要找矩阵中所有的非零数就变成了这样:N=sum(sign(find(x~=0)));
直接使用sum(x~=0)获得非零数的个数值只有在矩阵仅包含0和1的时候才成立; |
![]() |
![]() |
![]() |
#4 |
高级会员
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21 ![]() |
![]()
>> 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 >> |
![]() |
![]() |
![]() |
#5 |
初级会员
注册日期: 2009-08-28
年龄: 45
帖子: 14
声望力: 16 ![]() |
![]()
果然!!
说实在的,我从来没这么用过,受教了!! |
![]() |
![]() |