这次的任务是复现该文章的图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的更多相关文章

  1. 【转帖】远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)

    远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm) https://zhuanlan.zhihu.com/p/310 ...

  2. Variable|quantitative variables|continuous variable|discrete variable|qualitative variables| observation|data set

    2.1Variables and Data Variable:某物或某人的某一特征和其他个体不同. quantitative variables:定量变量either discrete (可以被数)o ...

  3. 论文解读(MPNN)Neural Message Passing for Quantum Chemistry

    论文标题:DEEP GRAPH INFOMAX 论文方向:  论文来源:ICML 2017 论文链接:https://arxiv.org/abs/1704.01212 论文代码: 1 介绍 本文的目标 ...

  4. 论文结果图:matplotlib和seaborn实现

    在论文中,可视化结果往往很重要,毕竟文字太抽象,需要图片向审稿人直观的展现出我们的结果.我也写了俩篇论文和一篇专利的申请,其中也有一些画图的程序,因此记录,防止以后忘了.由于篇幅原因,文章就不贴代码, ...

  5. word论文之图和表目录制作

    https://jingyan.baidu.com/article/91f5db1b3c539f1c7e05e341.html?qq-pf-to=pcqq.c2c 1.目标: (1)图目录. (2)表 ...

  6. 远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)

    在做 数据分析(数据挖掘 或 机器学习)的时候,我们经常需要绘制一些统计相关的图表,这些统计.绘图的程序常常是跑在服务器上的,可是服务器出于性能和效率的考虑,通常都是没有安装图形化界面的,于是这些统计 ...

  7. 论文笔记之:Speed Up Tracking by Ignoring Features

    Speed Up Tracking by Ignoring Features CVPR 2014 Abstract:本文提出一种特征选择的算法,来实现用最"精简"的特征以进行目标跟 ...

  8. Matlab调用遗传工具箱复现论文模型求解部分

    原文转载自:https://blog.csdn.net/robert_chen1988/article/details/52431594 论文来源: https://www.sciencedirect ...

  9. sql server2016安装程序图

    今天终于有时间安装SQL Server2016正式版,下载那个安装包都用了一个星期 安装包可以从这里下载: http://www.itellyou.cn/ https://msdn.microsoft ...

随机推荐

  1. springboot 快速开发的定制补充

    增强 SpringBoot 快速开发工具 项目地址:https://gitee.com/sanri/web-ui 优点:这是一个 web 通用配置的组件,即插即用,可用于新项目或私活.是对 Sprin ...

  2. 《Java并发编程实战》读书笔记-第3章 对象的共享

    可见性 在没有同步的情况下,编译器.处理器以及运行时都可能做指令重排.执行结果可能会出现错误 volatile变量 编译器与运行时不会进行指令重排,不会进行缓存,使用volatile变量要满足以下条件 ...

  3. linux+jenkins+github+python持续集成

    1.服务器上事先安装jenkins   参见:linux上war包方式安装Jenkins 2.新建一个自由风格的job,名字随意起 3.配置git(拉取github代码) 从github复制pytho ...

  4. 2.单核CPU是如何实现多进程的?

    单核cpu之所以能够实现多进程,主要是依靠于操作系统的进程的调度算法 如时间片轮转算法,在早期,举例说明:有5个正在运行的程序(即5个进程) :   QQ    微信    有道词典      网易云 ...

  5. Linux面试题-8

    1.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于磁盘这种外部设备文件,一般应将其放在(C)目录中. A./bin B./etc C./dev D./lib 2.当使用mount进 ...

  6. 百万年薪python之路 -- 推导式

    2.1列表推导式 首先我们先看一下这样的代码,给出一个列表,通过循环,想列表中添加1~10: li = [] for i in range(1,11): li.append(i) print(li) ...

  7. <Machine Learning - 李宏毅> 学习笔记

    <Machine Learning - 李宏毅> 学习笔记 b站视频地址:李宏毅2019国语 第一章 机器学习介绍 Hand crafted rules Machine learning ...

  8. 远程桌面连接(mstsc)

    目录 1. 序言 2. 准备工作 3. 内网远程连接(以mstsc的方式) 4. 问题---凭据不工作 5. 外网远程连接(mstsc) 6. 结语 更新时间:2019.09.10 1. 序言 有时候 ...

  9. 斯坦福机器学习课程 Exercise 习题四

    Exercise 4: Logistic Regression and Newton’s Method 回顾一下线性回归 hθ(x)=θTx Logistic Regression hθ(x)=11+ ...

  10. ArangoDB图数据库--总参

    参考文章: ArangoDB原生多模型数据库(百科) ArangoDB官网 ArangoDB数据库入门 arangodb-vs-cassandra arangodb-vs-mongodb2 Arang ...