Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2009-09-10, 10:51   #1
slgu
高级会员
 
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21
slgu 正向着好的方向发展
默认 有类似于count这样的命令吗?

有一X矩阵,其中有些是0,我想计算每列(或行)非零数值的个数,其它软件有一简单的count命令,我刚才试找了一下,未能找到这一简单的命令。虽然有其它的办法能实现,但我想利用最简单(最少用时)的方式实现,不知有哪位知晓?请告知。谢谢!
slgu 当前离线   回复时引用此帖
旧 2009-09-10, 23:07   #2
barcelona
初级会员
 
注册日期: 2009-08-28
年龄: 45
帖子: 14
声望力: 16
barcelona 正向着好的方向发展
默认 回复: 有类似于count这样的命令吗?

可以用下面的命令行:
设column表示矩阵X的某一特定列,则该列的0的个数N=sum(sign(find(x(:,column)==0)));同理,矩阵某一行中0的个数表示为N=sum(sign(find(x(row,:)==0)));
barcelona 当前离线   回复时引用此帖
旧 2009-09-11, 00:33   #3
slgu
高级会员
 
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21
slgu 正向着好的方向发展
默认 回复: 有类似于count这样的命令吗?

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

此帖于 2009-09-11 08:28 被 slgu 编辑。
slgu 当前离线   回复时引用此帖
旧 2009-09-11, 13:22   #4
barcelona
初级会员
 
注册日期: 2009-08-28
年龄: 45
帖子: 14
声望力: 16
barcelona 正向着好的方向发展
默认 回复: 有类似于count这样的命令吗?

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


直接使用sum(x~=0)获得非零数的个数值只有在矩阵仅包含0和1的时候才成立;
barcelona 当前离线   回复时引用此帖
旧 2009-09-11, 17:07   #5
slgu
高级会员
 
注册日期: 2007-06-24
年龄: 70
帖子: 188
声望力: 21
slgu 正向着好的方向发展
默认 回复: 有类似于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
>>
slgu 当前离线   回复时引用此帖
旧 2009-09-11, 22:51   #6
barcelona
初级会员
 
注册日期: 2009-08-28
年龄: 45
帖子: 14
声望力: 16
barcelona 正向着好的方向发展
默认 回复: 有类似于count这样的命令吗?

果然!!
说实在的,我从来没这么用过,受教了!!
barcelona 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 23:44


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