声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3505|回复: 12

[编程技巧] 如何判定分块矩阵是否为0矩阵

[复制链接]
发表于 2009-3-9 11:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我想把一个二值256*256的矩阵依次四等分,一直分到单个数为止,然后判定每个分块矩阵是否为0矩阵,把非0矩阵的个数统计出来。即第一次分成128*128的矩阵4个,判断这4个矩阵中非0矩阵的个数,并输出。然后往下分成64*64的矩阵16个,并判断这16个矩阵中非0矩阵的个数,并输出。依次到分成1*1*65536.现在我只是会把矩阵分块,不知道如何判定并输出个数。我写的如下,请高手补充,万分感激
for n=1:8
    k=256/2^n
    for i=1:k:256
        for j=1:k:256
        b=a(i:i+k-1,j:j+k-1)
        end
    end
end

[ 本帖最后由 ChaChing 于 2009-3-10 16:03 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-3-9 11:19 | 显示全部楼层
help find
 楼主| 发表于 2009-3-9 11:44 | 显示全部楼层

谢谢!

谢谢!我用了,可是find只是返回了单个矩阵非0矩阵的个数。据个例子,分成4个矩阵,用find输出了0,2,1,3。我要的是3,不是0213这四个数。请帮忙谢谢
发表于 2009-3-9 13:07 | 显示全部楼层
非0矩阵是指只要元素不全为零就行了吗,也就是只要这个矩阵只要有一个元素非零,就为非0矩阵。
help blkproc

[ 本帖最后由 friendchj 于 2009-3-9 13:25 编辑 ]

评分

1

查看全部评分

发表于 2009-3-9 13:37 | 显示全部楼层
再取length!
好像又误解LZ的意思了? LZ是要每一子矩阵非零个数
 楼主| 发表于 2009-3-9 13:59 | 显示全部楼层
已经取过length了,例如分成4个子矩阵后,用find和length得出的数据是0, 1 , 2, 3.我要做统计的从这四个数中继续得到非零矩阵的个数,简言之就是,最后我要得到分成的四个矩阵中非0矩阵个数是3个。然后循环到分成16个子矩阵...........等等。就是这一部分不会了。请赐教
发表于 2009-3-9 14:12 | 显示全部楼层
用find和length得出的数据(0,1,2,3), form成一新矩阵, 再find/length一次!?
 楼主| 发表于 2009-3-9 14:29 | 显示全部楼层
请问具体步骤是什么,我比较菜啊,谢谢了
发表于 2009-3-9 14:55 | 显示全部楼层
a=rand(256); a(65:128,65:128)=0;
for n=1:8, k=256/2^n; no=0;
    for i=1:k:256,  for j=1:k:256
        b=a(i:i+k-1,j:j+k-1);
        if length(find(b~=0))>0, no=no+1; end
    end; end
    disp(no);
end

还有LZ的标题不够明确, 请修改下!

[ 本帖最后由 ChaChing 于 2009-3-9 15:01 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2009-3-9 14:58 | 显示全部楼层
另外,我想问一下,如果我想把分成的子矩阵分别用a1,a2.........表示,应该怎样啊。谢谢
 楼主| 发表于 2009-3-9 14:59 | 显示全部楼层
谢谢,万分感激
发表于 2009-3-9 15:04 | 显示全部楼层

回复 10楼 lychris 的帖子

这样子逻辑不好写!
help eval
 楼主| 发表于 2009-3-9 15:27 | 显示全部楼层
多谢,ChaChing.我要想你多多学习matlab啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 10:38 , Processed in 0.061002 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表