已知一组数据,如何用matlab画出它的概率密度分布图,请给出具体程序

2024-11-08 11:57:11
推荐回答(5个)
回答(1):

实例程序,应对普通情况应该够了,但是有些特殊情况不合适,不过大多数情况不必要求非常准确,如果要很准确,自行修改下。

% 数据
ydata = random('Normal',0,1,1,1024);

% 准备一些变量
bins = 100; %分100个区间进行统计
maxdat = max(ydata);%最大值
mindat = min(ydata);%最小值
bin_space = (maxdat - mindat) / bins;%每个bin宽度
xtick = mindat : bin_space : maxdat - bin_space;

% 求pdf
distribution = hist(ydata,bins);%使用直方图得到数据落在各区间的总数
pdf = bins * distribution / ((sum(distribution )) * (maxdat - mindat));%计算pdf

% 画图
figure;
plot(xtick,pdf);

% 验证:sum(pdf) * bin_space应该接近1

回答(2):

clear all;
clc;
data = importdata("n(0,1).txt");%这里n(0,1).txt为你要导入的数据
[a, b] = normfit(data);%求出你给的服从正态分布的数据的均值和标准差,并赋给a,b
d = normpdf(data,a,b);%求出均值为a,标准差为b的正态分布密度函数在data各点的值
figure;
plot(data,d,'.');%以data为横坐标,d为纵坐标画出图形,‘.’为 图形各点的样式

回答(3):

还是用ksdensity函数吧

回答(4):

一般通过已知数据,求取概率密度。需要统计学的知识。大致是画频谱图。具体好像是求什么频数等等。但是这个也不是太难。

你照着相关书籍,就应该能写程序了。至于重复数值,那肯定是可能的啊。因为一个未知变量都能够重复出现,毕竟是概率事件。

回答(5):