How to denoise chirp signal in low SNR condition with NLMS or any other methods?

조회 수: 14 (최근 30일)
I am trying to denoise a chirp (LFM) signal for further analysis, like Short Time Fourier Transform and FrFT. But when in low SNR condition, the STFT results seems to be terrible, and I'm trying to enhance it with dsp.LMSFilter function.
The desired output is the prediction of noise in current pulse, and the reference noise is the WGN with zero signal. It seems that the NLMS filter doesn't work.
Here are my script, it can run in Matlab directly. Can you help me?
T = 10*10^(-6); % Total time 10us
fs = 500*10^6; % 500MHz
t = 0:1/fs:(T-1/fs); % time points
n = length(t); % number of time points
A_lfm = 1; % lfm amplitude (lfm is same as chirp)
fc_lfm = 100*10^6; % start frenquency
B = 100*10^6; % lfm bandwidth 100MHz
SNR = -9; % low SNR
Kr_lfm = B/T; % modulation rate
y_lfm = A_lfm*cos(2*pi*fc_lfm*t + pi*Kr_lfm*t.^2); % original chirp signal
y_n1 = awgn(y_lfm, SNR);% actual input signal for further analysis
y_0 = zeros(1,length(y_lfm));
y_v = awgn(y_0, SNR); % refenence noise
noise = y_v';
x = y_n1'; % NLMS input
mu = 0.01;
L = 100;
nlms = dsp.LMSFilter(L,'StepSize',mu,'Method','Normalized LMS');
[y_nlms_noise,e,w] = nlms(x,noise); % y_nlms_noise is the output, prediction of noise in current pulse
y_n1_denoise =y_n1 - (y_nlms_noise)'; % denoise
figure;
p=plot(t(1:500),y_lfm(1:500), t(1:500),y_n1(1:500),...
t(1:500),y_n1_denoise(1:500));
legend('ideal denoise result','signal with noise','actual denose result');
% p(1).Color='g'; p(2).Color='b';p(3).Color='c';
xlabel('time');ylabel('amplitude');
  댓글 수: 4
Yazan
Yazan 2021년 8월 19일
This line of research has gotten really wide recently. I haven't worked before on such low SNR values, so I don't have real suggestions apart from experimenting with the time-frequency representations provided by B.Boashash in his tool box. If you're doing research, I believe that it is trivial to say that you need to focus on time-frequency representations for low SNR values particularly.
yan liu
yan liu 2021년 8월 20일
I'm sdutying radar systems, it is not very unusual to deal with this kind of low SNR condition :-D

댓글을 달려면 로그인하십시오.

채택된 답변

Yazan
Yazan 2021년 8월 19일
편집: Yazan 2021년 8월 20일
As I mentioned in my comments to your question, it is recommended that you experiment with some state-of-the-art time-frequency representations other than the STFT. Matlab starting from R2018b provides a native function for the Wigner-Ville distribution and its pseudo version. I experimented with it. The result was not so bad.
clc, clear
T = 10*10^(-6);
fs = 500*10^6;
t = 0:1/fs:(T-1/fs);
fc = 100*10^6;
B = 100*10^6;
SNR = -9;
Kr = B/T;
% I do not have the communication toolbox to use awgn function
x = cos(2*pi*fc*t + pi*Kr*t.^2);
n = db2mag(mag2db(rms(x))-SNR)*randn(size(x));
y = x+n;
% smoothed Pseudo Wigner-Ville distribution
% I am using kaiser windows of different lengths for the time and frequency
% axes
[d, f, t] = wvd(y, fs, 'smoothedPseudo', kaiser(512-1, 20), kaiser(128-1, 20));
imagesc(t, f, d), xlabel('Time - sec'); ylabel('Frequency - Hz')
  댓글 수: 2
yan liu
yan liu 2021년 8월 20일
Thanks a lot! I forgot the WVD since I'm not quite familiar with time-freq domain analysis methods. and I tried to improve SNR by accumulating noisy signal yesterday, it seems useful in theory.
By the way, the NLMS seems to be rather sensitive to white noise. When the SNR was set to 40dB, the former script I provided works well with audio signal LOL
Yazan
Yazan 2021년 8월 20일
If you are dealing with linear chirps, the Wigner distribution is the optimal time-frequency representation. Problems arise when dealing with multiple components (e.g., two chirps), as noisy cross-terms will be present due to nonlinear interactions between the signal's components. If the signal is a noisy one-component signal, you need to use the pseudo version to reduce the noise power, but at the expense of losing some resolution. The performance of any time-frequency representation is signal-dependent. Some are good for a class of signals, but not so much for signals out of this class. It is much easier to focus on representations that suit the signals that you're dealing with.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Get Started with Signal Processing Toolbox에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by