Я пытаюсь использовать функцию fvtool
в Matlab (2011a).Ввод частоты дискретизации при отображении ответа цифрового фильтра в Matlab
Это интерактивный «инструмент», состоящий из множества функций. Мой код выглядит следующим образом:
%fs1=256; fs2=64; fs3=32;
b1 = fir1(52,0.25,kaiser(53,7.85726));
b2 = fir1(40,0.5,kaiser(41,7.85726));
b3 = fir1(204,0.5,kaiser(205,10.0613));
fvtool(b1,1,b2,1,b3,1);
Это дает:
Теперь я иду к «анализу» Menue и выберите «частоту дискретизации», и введите частоту дискретизации. для каждого фильтра. Результат:
Не очень хорошо, так как реакция второго и третьего фильтров повторяется. Ответ первого фильтра тонкий, от 0 до 256/2 = 128 Гц. Я бы хотел, чтобы ответ второго и третьего фильтров поднимался до 64/2 = 32 и 32/2 = 16. соответственно.
Так что я попытался вручную сделать это,
%Digital filter:
fs1=256; fs2=64; fs3=32;
b1 = fir1(52,0.25,kaiser(53,7.85726)); b1(end+256)=0;
b2 = fir1(40,0.5,kaiser(41,7.85726)); b2(end+448)=0;
b3 = fir1(204,0.5,kaiser(205,10.0613)); b3(end+480)=0;
%Filters Response
n=1024;
w = logspace(-1,2,n);
digi_1 = freqz(b1,1,n,fs1); semilogx(w,20*log10(abs(digi_1)),'Color','k'); hold on
digi_2 = freqz(b2,1,n,fs2); semilogx(w,20*log10(abs(digi_2)),'Color','b'); hold on
digi_3 = freqz(b3,1,n,fs3); semilogx(w,20*log10(abs(digi_3)),'Color','r');
axis ([0.1 128 -140 10])
Здесь я использовал freqz и дать ему числитель фильтра и denomenator, плюс число точек п, плюс частота дискретизации. фс. Проблема в том, что Matlab, похоже, не делает никаких изменений с частотой выборки или без нее, т. Е. Если я оставил ее, ничего не изменится.
Так что если кто-то хочет помочь, он или она поможет мне с fvtools
или с моим ручным кодом, который является шагом позже fvtools
.
Чтобы соответствовать синтаксису документации Matlab, я должен был написать [h1 f1] вместо [h1 w1]. Неважно, но может устранить путаницу при обращении к документации. См. Здесь: http://www.mathworks.com/help/signal/ref/freqz.html – student1