Denoising using Wavelet problem

The inbuilt MATLAB function "wdenoise" does not output the denoised signal. I used the following syntax
f8_clean = wdenoise(f8,5,'Wavelet','db4')
where "f8" is my noisy input signal, "5" is the level of decomposition, and "db4" is the chosen wavelet. The output signal "f8_clean" is supposed to be noise free to some extent, but it exactly matches with my input signal "f8".
What am i doing wrong?

답변 (1개)

Walter Roberson
Walter Roberson 2022년 2월 9일

0 개 추천

Perhaps your noise is just very small and your signal is very regular? And perhaps you only checked to 4 digits?
format long g
t = linspace(0,1/100, 2500);
f8 = sin(t*2*pi*17) + randn(size(t))/100000;
f8_clean = wdenoise(f8,5,'Wavelet','db4');
[maxdiff, maxidx] = max(abs(f8-f8_clean))
maxdiff =
3.77285063186683e-05
maxidx =
996
[f8(maxidx), f8_clean(maxidx)]
ans = 1×2
0.412549466538199 0.412587195044517

댓글 수: 4

Hi @Walter Roberson. Thanks a lot for the response.
I used the below basic code including the long format method, but it still fails to denoise my signal.
format long g
load f8.dat
f8_clean=wdenoise(f8,5,'Wavelet','db4');
On the other hand i tried using the wavelet denoiser app provided by MATLAB. I was able to denoise the signal there. I have shared a screenshot of the "denoised signal", which is labelled as approximation. Why is the code not able to do so? Whats the problem?
I am attaching a .txt file with the data i want to denoise. You can look at that. It is given at 1 sample per second.
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/890350/f8.txt';
format long g
f8 = readmatrix(filename);
f81 = wdenoise(f8,5,'Wavelet','db4');
[maxdiff, maxidx] = max(abs(f8-f81))
maxdiff =
0.00189041871851714
maxidx =
502
plot(f8, 'r-', 'DisplayName', 'f8');
hold on
plot(f81, 'k-', 'DisplayName', 'f81');
hold off
xlim([4.8e3 4.9e3])
legend show
Not the same.
plot(f81-f8, 'DisplayName', 'difference')
xlim([4.8e3 4.9e3])
legend show
Adam Reed
Adam Reed 2022년 4월 9일
I am having the same problem. I check the MSE for the denoised signal and it is on the order of 10^-26.
Walter Roberson
Walter Roberson 2022년 4월 10일
What shows up if you plot the difference between the original signal and the denoised signal?

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

카테고리

도움말 센터File Exchange에서 Wavelet Toolbox에 대해 자세히 알아보기

질문:

2022년 2월 9일

댓글:

2022년 4월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by