how can i integrate an array with respect to frequency w (omega)? the command "integral" requires function 'fun' to be declared as function of omega. how can i do this?

5 visualizaciones (últimos 30 días)
FB and W are frequency responses of two FIR filters fb and w. This is essentially what I am doing:
numer1=(abs(FBW-W)).^2; fun=@(omega) numer1; numer=integral(fun,0,pi,'ArrayValued',true);

Respuesta aceptada

Star Strider
Star Strider el 26 de Jun. de 2016
What you believe you’re doing is not what you’re actually doing.
I’m just guessing here because I don’t have either ‘FB’ or ‘W’:
FBW = @(omega) ... SOMETHING ...;
W = @(omega) ... SOMETHING ELSE ...;
numer1 = @(omega) (abs(FBW(omega)-W(omega))).^2;
fun=@(omega) numer1(omega);
numer=integral(fun,0,pi,'ArrayValued',true);
Also, squaring abs is redundant (unless the argument is complex), because the square will be positive.
NOTE This is obviously UNTESTED CODE. You may have to experiment with it to get it to work in your application.
  6 comentarios
Saiankita Anand
Saiankita Anand el 30 de Jun. de 2016
Thank you, Star Strider. You were right. I went back to the documentation of freqz and realized that the frequency vector it returns is in radians/sample and that the frequencies are b/w 0 and pi. My sampling frequency is 16 kHz here but I reckon there is no need for it in this snippet of code as I want to integrate wrt to omega from 0 to pi. Appreciate your help.
Star Strider
Star Strider el 30 de Jun. de 2016
My pleasure.
The equation you posted specifically states integrating on the interval [0,pi], so your code is correct.

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by