performance of least mean square algorithm against impulsive noise environment.
조회 수: 1 (최근 30일)
이전 댓글 표시
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
Mathieu NOE
2023년 1월 23일
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 :
답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!