Using find() instead of tracing a plot
情報
この質問は閉じられています。 編集または回答するには再度開いてください。
古いコメントを表示
I'm working on a lab assignment, and I was wondering how I could use the find() function instead of tracing a plot. Tracing the resulting plot in figure one gives 0.4473 (on the X axis) at -20.11 dB (on the Y axis), but I wanted to find a way to obtain the exact value at -20. Is there a way to do this?
My code is as follows:
b1=[1,1];
b1_1=[0.5,-1];
b2=conv(b1,b1);
b3=conv(b2,b2);
b3_1_1=conv(b3,b1_1);
b=0.02426*b3_1_1;
a1=[1,-1.0416,0.4019];
a2=[1,-0.5661,0.7657];
a3=[1,-0.5];
a1_2=conv(a1,a2);
a=conv(a1_2,a3);
w=0:pi/1024:pi;
h=freqz(b,a,w);
%figure; plot(w/pi,abs(h))
figure; plot(w/pi,20*log(abs(h)));
grid on;
xlabel('Normalized digital frequency ')
ylabel('Magnitude in dB')
title('Magnitude Response')
figure; plot(w/pi,angle(h))
grid on;
xlabel('Frequency ')
ylabel('Amplitude')
title('Phase Response')
find(20*log(abs(h))==-20.00)
figure; grpdelay(b,a)
axis([0,0.4473,2,10]);
Thanks in advance!
1 件のコメント
José-Luis
2014 年 7 月 8 日
It sounds like you need to interpolate.
doc interp1
回答 (0 件)
この質問は閉じられています。
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!