Denoising using Wavelet problem
Ältere Kommentare anzeigen
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?
Antworten (1)
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))
[f8(maxidx), f8_clean(maxidx)]
4 Kommentare
mir khadim
am 10 Feb. 2022
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))
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
am 9 Apr. 2022
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
am 10 Apr. 2022
What shows up if you plot the difference between the original signal and the denoised signal?
Kategorien
Mehr zu Signal Analysis finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


