Предполагается, что y
является вектором со случайными номерами, следующим за распределением f(x)=sqrt(4-x^2)/(2*pi)
. В настоящий момент я использую команду hist(y,30)
. Как я могу построить функцию распределения f(x)=sqrt(4-x^2)/(2*pi)
в ту же гистограмму?График Matlab в гистограмме
ответ
Вместо нормализации численно вы также можете сделать это, найдя теоретический коэффициент масштабирования следующим образом.
nbins = 30;
nsamples = max(size(y));
binsize = (max(y)-min(y))/nsamples
hist(y,nbins)
hold on
x1=linspace(min(y),max(y),100);
scalefactor = nsamples * binsize
y1=scalefactor * sqrt(4-x^2)/(2*pi)
plot(x1,y1)
Обновление: Как это работает.
Для любого набора данных, который достаточно велик, чтобы дать хорошее приближение к PDF (назовем его f (x)), интеграл от f (x) по этой области будет приблизительно равен единице. Однако мы знаем, что площадь под любая гистограмма точно равна общему количеству выборок, умноженному на ширину бина.
Таким образом, очень простой масштабный коэффициент для перевода pdf в линию с гистограммой - Ns * Wb, общее количество точек выборки умножается на ширину бункеров.
Этот ответ не имеет достаточного контекста сам по себе. Можете ли вы улучшить ответ, чтобы быть самодостаточным? – rajb245
Я думал, что вычисление «scalefactor» было довольно ясно из предоставленного кода. Однако я могу добавить некоторые подробности **, почему ** этот конкретный масштабный коэффициент работает. См. Обновленный ответ. – Stuart
Приведем пример другой функции распределения, стандартной нормали. Чтобы сделать именно то, что вы говорите, вы делаете это:
nRand = 10000;
y = randn(1,nRand);
[myHist, bins] = hist(y,30);
pdf = normpdf(bins);
figure, bar(bins, myHist,1); hold on; plot(bins,pdf,'rx-'); hold off;
Это, вероятно, НЕ то, что вы на самом деле хотите. Зачем? Вы заметите, что ваша функция плотности выглядит как тонкая линия в нижней части графика гистограммы. Это связано с тем, что гистограмма представляет собой количество чисел в ячейках, а функция плотности нормируется на интеграцию в единицу. Если у вас есть сотни предметов в корзине, то функция плотности не будет соответствовать шкале, поэтому у вас есть проблема масштабирования или нормализации. Либо вы должны нормализовать гистограмму, либо построить масштабированную функцию распределения. Я предпочитаю, чтобы масштабировать функцию распределения, так что мои отсчеты бы бессмысленно, когда я смотрю на гистограмму:
normalizedpdf = pdf/sum(pdf)*sum(myHist);
figure, bar(bins, myHist,1); hold on; plot(bins,normalizedpdf,'rx-'); hold off;
Ваш случай тот же, за исключением того, вы будете использовать функцию F (х) вы указали вместо normpdf команда.
Позвольте мне добавить еще один пример смеси:
%# some normally distributed random data
data = randn(1e3,1);
%# histogram
numbins = 30;
hist(data, numbins);
h(1) = get(gca,'Children');
set(h(1), 'FaceColor',[.8 .8 1])
%# figure out how to scale the pdf (with area = 1), to the area of the histogram
[bincounts,binpos] = hist(data, numbins);
binwidth = binpos(2) - binpos(1);
histarea = binwidth*sum(bincounts);
%# fit a gaussian
[muhat,sigmahat] = normfit(data);
x = linspace(binpos(1),binpos(end),100);
y = normpdf(x, muhat, sigmahat);
h(2) = line(x, y*histarea, 'Color','b', 'LineWidth',2);
%# kernel estimator
[f,x,u] = ksdensity(data);
h(3) = line(x, f*histarea, 'Color','r', 'LineWidth',2);
legend(h, {'freq hist','fitted Gaussian','kernel estimator'})
- 1. MATLAB Гистограмме Проблема
- 2. График NA рассчитывается на гистограмме
- 3. Классификация Байеса в гистограмме Matlab?
- 4. MATLAB Бункеры настройки в гистограмме
- 5. Изменить ось в гистограмме Matlab
- 6. Пустое пространство в гистограмме MATLAB
- 7. Как объяснить выбросы в гистограмме? - R/Matlab
- 8. График гистограммы в MatLab
- 9. MATLAB: график в цикле
- 10. Визуализировать график в matlab
- 11. График рисования в matlab
- 12. векторный график в matlab
- 13. Построение двух категориальных массивов в гистограмме/гистограмме?
- 14. Matlab: Отсутствующие ярлыки на гистограмме
- 15. Предельные значения данных, отображаемые в гистограмме MATLAB
- 16. MATLAB: как построить различные errorbars в гистограмме
- 17. matlab, каждый столбец в гистограмме соответствует букве
- 18. Добавление маркеров к гистограмме с установленной кривой распределения в Matlab?
- 19. График производительности MATLAB
- 20. matlab - график на графике
- 21. Matlab: прерывистый график
- 22. Создание MATLAB 3d график
- 23. Пользовательский график с Matlab
- 24. Matlab 3D полярный график
- 25. Простой график MatLab
- 26. График с использованием Matlab
- 27. 3-D график в matlab
- 28. Постройте график плотности в Matlab
- 29. Plotting время график в MATLAB
- 30. 3D-график RGB в Matlab
Разве вы уже черчения его с 'hist'? –
Грубая идея состоит в том, чтобы вызвать hist с двумя выходами, поэтому он дает вам центры и подсчеты. Затем вы вручную закроете график и наложите масштабированную функцию плотности поверх графика штриха. См. Мой ответ ниже. – rajb245