%能谱实验
clear all
close all
clc
% File_Name=Co60.chn;
% File_Name=Cs137.chn;
K = 512; %能谱道数
N = 500000; %抽样数据个数
% disp('开始读能谱数据文件')
tic
fid=fopen('Co60_778_8.0.chn','rb'); %打开能谱数据文件
[Data_file,num]=fread(fid,[1,K+10],'long'); %读取能谱数据文件中的数据
sta=fclose(fid); %关闭能谱数据文件
for i=1:K
Data_pu(i)=Data_file(i+10);
end
disp('读能谱数据文件耗时')
toc
disp('开始生成别名表')
Sum_Data_pu=sum(Data_pu); %能谱数据总和
probs_pu=Data_pu/Sum_Data_pu; %能谱各道频数
tic
q=zeros(1,K);
J=zeros(1,K);
smaller=[];
larger=[];
q=K*probs_pu;
for i=1:K
if q(i)<1.0
smaller=[smaller,i];
else
larger=[larger,i];
end
end
while (length(smaller)>0) && (length(larger)>0)
small=smaller(end);smaller(end)=[];
large=larger(end);larger(end)=[];
J(small)=large;
q(large)=q(large)-(1.0-q(small));
if q(large)<1.0
smaller=[smaller,large];
else
larger=[larger,large];
end
end
disp('生成别名表耗时')
toc
disp('开始随机变量抽样')
tic
for i=1:N
i
kk=floor(rand(1,1)*K)+1;
if rand(1,1)<q(kk)
A(i)=kk;
else
A(i)=J(kk);
end
end
disp('随机变量抽样耗时')
toc
disp('开始随机变量分类累加')
sum_X=zeros(512); %生成各道累积和零序列
tic
for ii=1:K
ii
for j=1:N
if A(j)==ii %判断是是否是第i道
sum_X(ii)=sum_X(ii)+1; %对第i道累积和加1
end
end
end
disp('累积耗时')
toc
subplot(211)
plot(Data_pu)
xlabel('道')
ylabel('频数')
title('图1 能谱分布图')
subplot(212)
plot(sum_X)
xlabel('序数')
ylabel('计数')
title('图2 随机变量累计图')
没有合适的资源?快使用搜索试试~ 我知道了~
用MATLAB实现的随机抽样方法
共27个文件
m:12个
asv:12个
chn:3个
需积分: 48 102 下载量 77 浏览量
2018-04-04
08:34:46
上传
评论 5
收藏 16KB ZIP 举报
温馨提示
资源里面一共三种随机抽样的方法,分别是别名表抽样、罐子抽样、直接抽样 使用MATLAB语言实现的,希望对你有帮助。
资源推荐
资源详情
资源评论
收起资源包目录
随机变量抽样.zip (27个子文件)
随机变量抽样
直接抽样
direct_sampling_test1.m 402B
direct_sampling.asv 592B
direct_sampling_test1.asv 482B
direct_sampling_test2.asv 662B
direct_sampling_test2.m 627B
direct_sampling.m 605B
罐子抽样
pot_sampling_test1.asv 406B
pot_sampling.m 516B
pot_sampling.asv 475B
pot_sampling_test1.m 478B
别名表抽样
alias_setup.asv 576B
vose_alias
alias_setup.m 577B
alias_setup.asv 575B
Co60.chn 2KB
test1.m 2KB
test1.asv 2KB
alias_draw.asv 187B
waitbar1.m 324B
Cs137.chn 2KB
test.m 1KB
test.asv 1KB
alias_draw.m 126B
Co60_778_8.0.chn 2KB
alias_sampling.m 1012B
alias_sampling.asv 948B
alias_method1.m 65B
alias_test.asv 497B
共 27 条
- 1
资源评论
安河桥下
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功