[复现论文程序图]High Speed Continuous Variable Source-Independent Quantum Random Number Generation
这次的任务是复现该文章的图2(C),过程如下。
①翻译了整篇文章,断断续续,花了3-4天时间。
②阅读文章,并且记录下每个符号的意义,记在单独的1个word文档里。
③开始编程,用的matlab2018b。
clc;clear
%%这个文件,是最终版本,
%% 此版块内,n=,N由1到10,间隔为1,
%%(i+0.5)*deierka)这一行,中的i有问题,已经用平移量解决.
%%
kesai=0.1; %过量噪声
seigema=sqrt(+kesai);
b_lim=*seigema; % a_lim用于后面计算S的过程里,就是区间长度的1半,根据文章来的。
length=; %产生随机数组的次数,即100
for n=:: %外层循环是n的循环,n是零差检测精度
i_min=-^(n-);i_max=^(n-)-;
PingYi=-i_min; %为了把角标变为正数,所用的平移量。比如要把-8到7平移成1到16,那么平移量就是1-(-)=
for N=0.1:0.1: % 内层循环是N的循环,N采样范围
deierka=N/^(n-); m=; %是间隔,m用于计算后面的a_ba
%%这一块在计算P和H
for i=:i_max-i_min+
a(i)=-N+(i-)*deierka; %deierka就是步进间隔
end
for i=:i_max-i_min+
if i==
P(i)=(/)*erfc((N-0.5*deierka)/(sqrt()*seigema));
elseif i>&&i<i_max-i_min+
P(i)=(/)*erf(((i-PingYi+0.5)*deierka)/(sqrt()*seigema))-(/)*erf(((i-PingYi-0.5)*deierka)/(sqrt()*seigema));
elseif i==i_max-i_min+
P(i)=(/)*erfc((N-1.5*deierka)/(sqrt()*seigema));
end
end
index=int8(*N);
H(index)=; R(index)= %清零操作
for i=:i_max-i_min+
diedai=P(i)*log2(P(i))
if P(i)==
diedai=;
end
H(index)=H(index)-diedai;
end
%% 这一块在计算S(a:E)
b_min_buf=; b_max_buf=; b_ba_buf=;
buffer1=; buffer2= % 两个buffer用于计算式子C.3中的两个求和
for k=:length
b=-b_lim+*b_lim*rand(,);
b_min_buf=b_min_buf+min(b); b_max_buf=b_max_buf+max(b);
b_ba_buf=b_ba_buf+mean(b);
end
b_min=b_min_buf/length; b_max=b_max_buf/length;
b_ba=mean(a);
for i=:i_max-i_min %不从1开始。另外,倒数第二个是结尾
if a(i)<=b_ba
buffer1=buffer1+P(i)*(a(i)-b_ba-0.5*deierka)^;
else
buffer2=buffer2+P(i)*(a(i)-b_ba+0.5*deierka)^;
end
end
Vx_ba(index)= P()*(b_min-b_ba)^+P(i_max-i_min+)*(b_max-b_ba)^+buffer1+buffer2;
S(index)=((Vx_ba(index)+)/)*log2((Vx_ba(index)+)/)-((Vx_ba(index)-)/)*log2((Vx_ba(index)-)/);
% 这一块在计算R,
R(index)=H(index)-S(index); end
t=0.1:0.1:;
if n==
plot(t,R,'r*');
end
if n==
plot(t,R,'*');
end
if n==
plot(t,R,'d');
end
if n==
plot(t,R,'p');
end
legend('n=4','n=8','n=12','n=16');
xlim([,]);ylim([,]);
xlabel('Sample range');
ylabel('R_dis(ai:E');
hold on
end
grid
④在码代码的过程中,有以下几个要注意的地方:
(1)图2C的横坐标是从1到10,不是0到10。
(2)文章里的i是可以取负数的,比如n=4时,i就是从-8到7,但是matlab中的数组下标必须是正的,所以在用式子(10)的时候,需要平移,使得i为正数。
(3)matlab在计算A=P*log2(P)这种时,如果P=0,那么A=NaN,正无穷。因此我的代码里在计算P(也就是文章里的H时,我让,if P(i)=0,则迭代量等于0),如果不这么做,那么H会等于正无穷,
这个问题困扰了我很久,解决它之前,当n=8,N=9时,我的H就等于正无穷,而n=8,N=8时,我的H就等于1个有限值。
(4)注意代码里的b_lim到底取几倍的seigema,这个影响挺大的,我最后卡了很久,终于是发现,就是b_lim在影响我的曲线,一调对了b_lim,我的曲线就跟图2C长得差不多了。
⑤ 原文,翻译,术语符号集合,还有程序,我已经上传至百度云。
[复现论文程序图]High Speed Continuous Variable Source-Independent Quantum Random Number Generation的更多相关文章
- 【转帖】远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm) https://zhuanlan.zhihu.com/p/310 ...
- Variable|quantitative variables|continuous variable|discrete variable|qualitative variables| observation|data set
2.1Variables and Data Variable:某物或某人的某一特征和其他个体不同. quantitative variables:定量变量either discrete (可以被数)o ...
- 论文解读(MPNN)Neural Message Passing for Quantum Chemistry
论文标题:DEEP GRAPH INFOMAX 论文方向: 论文来源:ICML 2017 论文链接:https://arxiv.org/abs/1704.01212 论文代码: 1 介绍 本文的目标 ...
- 论文结果图:matplotlib和seaborn实现
在论文中,可视化结果往往很重要,毕竟文字太抽象,需要图片向审稿人直观的展现出我们的结果.我也写了俩篇论文和一篇专利的申请,其中也有一些画图的程序,因此记录,防止以后忘了.由于篇幅原因,文章就不贴代码, ...
- word论文之图和表目录制作
https://jingyan.baidu.com/article/91f5db1b3c539f1c7e05e341.html?qq-pf-to=pcqq.c2c 1.目标: (1)图目录. (2)表 ...
- 远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)
在做 数据分析(数据挖掘 或 机器学习)的时候,我们经常需要绘制一些统计相关的图表,这些统计.绘图的程序常常是跑在服务器上的,可是服务器出于性能和效率的考虑,通常都是没有安装图形化界面的,于是这些统计 ...
- 论文笔记之:Speed Up Tracking by Ignoring Features
Speed Up Tracking by Ignoring Features CVPR 2014 Abstract:本文提出一种特征选择的算法,来实现用最"精简"的特征以进行目标跟 ...
- Matlab调用遗传工具箱复现论文模型求解部分
原文转载自:https://blog.csdn.net/robert_chen1988/article/details/52431594 论文来源: https://www.sciencedirect ...
- sql server2016安装程序图
今天终于有时间安装SQL Server2016正式版,下载那个安装包都用了一个星期 安装包可以从这里下载: http://www.itellyou.cn/ https://msdn.microsoft ...
随机推荐
- go-select
select语句属于条件分支流程控制方法,不过它只能用于通道. select语句中的case关键字只能后跟用于通道的发送操作的表达式以及接收操作的表达式或语句. ch1 := make(chan ) ...
- pytest6-Fixture finalization / executing teardown code(使用yield来实现)
Fixture finalization / executing teardown code By using a yield statement instead of return, all the ...
- C#详解类型,变量与对象
本节内容: 1.什么是类型(Type) 2.类型在C#语言中的作用 3.C#语言的类型系统 4.变量.对象与内存 1.什么是类型(type) 类型又名数据类型(Date Type),是数据在内存中存储 ...
- SpringBoot生命周期管理之停掉应用服务几种方法
前言 在生产环境下管理Spring Boot应用的生命周期非常重要.Spring容器通过ApplicationContext处理应用服务的所有的beans的创建.初始化.销毁. 本文着重于生命周期中的 ...
- java架构之路-(Redis专题)聊聊大厂那些redis
上几次说了redis的主从,哨兵,集群配置,但是内部的选举一直没说,先来简单说一下选举吧. 集群选举 redis cluster节点间采取gossip协议进行通信,也就是说,在每一个节点间,无论主节点 ...
- Linux Capabilities 入门教程:概念篇
原文链接:Linux Capabilities 入门教程:概念篇 Linux 是一种安全的操作系统,它把所有的系统权限都赋予了一个单一的 root 用户,只给普通用户保留有限的权限.root 用户拥有 ...
- 让搭建在 Github Pages 上的 Hexo 博客可以被 Google 搜索到
title: 让搭建在Github Pages上的Hexo博客可以被Google搜索到 date: 2019-05-30 23:35:44 tags: 配置 --- 准备工作 搭建好的博客 npm & ...
- 百万年薪python之路 -- 面向对象之:类空间问题以及类之间的关系
面向对象之:类空间问题以及类之间的关系 1.从空间角度研究类 1.何处添加对象属性 class A: def __init__(self,name): self.name = name def fun ...
- 百万年薪python之路 -- MySQL数据库之 常用数据类型
MySQL常用数据类型 一. 常用数据类型概览 # 1. 数字: 整型: tinyint int bigint 小数: float: 在位数比较短的情况下不精确 double: 在位数比较长的情况下不 ...
- 用Python校准本地时间
目录 1. 概念 1.1 基本概念 1.2 版本演进 2. 示例演示 2.1 前提条件 2.2 完整代码 2.3 其他问题 3. 参考信息: 1. 概念 1.1 基本概念 时间,对于我们来说很重要,什 ...