Use FIR Wiener Filter to remove the noise??

37 views (last 30 days)
Lana Aydin
Lana Aydin on 13 Dec 2021
Answered: Akash on 20 Feb 2024
Hello
I have an audio file that added white guass noise to it, I need to determine the FIR filter coefficients using the Wiener-Hopf equation
so I started like this and stopped
[X, Fs] = audioread('test.wav'); % read audio file
gnoise = awgn(X, 15); % Add white guass noise
Noise = gnoise - X; %extract the noise
as a result X and Fs would be Fs = 48000; X = 961452x2 double
how can we design a wiener filter to clear the noise? I wrote the code below for that but it didn't cleared
N = 100;
rxx = xcorr(gnoise, N);
rxy = xcorr(gnoise, X, N);
R = toeplitz(rxx);
W = inv(R).*rxy; %%% my W value is not one dimension, I could't get it as one dimension matrix.
Y = filter(W(:), gnoise);
thankks.

Answers (1)

Akash
Akash on 20 Feb 2024
Hi Lana,
To design a Wiener filter that can effectively reduce the noise, you might find the MATLAB File Exchange link provided below useful. It contains a design for a Wiener filter where a signal is taken, noise is added, and then the Wiener filter is applied to mitigate the noise's effect.

Categories

Find more on Simulation, Tuning, and Visualization in Help Center and File Exchange

Products


Release

R2020b

Community Treasure Hunt

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

Start Hunting!