Gilbert-Elliot模型生成丢包模式的MATLAB代码

仅作为学习Gilbert-Elliot模型的参考,直接上代码:

%If p is the probability of transferring from Good State to the bad state
%and if r is the probability of transferring from the bad state to the Good
%state, given the p and r values, this code will generate a packet loss
%pattern (with burst losses) and save it to a file named “Loss_Pattern.txt”

clc

p = 0.02777;       % probability of transferring from Good State to the bad 
r = 0.25;          % probability of transferring from bad state to the Good
total_packs = 10000;     %包大小

check = 100;

while check >= 10           %当理论与实际的误差 >= 10% 时,再次执行

good = 1;                   %good = 1表示good state;  good = 0表示bad state
packets = [];

size = 1;

while size <= total_packs
if good == 1
    packets = [packets good];      %元素为1表示准确接收到了包,为0则表示丢包
    good = rand(1) > p;
elseif good == 0
    packets = [packets good];
    good = rand(1) > (1-r);
else
    fprintf('error\n');
    break;
end
size = size + 1;
end

fid = fopen('Loss_Pattern.txt','w');
fprintf(fid, '%d ', packets);
fclose(fid);
received_packs = nnz(packets);                           %准确接收到的包
%假定好状态时不发生丢包;bad状态时必发生丢包
theo_pack_loss_rate = 1 - r / (p+r);                     %理论丢包率
act_pack_loss_rate = 1 - received_packs/total_packs;     %实际丢包率

check = abs(theo_pack_loss_rate - act_pack_loss_rate) / theo_pack_loss_rate * 100;

end


save('packets','packets');     %保存为mat文件
theo_pack_loss_rate = p / (p+r)
act_pack_loss_rate = 1 - received_packs/total_packs

注:参考
https://www.mathworks.com/matlabcentral/fileexchange/38554-generate-packet-loss-patters-using-gilbert-elliot-model
https://blog.csdn.net/u010643777/article/details/89194456
http://www.ohohlfeld.com/paper/hasslinger_hohlfeld-mmb_2008.pdf

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gilbert-Johnson-Keerthi算法(GJK算法)是一种用于计算凸多边形之间的最小距离和碰撞检测的算法。该算法由Daniel Gilbert、Daniel Johnson和Sanjiv Keerthi于1988年提出,是一种快速且有效的算法。 GJK算法的基本思想是通过迭代逼近来计算最小距离。算法的输入为两个凸多边形的顶点集合或凸多面体的点集合,并通过迭代的方式逼近最小距离,直到达到精度要求。 算法的步骤如下: 1. 初始化:选择一个起始向量和初始单纯形,该初始单纯形需要含原始凸多边形。单纯形可以是一个点、线段或三角形。 2. 判断最近点:通过计算凸多边形在起始向量方向上的最近点来更新单纯形。 3. 判断含关系:判断原始凸多边形是否被新的单纯形含,如果是则表示两个凸多边形相交;如果不是,则返回到步骤2。 4. 计算最小距离:利用最近点计算两个凸多边形之间的最小距离。 GJK算法通过不断缩小搜索范围,快速地找到凸多边形之间的最小距离。相比于其他碰撞检测算法,GJK算法的计算量较小,并且不需要昂贵的矩阵运算。 GJK算法在虚拟现实、游戏开发和机器人技术等领域有着广泛的应用。它能够有效地判断物体是否相交,从而实现碰撞检测和避障等功能。同时,GJK算法也可以用于优化物理引擎中的碰撞检测过程,提高运行效率。 综上所述,Gilbert-Johnson-Keerthi算法是一种用于计算凸多边形间最小距离和碰撞检测的快速有效算法,可以广泛应用于虚拟现实、游戏开发和机器人技术等领域。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值