【问题标题】:Negative numbers of bins负数的垃圾箱
【发布时间】:2013-05-22 10:52:46
【问题描述】:

我有以下代码返回直方图的值:\

[a,b]=hist(x(:),unique(x));

由于我在 x 中有负值,例如我得到值 -3,因此得到一个错误,因为 bin 的数量不能为负数。

有什么办法可以解决这个问题?

谢谢。

【问题讨论】:

  • 什么是 size(unique(x))?
  • @Dr_Sam。谢谢你的评论。对于-4,例如我得到了9 值。您的意思是用size 替换计数。由于代码将应用于不同的图像,因此一般如何做到这一点?
  • @Dr_Sam。我尝试插入length(unique(x)),似乎它消除了错误。是你的意思吗?您认为这种变化会对输出产生任何影响吗?谢谢
  • 我的意思是如果 size(unique(x))==1 (即所有值都相同),那么 Matlab 不能正确理解你想要什么。请参阅 Shai 的答案。

标签: matlab histogram bin negative-number


【解决方案1】:

函数hist 可以接受箱中心的vecotr。这些中心可能是负数。
我认为问题在于当unique(x) 返回一个负的标量 然后hist 将其视为箱的数量而不是箱的中心

解决方法

ux = unique( x );
if numel( ux ) == 1
   % there is only one unique value in vecor x - 
   % no need to do a histogram, it will only have one bin!
   a = numel( x );
   b = ux;
else
   % many unique values in x - compute a histogram.
   [a, b] = hist(x, ux);
end

【讨论】:

  • 感谢您的回复。您能否澄清一下 if 语句的真正作用?
猜你喜欢
  • 1970-01-01
  • 2016-05-22
  • 1970-01-01
  • 2016-11-06
  • 1970-01-01
  • 2019-03-15
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多