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

7 次查看(过去 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