分布直方图

时间:2014-02-23 13:02:39

标签: matlab

您好我正在尝试使用堆栈溢出中的一些代码创建一个简单的分布直方图 但是我无法让它工作。我知道有一个简单的方法可以使用统计工具箱,但从学习的角度来看,我更喜欢更具解释性的代码 - 任何人都可以帮助我吗?

%% 

clear all

load('Mini Project 1.mat')

% Set data to var2
data = var2; 

% Set the number of bins
nbins = 0:.8:8;

% Create a histogram plot of data sorted into (nbins) equally spaced bins
n = hist(data,nbins);

% Plot a bar chart with y values at each x value. 
% Notice that the length(x) and length(y) have to be same.
bar(nbins,n);

MEAN = mean(data);
STD = sqrt(mean((data - MEAN).^2)); % can also use the simple std(data)


f = (   1/(STD*sqrt(2*pi))   )  *  exp(-0.5*((nbins-MEAN)/STD).^2  );
f = f*sum(nbins)/sum(f);

hold on; 

% Plots a 2-D line plot(x,y) with the normal distribution, 
% c = color cyan , Width of line = 2
plot (data,f, 'c', 'LineWidth', 2);

xlabel('');
ylabel('Firmness of apples after one month of storage')
title('Histogram compared to normal distribution');

hold of

2 个答案:

答案 0 :(得分:1)

你很困惑

hist

histc

阅读两者。

另外,你没有定义箱子的号码,而是你自己定义箱子。

答案 1 :(得分:0)

我现在手头没有Matlab,但请尝试以下方法:

如果您想将正态分布与条形图bar(nbins,n)进行比较,则应首先将其标准化:

bar(nbins,n/sum(n))

看看这是否能解决您的问题。

如果没有,请尝试删除行f = f*sum(nbins)/sum(f);