【问题标题】:Dividing a binary square matrix into smaller matrices将二进制方阵划分为更小的矩阵
【发布时间】:2016-03-05 18:50:29
【问题描述】:

我有一个大小为 200x200 的二进制矩阵:

matrix=double(rand(200,200)>0.5));

我想把这个矩阵分成更小的部分,例如4 个 100x100 的方块,16 个 50x50 的方块,64 个 25x25 的方块,然后分成 64 个 5x5x5x5 的方块,因为 25 是奇数。然后我想计算结果矩阵中的那些。

我正在寻找一个不使用许多循环的优雅解决方案,并寻找一些灵感或有用的 matlab 函数:)。

提前致谢

【问题讨论】:

    标签: matlab


    【解决方案1】:

    这正是mat2cell 的本意。这也适用于非方形图像

    dims = floor(size(img) / n);
    output = mat2cell(img(1:dims(1)*n, 1:dims(2)*n), ...
                      ones(1, dims(1)) * n, ones(1, dims(2)) * n);
    

    这会将img 的子集传递给mat2cell,以解决img 不是n 的整数倍数的情况。

    【讨论】:

    • 正是我需要的!通过那个例子学到了很多东西。今天第二次谢谢你:)。
    • @holistic 用更理智的解决方案更新了我的答案。
    • 我明白了!很好的解决方案..无论哪种方式,都可以从这两种解决方案中学到很多东西:)
    • @holistic 更新以处理不是n 整数倍的矩阵。
    • 啊,是的,我收到了这个错误信息……现在就像一个魅力。再次感谢!!
    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 2018-01-09
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    相关资源
    最近更新 更多