在MATLAB中复制文章的图形

时间:2017-11-14 08:25:31

标签: matlab

我想从此article复制一个数字。更具体地说,我想复制第4号图,我认为它是公式9的表示。

到目前为止,我已经提出了这个代码:

% implementing equation 9 and figure 4
step   = 0.01;    t = 1:step:3600;
d      = 3;     % dimension
N      = 8000;  % number of molecules
H      = 0.01;  % H = [0.01,0.1,1] is in mol/micrometer^3  
H      = H*6.02214078^5; % hence I scaled the Avogadro's number (right or wrong?)
D      = 10;    % diffusion coefficient in micrometer^2/sec

u(1)   =  1./(1.^(d/2)); % inner function in equation 9; first pulse

for i = 2:numel(t)/1000
    u(i)     =  u(i-1)+(1./(i.^(d/2))); %  u-> the pulse number
    lmda(i)  = (1/(4*pi*D))*((N/(H)).*sum(u)).^(2/d);
end

figure;plot(lmda)

但我无法复制它。

公式9

enter image description here
有关参数的详细信息,请参阅上面的代码。作者确实提到等式9中的总和是Reimann Zeta系列。不知道这与结果有什么关系吗?

图4,我试图复制:

enter image description here

有人可以告诉我我犯的错误吗?

P.s:这不是作业。

1 个答案:

答案 0 :(得分:4)

问题1:您认为您正在使用此线路上的Avogadro号码进行扩展

H = H*6.02214078^5; 

事实上,您按大约7920=6.022^5进行缩放。如果您想按Avogadro数字进行扩展,那么您应该这样做:

H = H * 6.02214078e23 % = 6.02214078 * 10^23 : the Avogadro number

问题2:您没有针对t进行策划,您正在针对的样本编号进行绘图,这样做并不合理(除非您的t恰好是整数秒)。从循环中删除/1000

for i = 2:numel(t)
    % ...
end
% Then plot
plot(t, lmda)

在这个阶段,我们可以看到一些错误。现在我们正在按正确的Avo数量进行缩放,数量级已经逐渐消失。我建议你相信图4中的H,而等式9中的H是相同的H,如果作者想要的不同,那将会非常混乱!

在此基础上,我建议您使用错误的DN或脉冲之间的时间。我在下面的代码中设置了更清晰的脉冲时序。我还使用矢量化在某种程度上简化了循环,并删除了H缩放。

如果你调整它dtPulses=100以及D=100,那么这些图几乎是相同的。您可能需要考虑这两个数字如何影响结果...

% implementing equation 9 and figure 4
d = 3;     % dimension
N = 8000;  % number of molecules
D = 100;   % diffusion coefficient in micrometer^2/sec

dtPulses = 10; % Seconds between pulses
tPulses = 1:dtPulses:3600; % Time array to plot against
nt = numel(tPulses);
i = 1:nt;  % pulse numbers
u = 1 ./ (i.^(d/2)); % inner function in equation 9: individual pulse
for k = 2:nt % Running sum
    u(k) = u(k-1)+u(k);
end
% Now plot for different H (mol/micrometer^3)
H = [0.01, 0.1, 1];
figure; hold on; linestyles = {':k', '--k', '-k'};
for nH = 1:3
    lmda = ((1/(4*pi*D))*(N/H(nH)).*u).^(2/d);    
    plot(tPulses, lmda, linestyles{nH}, 'linewidth', 2)    
end

plot2