I used a Matlab code of LMS (least mean square algorithm) to equalize the effect of the channel, it is working for a tapped delay channel generated in MATLAB but for optical fiber channel using optisystem program, it doesn’t work well, i think the problem is in optical fiber impulse response, as it is not finite impulse response and the algorithm needs a finite impulse response but how to solve this problem?
the constellation of MATLAB channel and optical fiber channel, it is clear that the second constellation hasn't been equalized well.
constellation:
Here is an example of a noisy channel where LMS algorithm couldn't compensate its effect, is there any way to enhance its performance at this SNR :
% // Set up parameters and signals.
M = 4; % // Alphabet size for modulation
msg = randint(15000,1,M); % // Random message
modmsg = pskmod(msg,M); % // Modulate using QPSK.
trainlen = 5000; % // Length of training sequence
chan = [.986; .845; .237; .123+.31i]; % // Channel coefficients
filtmsg = filter(chan,1,modmsg); % // Introduce channel distortion.
filtmsg=awgn(filtmsg,10,'measured');
% // Equalize the received signal.
eq1 = lineareq(8, lms(0.01)); % // Create an equalizer object.
eq1.SigConst = pskmod([0:M-1],M); % // Set signal constellation.
[symbolest,yd] = equalize(eq1,filtmsg,modmsg(1:trainlen)); % // Equalize.
% // Plot signals.
h = scatterplot(filtmsg,1,trainlen,'bx'); hold on;
scatterplot(symbolest,1,trainlen,'g.',h);