【问题标题】:Combine multiple histograms to create 3D-like histogram组合多个直方图以创建类似 3D 的直方图
【发布时间】:2014-05-01 16:59:28
【问题描述】:

我有一个 20x65536 矩阵 M,其中填充了 [0,14] 范围内的整数。

对于M 的每一列,我想创建一个包含 14 个 bin 的直方图。总共有 65536 个直方图。

之后,我想将所有这些直方图组合成一个类似 3d 的直方图,其中 x 轴是 15 个 bin,y 轴是 65536 个直方图索引,z 轴是出现的次数对应的 bin。

【问题讨论】:

  • 你的意思是 15 个垃圾箱,对吧?
  • 当然,你是对的!

标签: matlab histogram


【解决方案1】:

试试这个:

surf(histc(M, 0:14, 2))

【讨论】:

  • +1 但我会使用bar3 而不是surf,2 不应该是 ,1 吗?
  • 将您对 histc 的使用复制到我描述使用 imagesc 的答案中,我认为这会比 op 的要求提供更好的可视化效果。
  • histc 使用给定的数字作为 bin 边缘,而不是 bin 中心。由于 OP 想要离散数据的直方图,因此使用 hist 可能更合适。
  • 感谢您的提示! :)
【解决方案2】:

这应该可以满足您的需求:

% compute histograms
bins = 0 : 14;
count = hist(M, bins);

% plot as three-dimensional bar plot
bar3(bins, count)

但是,对 65536 列的矩阵执行此操作并不是一个好主意,因为普通的计算机屏幕可以水平显示大约 2000 个像素。以下是 25 列矩阵的样子:

要使轴更好地适应 bin 值,请使用

ylim([-1 15])

【讨论】:

  • 感谢这个简单的解决方案。是否也可以更改 x 和 y 轴(即 y 轴是单个直方图索引,而 x 轴 = [0,14]?
  • @PeterRussel 最简单的方法是旋转轴,例如使用view([-127.5, 30])。另请参阅我的美化编辑。
【解决方案3】:

使用 imagesc 获取彩色图像,其中每个 (x,y) 的颜色是该直方图在该 bin 中的计数。

Mnew = histc(M,0:14,1);
imagesc(Mnew)
set(gca,'YDir','normal')

最后一行只是为了修正 imagesc 的细微差别,即翻转 y 轴。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-02
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2019-03-27
    • 2013-05-02
    相关资源
    最近更新 更多