Extract magnitude response in dB using fvtool(_) or freqz(_)

23 次查看(过去 30 天)
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?

采纳的回答

Pere Garau Burguera
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.
Where n is the number of samples of the frequency response. Check freqz for more info.
Since h is complex you can then get the magnitude with
h_mag = abs(h);
And the phase with
h_ph = angle(h);
  3 个评论

请先登录,再进行评论。

更多回答(1 个)

Chunru
Chunru 2021-8-4
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.

类别

Help CenterFile Exchange 中查找有关 Filter Design 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by