Working Kerr effect; PDM; speedups; removed unused files
[4yp.git] / chromaticDispersion.m
index 49a49a3..bc04e59 100644 (file)
@@ -26,10 +26,21 @@ function [xCD, kstart] = chromaticDispersion(x, D, lambda, z, Tsamp)
   t = k * Tsamp;
 
   % Impulse response
-  g = sqrt(c / (j * D * lambda^2 * z)) * ...
-      exp(j * pi * c / (D * lambda^2 * z) * t .^ 2);
+  g = exp(j * pi * c / (D * lambda^2 * z) * t .^ 2);
 
-  xCD = conv(x, g);
+  lenx = length(x);
+  leng = length(g);
+
+  len_fft = max(lenx, leng);
+
+  G = fft(g, len_fft);
+  X = fft(x, len_fft);
+
+  xCD = ifft(G.' .* X);
+  l = (leng - 1) / 2;
+  if l > 0
+    xCD = [xCD(l:end); xCD(1:l-1)];
+  end
 
   kstart = 1 - kmax;
 end