Implementing Notch filter for an audio signal

Hello, I have the folowing filter expressed as an equasion
If you put in Exel for example values from 0khz to 15khz in 1Hz increments, you get a response that looks like this
Now when I wanted to implement this in matlab, and used this audio sample: https://transfer.sh/ruffRk/test.wav
[y,Fs] = audioread('test.wav');
filtered = (1+1i*6.4*y)/(5+1i*6.4*y);
sound(filtered,Fs);
I got the folowing error
Error using /
Requested 3888467x3888467 (225308.2GB) array exceeds maximum array size
preference (32.0GB). This might cause MATLAB to become unresponsive.
Now I don't know how to implement this notch filter properly in matlab, I guess its just requires too much RAM, that I don't have or is there any other way?
Thanks for Anwsering and Best Regards

6 commentaires

What frequency are you trying to filter out? Have you tried using one of MATLAB's filter functions, such as bandstop?
That's the problem, I don't realy know, the documentation only says that I need to filter out according to this formula
and here is a picture to make it clearer what I am trying to do
the top signal is how this signal is supposed to look like (and the formula describes the procedure to do so), the bottom is the original signal (not filtered by this formula)
I'm not sure how to set this up, based on the formula and images you've posted. There are some STAFF and MVP contributors that are quite knowledgeable on this. Hopefully, one of them will weigh in with some suggestions. Good luck.
hello
maybe I'm wrong, but seems to me that the modulated signal must simply goes through a one pole one zero filter
(for me j*f = p /(2*pi) , p being the Laplace variable)
so this filter can be rewritten as K(p) = (1+6.4/(2*pi)*p ) / (5 + 6.4/(2*pi) *p)
num = [6.4/(2*pi) 1];
den = [6.4/(2*pi) 5];
you can then discretize this filter using bilinear or c2dm to filter your audio file
@Mathieu NOE you made my day, thanks man, not sure how to accept this anwser but yey it finaly works :)
now I have it like this
function result = k_notch(signal, phase, Fs)
disp("Applying Notch filter for: " + phase);
num = [6.4/(2*pi) 1];
den = [6.4/(2*pi) 5];
%Discrete this
[ad, bd] = bilinear(num, den, Fs);
%Filter signal
result = filter(ad,bd,signal);
end
and I am happy :)
My pleasure !

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Audio Processing Algorithm Design dans Centre d'aide et File Exchange

Produits

Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by