clear all
min=88%最小值
mi_1=90%区间最小值
mi_2=107%区间最小值
mi_3=123%区间最小值
max=138%最大值
n=1000%总共多少个数据
m=500%107以上的个数
%根据你的指示设定如下区间及个数
m1=100%88-89的个数
m2=n-m-m1%90-106的个数
m3=450%107-123的个数
m4=m-m3%124-138的个数
x1=rand(1,m1)
y1=round(min+(mi_1-min-1)*x1)%88-89的数据
x2=rand(1,m2)
y2=round(mi_1+(mi_2-mi_1-1)*x2)%90-106的数据
x3=rand(1,m3)
y3=round(mi_2+(mi_3-mi_2)*x3)%107-123的数据
x4=rand(1,m4)
y4=round(mi_3+1+(max-mi_3-1)*x4)%124-138的数据
Y1=[y1,y2,y3,y4]%合并四个区间的数据
Y=Y1(randperm(n))%将数据顺序打乱,得到最终结果
Yn1=length(find(Y>=mi_2&Y<=max))%检测107以上的个数是否符合设定m
Yn2=length(find(Y>=min&Y<=(mi_1-1)))%检测88-89的个数是否符合设定m1
Yn3=length(find(Y>=mi_1&Y<=(mi_2-1)))%检测90-106的个数是否符合设定m2
Yn4=length(find(Y>=mi_2&Y<=mi_3))%检测107-123的个数是否符合设定m3
Yn5=length(find(Y>=(mi_3+1)&Y<=max))%检测124-138的个数是否符合设定m4
figure(1)
plot(Y)
xlabel('数据点'),ylabel('数值')
title(['数据 (>170:',num2str(Yn1),';','88-89:',num2str(Yn2),';','90-106:',num2str(Yn3),';','107-123:',num2str(Yn4),';','124-138:',num2str(Yn5),';',')'])
%这程序每运行一次得到的每种数据值的个数都不同,请注意及时保存成数据文件
实例程序,应对普通情况应该够了,但是有些特殊情况不合适,不过大多数情况不必要求非常准确,如果要很准确,自行修改下。
% 数据
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)