这可以通过简单地使用从一个调用到 hist 的 bin 中心作为另一个调用的 bin 来完成
例如
[aCounts,aBins] = hist(a,nBins);
[bCounts,bBins] = hist(b,aBins);
注意all(aBins==bBins)
= 1
但是,当两个数据集的最小值和最大值不相似时,此方法会丢失信息*,一种简单的解决方案是根据组合数据创建 bin
[~ , bins] = hist( [a(:),b(:)] ,nBins);
aCounts = hist( a , bins );
bCounts = hist( b , bins );
*如果范围差异很大,最好手动创建 bin 中心向量
(重新阅读问题后)如果您想要控制箱宽度,则最好不要使用相同的箱来手动创建箱中心......
为此,创建一个 bin 中心向量以传递给 hist,
例如 - 请注意,此处仅对一组数据强制执行箱数
aBins = linspace( min(a(:)) ,max(a(:) , nBins);
binWidth = aBins(2)-aBins(1);
bBins = min(a):binWidth:max(b)+binWidth/2
然后使用
aCounts = hist( a , aBins );
bCounts = hist( b , bBins );