在MATLAB中复制文章的图形

在MATLAB中复制文章的图形,matlab,Matlab,我想从中复制一个数字。更具体地说,我想复制图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/micromete

我想从中复制一个数字。更具体地说,我想复制图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


有关参数的详细信息,请参阅上述代码。作者确实提到等式9中的总和是Reimann Zeta级数。不知道这是否与结果有关

图4是我试图复制的:

有人能告诉我我犯的错误吗

注:这不是家庭作业。

问题1:你认为你在这条线上按阿伏伽德罗的数字缩放吗

H = H*6.02214078^5; 
事实上,您正在按大约
7920=6.022^5的比例缩放。如果您想按阿伏伽德罗数进行缩放,则应执行以下操作:

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
,如果作者的意图有所不同,这将非常令人困惑

在此基础上,我建议您使用错误的
D
N
,或脉冲间隔时间。我在下面的代码中设置了更清晰的脉冲计时。我还使用矢量化简化了您的循环,并删除了
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
问题1:你认为你在这条线上按阿伏伽德罗的数字缩放吗

H = H*6.02214078^5; 
事实上,您正在按大约
7920=6.022^5的比例缩放。如果您想按阿伏伽德罗数进行缩放,则应执行以下操作:

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
,如果作者的意图有所不同,这将非常令人困惑

在此基础上,我建议您使用错误的
D
N
,或脉冲间隔时间。我在下面的代码中设置了更清晰的脉冲计时。我还使用矢量化简化了您的循环,并删除了
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

@Wolfie I假设脉冲
u
是在固定的时间段后产生的,而不是每0.01秒产生一次。问题是当您使用阿伏伽德罗数进行缩放时。相关行应为
H=H*6.02214078e5
。这应该能解决你的问题problem@ammportal谢谢你指出这个错误,但是我还是没有得到结果。阿伏伽德罗的数字是
6.022e23
,而不是
6.022E25
。@Wolfie是的,是
6.022e23
。但是因为我想把H分子/微米^3转化为分子,这意味着我必须用e-18来缩放阿伏伽德罗数。因此,它变成了
6.022e5
@Wolfie I假设脉冲
u
是在固定的时间段后产生的,而不是每0.01秒产生一次。问题是当您使用阿伏伽德罗数进行缩放时。相关行应为
H=H*6.02214078e5
。这应该能解决你的问题problem@ammportal谢谢你指出这个错误,但是我还是没有得到结果。阿伏伽德罗的数字是
6.022e23
,而不是
6.022E25
。@Wolfie是的,是
6.022e23
。但是因为我想把H分子/微米^3转化为分子,这意味着我必须用e-18来缩放阿伏伽德罗数。因此,它几乎成为了最合适的
6.022e5
。当然,我必须检查
D
的值。但是这篇文章确实说了
10
。无论如何,非常感谢。我不能看这篇文章,因为它在付费墙后面,所以我瞎了眼。希望通过使用不同的参数可以显示绘图是如何变化的。我可能错了,但我的主要想法是作者不太可能将
H
定义为两个如此不同的东西!别担心。注意:我刚刚编辑了我的代码,所以这是一个更有效的触摸,同样的结果,几乎是当场。当然,我必须检查
D
的值。但是这篇文章确实说了
10
。无论如何,非常感谢。我不能看这篇文章,因为它在付费墙后面,所以我瞎了眼。希望通过使用不同的参数可以显示绘图是如何变化的。我可能错了,但我的主要想法是作者不太可能将
H
定义为两个如此不同的东西!别担心。注意:我刚刚编辑了我的代码,所以这是一个更有效的触摸,同样的结果