0
$\begingroup$

The MATLAB code below is for equalizer using lms algorithm adaptive filter and then plotting MSE (Mean Square Error) Vs Iteration numbers


%% Channel Equalization using Least Mean Square (LMS) algorithm
% Author: SHUJAAT KHAN
clc;clear all;close all;
%% Channel and noise level
h = [0.9 0.3 0.5 -0.1]; % Channel
SNRr = 10;              % Noise Level
%% Input/Output data
N = 1000;               % Number of samples
Bits = 2;               % Number of bits for modulation (2-bit for Binary modulation)
data = randi([0 1],1,N);        % Random signal
d = real(qammod(data,Bits));    % BPSK Modulated signal (desired/output)
r = filter(h,1,d);              % Signal after passing through channel
x = awgn(r, SNRr);              % Noisy Signal after channel (given/input)
%% LMS parameters
epoch = 50;        % Number of epochs (training repmiotion)
mio = 1e-3;         % Learning rate / step size
order=12;           % Order of the equalizer
U = zeros(1,order); % Input frame
W = zeros(1,order); % Initial Weigths
%% LMS Algorithm
for k = 1 : epoch
    for n = 1 : N
        U(1,2:end) = U(1,1:end-1);  % Sliding window
        U(1,1) = x(n);              % Present Input
     
        y = (W)*U';             % Calculating output of LMS
        e(n) = d(n) - y;           % Instantaneous error 
        W = W +  mio * e(n) * U ;  % Weight update rule of LMS
        J(k,n) = e(n) * e(n)';        % Instantaneous square error
    end
end
%% Calculation of performance parameters
MJ = mean(J,2);     % Mean square error
%% Plots
figure % MSE
plot(10*log10(MJ),'linewidth',lw)
hg=legend('MSE','Location','Best');
grid minor
xlabel('Epochs iterations');
ylabel('Mean squared error (dB)');
title('Cost function');

But the curve plotted is unexpected, as the MSE should have fluctuations across iterations and to be very smooth like that as it LMS algorithm is used

That's because it doesn't take the Expectation in the adaptive equation.

The curve plotted is as the following:

[The output of MATLAB code1

Where the expected plot is as the following:

The expected output

$\endgroup$
4
  • 1
    $\begingroup$ Looks plausible to me. What exactly did you expect and how is it different from what you see ? $\endgroup$ – Hilmar Dec 17 '20 at 13:48
  • $\begingroup$ @Hilmar The curve plotted is very smooth and it should contain fluctuations as the algorithm used is LMS algorithm. $\endgroup$ – Aren dg Dec 18 '20 at 0:30
  • $\begingroup$ Isn't it because of the added noise? $\endgroup$ – megasplash Dec 18 '20 at 8:45
  • $\begingroup$ @megasplash even without the noise, the same. But my question the curve is so smooth while the expected output cost function to have many fluctuations. $\endgroup$ – Aren dg Dec 18 '20 at 12:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.