2015-07-20 3 views
0

У меня 7 векторов от 0 до 0.99. Количество записей в каждом векторе различно, поэтому было бы «несправедливо» сравнивать их гистограммы, потому что должна быть прямая корреляция между количеством бинов и количеством записей, предполагая, что переменные расположены на некотором расстоянии. Я заинтересован в построении гладкой кривой плотности значений. Таким образом, для вектора a с n значениями от 0 и 0.99 я бы хотел, чтобы ось x от 0 до 0,99, а ось y была вероятностью, связанной с этими значениями.Нужно ли найти плотность значений гистограмм в MATLAB?

Любые идеи или идеи?

ответ

0

Не уверен, какой сглаживающий вы хотите, но некоторое представление о том, как начать:

%some example vectors of different length 
p=[10,100,1000,10000]; 
D=arrayfun(@(x)(rand(x,1)),p,'uni',false); 
%defining the range 
support=[0:.1:1]; 
%make sure we don't miss a value 
esupport=support; 
esupport(end+1)=inf; 
%define a function which uses histc to calculate the emperical probability for each bin 
[email protected](x)histc(x,esupport)/numel(x); 
%evaluate emperical probability 
E=cellfun(epdf_bin,D,'uni',false); 

M=cat(2,E{:}); 
%plot 
bar(M); 
%print legend 
legend(arrayfun(@num2str,p,'uni',false)); 
%fix x axis labels 
set(gca,'XTick',.5:numel(support)) 
set(gca,'XTickLabel',support) 

enter image description here

+0

К сожалению приставать вас, но в любом случае, чтобы сгладить эту гистограмму, чтобы выглядеть кривая? –

+0

Насколько я понимаю, неправильно рисовать кривую. У вас нет pdf-файла, и вы не можете получить его из данных. – Daniel

Смежные вопросы