Extract magnitude response in dB using fvtool(_) or freqz(_)
조회 수: 8 (최근 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?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/702462/image.png)
댓글 수: 0
채택된 답변
Pere Garau Burguera
2021년 8월 4일
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
Pere Garau Burguera
2021년 8월 4일
To convert from linear to logarithmic, you can use
h_db = 10*log10(h_mag);
추가 답변 (1개)
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.
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Filter Design에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!