实例程序,应对普通情况应该够了,但是有些特殊情况不合适,不过大多数情况不必要求非常准确,如果要很准确,自行修改下。
% 数据
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为纵坐标画出图形,‘.’为 图形各点的样式
还是用ksdensity函数吧
一般通过已知数据,求取概率密度。需要统计学的知识。大致是画频谱图。具体好像是求什么频数等等。但是这个也不是太难。
你照着相关书籍,就应该能写程序了。至于重复数值,那肯定是可能的啊。因为一个未知变量都能够重复出现,毕竟是概率事件。
额