Wavelet denoising on low pass filtered signal

9 ビュー (過去 30 日間)
Egor Liokumovitch
Egor Liokumovitch 2022 年 11 月 23 日
回答済み: Egor Liokumovitch 2022 年 11 月 24 日
Hello,
I'm having an issue with the wdenoise function.
I'm sampling essensially white noise, hardware filtered to 200 MHz, at 2.5 GS/s with an oscilloscope.
I'm then denoising this data by using the following function:
wdenoise(x, 15,'Wavelet', 'sym8', 'DenoisingMethod','UniversalThreshold', ...
'ThresholdRule','Soft', 'NoiseEstimate','LevelIndependent');
It works great:
The next step is to first filter the 200 MHz signal using a digital low pass filter to 20 MHz:
df = designfilt('lowpassfir','FilterOrder',110,'CutoffFrequency',20e6/(2.5e9/2));
D = mean(grpdelay(df));
y = filter(df,[x zeros(D,1)']);
y = y(D+1:end);
The filter works great:
Now comes the problem - I'm trying to wdenoise the filterd signal, and instead of getting at least the same picture as with the 200 MHz after denoising, the signal after LPF and the signal after denoising said filtered signal are literally the same waveform.
I'm not a DSP expert and not hugely familiar in the inner workings of each function, so I'm most likely missing something. Please help.
  4 件のコメント
Mathieu NOE
Mathieu NOE 2022 年 11 月 23 日
so if I understand correctly the matlab wavelet denoising is not giving you the expected results (as I can see in your original post)
Egor Liokumovitch
Egor Liokumovitch 2022 年 11 月 23 日
編集済み: Egor Liokumovitch 2022 年 11 月 24 日
Yes. It works great on the 200 MHz signal, but stops working when the same 200 MHz signal is first low pass filtered to 20 MHz, and then denoised. It just provides the same low passed signal. Literally a copy.
I'm running successive denoising on the 200 MHz signal, and on the signal after LPF:
xd = wdenoise(S200,22,'Wavelet', 'sym8', 'DenoisingMethod','UniversalThreshold', ...
'ThresholdRule','Soft', 'NoiseEstimate','LevelIndependent');
xd2 = wdenoise(S200LPF,22,'Wavelet', 'sym8', 'DenoisingMethod','UniversalThreshold', ...
'ThresholdRule','Soft', 'NoiseEstimate','LevelIndependent');
Everything is the same, but the result:
And if I plot the filtered signal and the denoised signal, its exactly the same, sample for sample:

サインインしてコメントする。

採用された回答

Egor Liokumovitch
Egor Liokumovitch 2022 年 11 月 24 日
Problem has been solved. I talked to an experienced DSP engineer and he explained the process behind wavelet denoising, more or less. To my understanding, wavelet denoising starts by dividing the singal's frequency components into an LPF and HPF. It filters each section, then divides again to an LPF and HPF, like a tree, and so on.
When I use an LPF, I have already removed all the HPF frequencies that the wavelet denoising expects from the sampling rate, so there's nothing for it to do, so I just receive my signal after LPF and denoising without change.
What I need to do to fix this is to desample the signal and lower the sampling frequency by the same ratio I'm lowering the bandwidth.
After an LPF I downsampled the signal by the same ratio as the filtering and now the wavelet works again.

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeDenoising についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by