【问题标题】:graph representing the randomization of each column in a binary matrix表示二进制矩阵中每一列的随机化的图
【发布时间】:2014-06-18 15:58:58
【问题描述】:

想象下面的二进制图像,下面的矩阵为例。这是我将使用的图像的简化版本:

0 1 0 1
0 1 1 1
0 0 0 1
0 1 1 1

我想构建一个图表来表示每列的随机性。我的想法是开发一个随机索引=列中每个值之间的总转换/可能的总转换。在上面的矩阵中,每一列总共可能有 3 个转换。

对于上面的例子:

第 1 列的随机索引为 0% (0/3)

第 2 列的随机索引为 66.7% (2/3)

第 3 列 = 100% (3/3)

第 4 列 = 0% (0/3),即使它们是 1 而不是 0。没关系,我只想要过渡。

我可以围绕所有 1 个值绘制一个边界,然后让 MATLAB 对所有边界求和吗?

【问题讨论】:

    标签: arrays matlab image-processing matrix


    【解决方案1】:

    计算你建议你可以做的事情:

    sum( diff(A) ~= 0 )
    

    diff(A) 会将前向差异沿列向下计算,总和将计算非零更改的数量。所以如果你这样做,你会得到:

    ans =
         0     2     3     0
    

    【讨论】:

    • 错过了百分比,但另一个答案在那里。
    • 这太棒了。反响很好。
    【解决方案2】:

    让你的图像被定义为

    im = [ 0 1 0 1
           0 1 1 1
           0 0 0 1
           0 1 1 1 ];
    

    你想要的随机索引可以计算为

    result = sum(diff(im)~=0) / (size(im,1)-1);
    

    解释:diff 计算每列下连续元素之间的差异。将结果与零 (~=0) 进行比较,并添加每行中的所有非零值 (sum)。最后将结果除以 os 转换的最大数,即行数减 1 (size(im,1)-1)


    同样,您可以在连续行之间使用xor

    result = sum(xor(im(1:end-1,:), im(2:end,:))) / (size(im,1)-1)
    

    【讨论】:

    • 你们太棒了。谢谢!
    • 您应该接受@LuisMendo 的回答,这样他才能获得信任。 :-) 你也可以投票给他(如果你愿意,也可以投票给我。他在正确答案上击败了我。)
    • @brechmos 代表低的用户无法投票。但是你应该得到支持,所以就这样吧:-)
    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 2015-11-26
    • 2020-08-31
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多