performance of least mean square algorithm against impulsive noise environment.
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
how will I model an impulsive noise environment in the code given below.
clc;
clear all;
close all;
%% Desired System (link: http://www.firsuite.net/FIR/AKSOY08_NORCHIP_G40)
sys_desired = [86 -294 -287 -262 -120 140 438 641 613 276 -325 -1009 -1487 -1451 -680 856 2954 5206 7106 8192 8192 7106 5206 2954 856 -680 -1451 -1487 -1009 -325 276 613 641 438 140 -120 -262 -287 -294 86] * 2^(-15);
%% Ergodic Process
for itr=1:100
%% Defining input and initial Model Coefficients
%input
x=randn(1,60000);
% Model for the LMS Algorithm
model_coeff = zeros(1,length(sys_desired));
%% Initial Values of Model Tap
model_tap = zeros(1,length(sys_desired));
%% System Output where a 40 dB Noise floor is added
noise_floor = 40;
sys_opt = filter(sys_desired,1,x)+awgn(x,noise_floor)-x;
%% Lower and Upper Bounds of Learning Rate
%input variance
input_var = var(x);
% upper bound = 1/(filter_length * input variance)
mu_max = 1/(input_var*length(sys_desired));
%learning rate for LMS algorithm
mu_LMS = 0.0004;
% lower bound = learning rate for LMS algorithm
mu_min = mu_LMS;
for i=1:length(x)
%% LMS Algorithm
% model tap values (shifting of tap values by one sample to right)
model_tap=[x(i) model_tap(1:end-1)];
% model output
model_out(i) = model_tap * model_coeff';
%error
e_LMS(i)=sys_opt(i)-model_out(i);
%Updating the coefficients
model_coeff = model_coeff + mu_LMS * e_LMS(i) * model_tap;
end
%% Storing the e_square values after a whole run of LMS
err_LMS(itr,:) = e_LMS.^2;
%% Printing the iteration number
clc
disp(char(strcat('iteration no : ',{' '}, num2str(itr) )))
end
%% Comparing the Error Curves
figure;
plot(10*log10(mean(err_LMS)),'-b');
grid on;
6 commentaires
Mathieu NOE
le 23 Jan 2023
hello @PARVATHY NAIR
seems that LMS algorithms and earthquake signals are back ...
what is the difference with this post I already answered ?
and yes , more specifically, LMS algorithms does also exist in variants dedicated to impulsive (non stationnary) signals.
The internet is filled with publications on that topic
Is it again a case wher you consider earthquake signals denoising ?
I see you have posted several questions about the same topic.... also these ones :
back to your code :
awgn(x,snr) will create noise on top of signal x (so the result is x + noise here,
and
awgn(x,snr) - x is the noise only ( because x + noise - x = noise)
but awgn does not generate any impulsive noise by itself - but simply a constant amplitude random noise
If you want an impulsive noise (that would mimic an earthquake signal ? ) you have to create one by yourself
Still is it not clear what the LMS algorithm is supposed here to do
In the other posts you wanted to clean a recorded signal, but in the litterature about LMS for impulsive noise, the target is usually to reduce the signal itself not only it's uncorrelated noise content.
see for example :
Réponses (0)
Voir également
Catégories
En savoir plus sur Adaptive Filters dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!