如何从MATLAB的hist()函数规范化直方图?



我希望规范化我的直方图,但由于某种原因,我在我的代码中得到一些错误。

N = 1000;
mu = 5; stdev = 2;
x = mu+stdev*randn(N,1);
bin=mu-6*stdev:0.5:mu+6*stdev;
f=hist(x,bin);
plot(bin,f,'bo');
counts = f.Values;
sum_counts = sum(counts);
width = f.BinWidth;
area = sum_counts*width;

我可以画出直方图,但我在归一化中得到了一个错误。我知道直方图()函数支持规范化,但我试图避免它。

Dot indexing is not supported for variables of this type.
counts = f.Values;

当您写f=hist(x,bin);时,您将直方图的值作为矢量分配给f,如您所见。归一化使曲线下面积为1,则为f./sum(f)

注意hist已被histogram取代,不再被推荐。

在创建直方图时,有规范化选项作为名称-值对。例如,histogram(x,bin,'Normalization','pdf');histogram(x,bin,'Normalization','probability');可能是您正在寻找的。完整的规范化选项可以在doc.

中找到。

最新更新