免责声明如果这不是问这个问题的正确地方,请告诉我。
免责声明第 2 部分我没有信号方面的背景。我的重点是数学。
在我的编程课上,我们正在研究光纤中的脉冲传播。纤维可以建模为一条由一维坐标标记的线. 光纤输入端的脉冲() 作为时间相关的场包络给出. 我需要在任何位置和任何时间得出场包络的大小. 我们被告知使用数值方法(即傅里叶变换)来求解偏微分方程
这里,右侧的第一项模拟由于散射引起的信号衰减,第二项模拟群速度,第三项模拟色散(即不同的颜色以不同的速度在光纤中传播,导致脉冲展宽)。我的老师说过要使用高斯脉冲并在范围内离散化脉冲这样 .
我已经能够在数学上证明解决方案应该是
(在哪里是傅里叶变换) 但在 MATLAB 中实际实现这些结果时遇到了麻烦。
到目前为止我所拥有的:
sigma = 0.1; % standard deviation of the pulse
N = 256; % number of points sampled
t = linspace(-10*sigma, 10*sigma, N); % time vector
A0t = (0.25/sqrt(2*pi*sigma^2))*exp(-(t.^2)/(2*sigma^2)); % descritized gaussian pulse
Fs = 1000; %sampling frequency
(我不知道这个数字应该是多少)
A0w = fft(A0t);
A0w = abs(A0w(1:round(N/2)));
w = (0:(N-1))*(Fs/N); %frequency vector
w = w(w < Fs/2);
(我不知道为什么最后三行是必要的。我在这里看到了。)
alpha = input(...);
beta1 = input(...);
beta2 = input(...);
lambda = ((alpha/2) - (1j*w*beta1) + (1j*(w.^2)*beta2/2)); %eigenvalue of ODE in frequency domain
end = input(...);
z = linspace(0,end,length(A0w))'; % spatial vector
Azw = A0w.*exp(lambda.*z); % solution in the frequency domain
Azt = abs(ifft2(Azw)); % solution in the time domain
使用alpha = 10
, beta1 = 50
,beta2 = 18
和end = 10
得到下面的曲面图,我认为这是不正确的。(和是根据它们的索引而不是实际值绘制的,因为大小不一样.)
如果有人可以向我解释为什么我需要做我在我的代码中所做的事情(斜体注释)以及我应该做些什么以获得正确的输出,或者我得到的是正确的,将不胜感激。