¿como realizo este proceso de compensacion backpropagation?


03 de Diciembre del 2020

hola, estaba estudiando un poco el proceso de compensacion backpropagation que se ve en la fibra optica, y necesito probar este mismo proceso pero con una señal de las de siempre, nose.. una senoial, diente de sierra o la que sea.
pero no he logrado que funcione el codigo con respecto a una señal de esas, (el codigo esta para hacer el proceso con pulsos gaussianos y el cambio que he querido es que haga el proceso con una senoidal).

este es el codigo de la compensacion backpropagation con pulsos gaussianos

%%%%Compensación BackPropagation

clear all;
%%%%%%%%Parámetros de Entrada%%%%%%%%
R=10e9;                                          %Tasa de transmisión
Tb=1/R;                                         %Tiempo de bit
% sec=randint(1,n_bits);                        %Secuencia de "1" y "0"
sec=[0 1 0];
n_bits=length(sec);                             %Núero de bits
w=2*pi*1/Tb;                                    %Frecuencia angular
Fs=64/Tb;                                       %Frecuencia de Muestreo
Ts=1/Fs;                                        %Tiempo de bit
Nmpb=(Tb/Ts)+1;                                 %Número de muestras por bit
Nmps=Nmpb*n_bits;                               %Número de muestras de toda la secuencia
b2 = -21.6*(1e-12^2)/1e3;                       %[ps.ps/km]
b3 = 0.117*(1e-12^3)/1e3;                       %[ps.ps.ps/km]
Dz = 10e3;
 
%%%%%%%%Secuencia de pulsos gaussianos%%%%%%%%
To=Tb/8;                                        %Anchura del pulso gaussiano
t=-Tb/2:Ts:Tb/2;                                %Intervalo pulso gaussiano
C=0;                                            %Chirp
for i=1:length(sec)
    At=(t/To).^2;                                                               %Parte de la función del pulso gaussiano
    p_gauss(i*Nmpb-Nmpb+1:i*Nmpb)=[sec(i)*exp(-(1/2)*(1+j*C)*At)];              %Función de la secuencia de pulsos gaussianos
end
t1=0:Ts:(Nmps-1)*Ts;
plot(t1,p_gauss,'r');
hold on
% Nb = length(sec);       %Number of bits
% %         Tb = 1/Rb;              %Bit time
% %         Ts = 1/fs;              %Sampling time
%         Nspb = ceil(Tb/Ts);     %Samples per bit
%         N = Nspb*Nb;
%         t = [0:N-1]*Ts;
%         As = zeros(1,N);
%         for k = 1:length(sec),
%             As = As + sec(k)*exp(-(1/2)*(1+j*C)*((t - Tb/2 -(k-1)*Tb)/To).^2);
%         end       
%         plot(t,As)
%         hold on
%%%%%%%%Función de la Fibra%%%%%%%%%%%%%%%%%%%
n = 0:Nmps-1;
w = 2*pi*(n-Nmps/2)*Fs/Nmps;
Hd = exp(j*0.5*b2*Dz*w.*w - j*b3*w.*w.*w*Dz/6);   % Función de la fibra en el dominio de la frecuencia 
AouF = fftshift(fft(p_gauss)).*Hd; 
Aou = ifft(fftshift(AouF));
plot(t1,abs(Aou),'g');
% Aou = Fiber_L_A(p_gauss,1/Ts,[b2,b3],Dz);
% plot(t1,abs(Aou),'g');

y esta es por ejemplo: mi señal senoidal continua
Fs = 10000;
T =3*(1/100);
t = 0:1/Fs:T-1/Fs;
x = 5*sin(2*pi*100*t);