通过观测到的公交车线路估计城市共有多少路公交车

详细描述如下

假设城市里的公交线路中间不间隔,如有30路公交,就是1~30路。现在通过观测到的公交车路数来估计此城市一共有多少路公交车。

  • matlab代码
clc
clear
%路线初始值设为1000
N = 1000;

p = ones(N, 1);
p = p ./ sum(p);

% update 观测到的公交车线路
update = [60 30 45 70 60 66 45 77];
for i = 1 : numel(update)
   up = update(i);
   %lh为似然值
   lh = (1:N)'; 
   %对lh做归一化
   lh = 1 ./ lh;
    %如果出现第up路公交,则这个城市有1~(up-1)条线路的概率为0
   lh(1:up-1) = 0;
   p = p .* lh;
    %p为一列向量,其元素表示每次迭代后每条线路出现的概率
   p = p ./ sum(p);
end

% 对总公交线路求期望
e = sum(p .* (1:N)')
  • 代码中主要运用到的数学思想是贝叶斯公式
  • 实际测试时发现,当观测到的数据较小时(如如update中仅有一两个数据),初始值N对最终的结果影响较大;而随着观测数据的不断增大(如update中有5个以上观测数据),N取500,1000或2000,期望e都会收敛到一个值。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值