从光谱计算相干长度(Matlab)

时间:2018-11-26 17:45:09

标签: matlab fft physics

我想从使用阵列光谱仪测量的任意光谱(光谱功率密度与波长的函数)中计算相干长度。这个问题已经在physics.stackexchange:https://physics.stackexchange.com/a/105961上得到了解答。 但是我在执行给定的公式时遇到了一些问题,所以我希望我来对地方了……

公式和假设

为了验证我的计算,我决定模拟一个简单的高斯谱:

fmin = physconst('LightSpeed')/900e-9;
fmax = physconst('LightSpeed')/700e-9;
deltaf = 1/0.5e-9;
f = fmin:deltaf:fmax;
fcentral = physconst('LightSpeed')/800e-9;
ffwhm = 50e-9*physconst('LightSpeed')/(800e-9)^2;
I = exp(-(f-fcentral).^2./(2*(0.5*ffwhm)^2));
plot(f,I)
xlabel('frequency (Hz)'); ylabel('Intensity (a.u.)');

公式(来自this链接的注释):

degree of coherence

Gamma是相干度,从中可以轻松计算出相干长度。

解决方案

如果我是对的,我的示例光谱I将通过以下方式与公式关联:

I = c/f^2*F(c/f)

因此,我只需要进行傅立叶逆变换(?)即可得到Gamma。简单地使用ifft会产生一些奇怪的结果……我通过这种方式获得的最佳结果是:

gamma = 2.*real(ifftshift(ifft(ifftshift(I))))*deltaf;
plot(1./f, gamma)
xlabel('time (s)'); ylabel('Degree of coherence (a.u.)');

在遵循此image之后,我希望Gamma的FWHM为20 fs。我在做什么错了?

备注

我知道这个问题不仅与编程有关,而且与物理学有关。我不知道我的问题是由于太愚蠢而无法理解物理背景还是由于无法正确使用Matlab(尤其是DFT)导致的。也许两者都有。我期待着能使我更进一步的每一个答案。

0 个答案:

没有答案