Extract magnitude response in dB using fvtool(_) or freqz(_)
23 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Shannon Cherry
le 4 Août 2021
Commenté : Shannon Cherry
le 4 Août 2021
Hi, I have some filter coefficients 'h' and I am plotting the frequency response using fvtool(h) or freq(z).
Now, I would like to know the magnitude response (Y-axis) values of any given Normalized frequency (X-axis) shown in the figure (attached).
I have to manually place a cursor on Normalized frequency (X-axis) and drag it to a point to know its corresponding Y-axis value as shown below.
Example: Y-axis value (Magnitude) = 0.3523 for a given X-axis value (Normalized frequency) 0.2427.
This is quite uncomfortable when I want to know the Y-axis values for 100s of X-axis values. Is there any alternative way or MATLAB command to get the Y-axis values for any given X axis value?
0 commentaires
Réponse acceptée
Pere Garau Burguera
le 4 Août 2021
You can still use freqz, and in h you get the frequency response.
[h,w] = freqz(z);
This returns an array of 8192 elements, you can change this number with
[h,w] = freqz(z,n);
Then
freqz(z)
without assigning it to a variable is what you have been doing, and it automatically plot the response for you (which actually uses fvtool), as indicated in freqz.
Since h is complex you can then get the magnitude with
h_mag = abs(h);
And the phase with
h_ph = angle(h);
3 commentaires
Pere Garau Burguera
le 4 Août 2021
To convert from linear to logarithmic, you can use
h_db = 10*log10(h_mag);
Plus de réponses (1)
Chunru
le 4 Août 2021
fvtool visualizes filter frequency response and it has no return value. freqz returns the frequency response and has the syntax such as "[h,f] = freqz(___,n,fs)". You should use freqz to get the response h vs f.
0 commentaires
Voir également
Catégories
En savoir plus sur Filter Design dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!