2017-10-17 101 views
0

我正在使用Matlab(这是个好主意)。如何通过标量乘以直方图中的频率

我需要将直方图的频率乘以标量值(对于每个bin)。 我已经在similar question中试过这种方法,但它是为hist而不是直方图函数定义的。 这是我原来的分布需要乘以: orinial

这是我得到使用在类似的问题给出的方法: applied

此外,当我完成这一部分,我将有更多的直方图我需要总结成一个直方图。那么我该怎么做?他们可能有不同的范围。

+0

什么样的数据,或你的代码?您可以在直方图之前对数据尝试'repmat',然后您将获得多个相同数据量。 – Adiel

+0

@Adiel目前我只有一个大小的矢量(150877x1),所以我不能在这里发布它。我绘制了该矢量的直方图。现在我想用标量乘以它的频率。 此外,我将有更多这些向量,我将需要乘以标量。最后,我需要在一个直方图上总结它们。 – numb

+0

您应该尝试创建一个最小示例,描述您的方法(向我们展示您的代码)以及您面临的问题:[问]。 – Irreducible

回答

2

该文档clearly explains如何复制histhistogram的行为。

例如:

A = rand(100, 1); 
h = histogram(A); 

figure 
h_new = histogram('BinCounts', h.Values*2, 'BinEdges', h.BinEdges); 

生成以下直方图:

yay yay2

+0

完美。这正是我期待的! – numb

2

您可以修改Bincounts这样的:

X = normrnd(0,1,1000,1); % some data 
h = histogram(X,3); % histogram with 3 bins 
h.BinCounts = h.Values.*[3 5 1]; % scale each bin by factor 3, 5 and 1 respectively