已知一组数据,如何用matlab画出它的概率密度分布图,请给出具体程序
5个回答
展开全部
实例程序,应对普通情况应该够了,但是有些特殊情况不合适,不过大多数情况不必要求非常准确,如果要很准确,自行修改下。
% 数据
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
% 数据
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
展开全部
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为纵坐标画出图形,‘.’为 图形各点的样式
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为纵坐标画出图形,‘.’为 图形各点的样式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还是用ksdensity函数吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般通过已知数据,求取概率密度。需要统计学的知识。大致是画频谱图。具体好像是求什么频数等等。但是这个也不是太难。
你照着相关书籍,就应该能写程序了。至于重复数值,那肯定是可能的啊。因为一个未知变量都能够重复出现,毕竟是概率事件。
你照着相关书籍,就应该能写程序了。至于重复数值,那肯定是可能的啊。因为一个未知变量都能够重复出现,毕竟是概率事件。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
额
追问
额
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询