clear all;
close all;
L=128; % 帧长
NMax=500; %最大标签数
N=50:50:350;% 每次输入的标签数
Mento=2;%重复次数
for m=1:Mento
for n=1:length(N)
Tag=randint(N(n),1,L);% 将标签加入到帧中
% compute the idle, succesful and collision number
NumIdle(m,n)=0; %空时隙数
NumSucc(m,n)=0; %成功时隙数
NumColl(m,n)=0; %冲突时隙数
for i=1:L
Tmp=HowMany(Tag,i-1); %调用HowMangy函数统计时隙数
if Tmp==0
NumIdle(m,n)=NumIdle(m,n)+1;
elseif Tmp==1
NumSucc(m,n)=NumSucc(m,n)+1;
else
NumColl(m,n)=NumColl(m,n)+1;
end
end
NSet=(NumSucc(m,n)+2*NumColl(m,n)):NMax; % 最小标签数(空时隙数+二倍冲突时隙数)
c=[NumIdle(m,n); NumSucc(m,n); NumColl(m,n)]; % 保存[空时隙数、成功时隙数、冲突时隙数]
% estimation by maximizing the posteriori probability
p=0;
NSetSum=1:NMax;
for i=1:length(NSetSum)
fac=factorial(L)/(factorial(NumIdle(m,n))*factorial(NumSucc(m,n))*factorial(NumColl(m,n)));
pIdle=(1-1/L)^(NSetSum(i)*NumIdle(m,n));
pSuc=((NSetSum(i)/L)*((1-1/L)^(NSetSum(i)-1)))^NumSucc(m,n);
pColl=(1-(1-1/L)^NSetSum(i)-(NSetSum(i)/L)*((1-1/L)^(NSetSum(i)-1)))^NumColl(m,n);
p(i)=fac*pIdle*pSuc*pColl;
end
[val,loc]=max(p); %取最大值
NPost(m,n)=NSetSum(loc); %取最大值对应的值
% estimation by MMSE
yMMSE=0;
for i=1:NMax
yMMSE(i)=i*p(i);
end
NMMSE(m,n)=sum(yMMSE)/sum(p);
% estimation by absolute
Absolute=0;
for i=1:NMax
Absolute(i)=abs(sum(p(1:i))-sum(p(i:NMax)));
end
[Val,NAbsolute(m,n)]=min(Absolute); %取最小值
% relative error
ErrorNPostNomean(m,n)=RelativeError(NPost(m,n),N(n));
ErrorNMMSENomean(m,n)=RelativeError(NMMSE(m,n),N(n));
ErrorNAbsoluteNomean(m,n)=RelativeError(NAbsolute(m,n),N(n));
end
end
% MeanNLBound=mean(NLBound);
% MeanNSchoute=mean(NSchoute);
% MeanNIdle=mean(NIdle);
% MeanNPost=mean(NPost);
% MeanNPostLess=mean(NPostLess);
% MeanNVogt=mean(NVogt);
% MeanNVogtLess=mean(NVogtLess);
ErrorNMMSE=mean(ErrorNMMSENomean)*100;
ErrorNAbsolute=mean(ErrorNAbsoluteNomean)*100;
ErrorNPost=mean(ErrorNPostNomean)*100;
figure(1);
plot(N, ErrorNMMSE,'-ko','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','w','MarkerSize',5);
hold on;
plot(N, ErrorNAbsolute,'-k.','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','w','MarkerSize',5);
hold on;
plot(N, ErrorNPost,':k','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','w','MarkerSize',7);
hold off;
legend('贝叶斯均方估计','贝叶斯绝对估计','最大后验概率估计',2); % plot the legend
% grid; % plot the grid
xlabel('标签数,n'),ylabel('相对误差,ε(%)');
figure(2);
plot(p,'-k','LineWidth',1,'MarkerEdgeColor','k','MarkerFaceColor','w','MarkerSize',5);
hold on;
xlabel('标签数'),ylabel('概率');
MatlabCode_贝叶斯估计matlab_贝叶斯估计_
版权申诉
5星 · 超过95%的资源 24 浏览量
2021-09-30
16:58:22
上传
评论 5
收藏 2KB RAR 举报
弓弢
- 粉丝: 42
- 资源: 4022
最新资源
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- 2023-04-06-项目笔记 - 第一百十五阶段 - 4.4.2.113全局变量的作用域-113 -2024.04.26
- htmlzwbjq_downyi.com.zip
- 无头单向非循环链表的实现(Test.c)
- 无头单向非循环链表的实现(SList.c)
- 浏览器重定向插件更新文件
- SSA-BP麻雀算法优化BP神经网络多特征分类预测(Matlab实现完整源码和数据)
- 粒子群算法优化BP神经网络PSO-BP的MATLAB代码(数值预测)
- 基于Springboot的一起看书平台.zip
- 无头单向非循环链表的实现(SList.h)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈