|
|
  |
синтез цифрового фильтра из аналогового фильтра-прототипа |
|
|
|
Mar 2 2013, 17:58
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Наталия_К: ильтр чебышева II типа, исходные данные: Fd=12000 Гц fp =2300 Гц fs =3000 Гц as =3дБ ap =55дБ H(s) вывела сама, по известным формулам, там трудно было ошибиться. Это не фильтр чебышева 2. Никаких резонансов этот фильтр иметь не должен. Где-то вы ошиблись. Цитата а что по поводу масштабирования скажете? не надо его делать выходит? Будет время - гляну. Сейчас некогда. Вообще надо приводить нормированный фильтр к нужной полосе, конечно.
|
|
|
|
|
Mar 3 2013, 21:28
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Дмитрий_Б: Именно из-за наличия дельта-функций в импульсной характеристике непрерывный ("аналоговый") фильтр Чебышева считается физически нереализуемым Даже не знаю, как прокомментировать это утверждение... Т е фильтр с передаточной функцией H(s) = const реализовать нельзя? Ведь их такого фильтра дельта-функция дирака... Чудеса, однако. Цитата Наталия_К: фильтр чебышева II типа, исходные данные: Fd=12000 Гц fp =2300 Гц fs =3000 Гц as =3дБ ap =55дБ H(s) вывела сама, по известным формулам, там трудно было ошибиться. Как я уже сказал в ваших расчетах ошибка. Чтобы получился чебышев-2 вам надо в знаменателе к-ты при первой степени s удвоить. Смотрите приложенный файл. Там фильтр приведен к частоте 300 гц. Сами задайте какую надо частоту и руками скопируйте к-ты из разложения дроби на простейшие. Как построить карту нулей/полюсов в маткаде - не знаю. Вообще - по оси абсцисс - вещественная часть, ординат - мнимая... Маткад, честно говоря, кроме ненависти никакой любви не вызывает.
Прикрепленные файлы
test.zip ( 107.85 килобайт )
Кол-во скачиваний: 69
|
|
|
|
|
Mar 4 2013, 11:00
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 22-02-13
Пользователь №: 75 759

|
 Цитата(Дмитрий_Б @ Mar 3 2013, 10:09)  Наталия, фильтр Чебышева - неудачный выбор. Возьмите фильтр Баттерворта. Он идеально подходит на роль прототипа. Примеры решений по методу инвариантности импульсной характеристики для него в учебниках найти можно. я его выбрала только потому, что порядок фильтра получается наименьшим, только из этих соображений. попробую Баттерворта. Цитата(thermit @ Mar 4 2013, 01:28)  Как я уже сказал в ваших расчетах ошибка. Чтобы получился чебышев-2 вам надо в знаменателе к-ты при первой степени s удвоить. по поводу этого могу только показать как все делала, кстати, в знаменателе при первой степени s коэффициент на 2 умножался. ну вот так: все формулы брала отсюда: http://www.dsplib.ru/content/filters/ch5/ch5.htmlЦитата(thermit @ Mar 4 2013, 01:28)  и руками скопируйте к-ты из разложения дроби на простейшие. ой, точно на 2 забыла умножить... в первый раз так и делала, я поняла, что туда они ручками копируются вобщем вот так получилось лихо Вы... как я могу Вас отблагодарить? вот только теперь такой вопрос: почему масштабировав относительно fp у меня получилось, что на этой величине фильтр уже не пропускает, т.е. это значение превратилось в fs? сейчас еще раз перепроверила, все верно, написано a=2*pi*fc, но в моем случае fc не задано, а задано fp, но это однозначно не fs... смотрите какая интересная вещь получилась, когда я масштабировала относительно fs, для R(f) получилась требуемая характеристика (сам прототип), а для P(f) G(f) графики получились одинаковые и оба уползли наверх. а при масштабировании относительно fp P(f) и G(f) практически совпадают с R(f). все таки как правильно? по поводу масштабирования - посмотрела Л.Рабинера,Б.Гоулда "теория и практика ЦОС", Гадзиковского, Солонину"Основы ЦОС", там ничего про масштабирование нет. только в Айфичере нашла. но там написано относительно частоты среза на уровне 3дБ...
Сообщение отредактировал Наталия_К - Mar 4 2013, 10:03
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 4 2013, 12:33
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 22-02-13
Пользователь №: 75 759

|
я попробовала все в матлабе сделать, результат совсем иной... вот только фишка в том, что можно только в маткаде сдать
Сообщение отредактировал Наталия_К - Mar 4 2013, 12:34
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 4 2013, 12:44
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Наталия_К: смотрите какая интересная вещь получилась, когда я масштабировала относительно fs, для R(f) получилась требуемая характеристика (сам прототип), а для P(f) G(f) графики получились одинаковые и оба уползли наверх. а при масштабировании относительно fp P(f) и G(f) практически совпадают с R(f). все таки как правильно? Не. Не все. Когда копировали к-ты из разложения забыли про знаки...
|
|
|
|
|
Mar 4 2013, 12:55
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 22-02-13
Пользователь №: 75 759

|
Цитата(thermit @ Mar 4 2013, 16:44)  Не. Не все. Когда копировали к-ты из разложения забыли про знаки... не, не забыла вот: ой, один коэффициент не туда скопировала а что по поводу относительно чего масштабировать и почему не совпадает с матлабом?
Сообщение отредактировал Наталия_К - Mar 4 2013, 12:56
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 4 2013, 13:07
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Наталия_К: а что по поводу относительно чего масштабировать и почему не совпадает с матлабом? Все совпадает. Вот скрипт. Код clear all; Fd=12000; f0=3000; norm=2*pi*f0;
bs1=[1 0 1.04*norm^2]; bs2=[1 0 1.446*norm^2]; bs3=[1 0 3.24*norm^2]; bs4=[1 0 26.274*norm^2];
as1=[1 2*0.099*norm 0.512*norm^2]; as2=[1 2*0.329*norm 0.594*norm^2]; as3=[1 2*0.637*norm 0.769*norm^2]; as4=[1 2*0.949*norm 0.972*norm^2];
bs=conv(bs1,conv(bs2,conv(bs3,bs4)))/562.341; as=conv(as1,conv(as2,conv(as3,as4)));
[b,a]=impinvar(bs,as,Fd);
plot(0:Fd/20000:Fd/2-Fd/20000,20*log10(abs(freqz(b,a,10000)))); grid on Другое дело, что соотношение частоты дискретизации и полосы фильтра маленькое, поэтому получается не очень хорошая х-ка. Матлаб ругается. Попробуйте частоту дискретизации раз в 10 увеличить...
|
|
|
|
|
Mar 4 2013, 13:40
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 22-02-13
Пользователь №: 75 759

|
Цитата(thermit @ Mar 4 2013, 17:07)  Попробуйте частоту дискретизации раз в 10 увеличить... надо то по заданию... я делала так (по образу и подобию Айфичера) Fs=12000; % Sampling frequency Ap=3; As=55; wp=2300/6000; ws=3000/6000; [N,Wc]= cheb2ord(wp,ws,Ap,As,'s'); % Определить порядок фильтра % % Create an analogue filter % [b, a]=cheby2(N, As, Wc, 's'); % Determine filter coeffs [z, p, k]=cheby2(N, As,Wc, 's'); % Determine poles and zeros % % Convert analogue filter into Discrete IIR filter % [bz, az]=impinvar(b, a, Fs); % Determine coeffs of IIR filter subplot(4,1,1) % Plot magnitude freq. response [H, f]=freqz(bz, az, 512, Fs); plot(f, 20*log10(abs(H))) xlabel('Частота (Гц)') ylabel('Амплитудная характеристика (дБ)') subplot(4,1,2) % Вывести на экран ФЧХ phase=(angle(H)); plot(f,phase) xlabel('Частота (Гц)') ylabel('Фаза (радианы)') subplot(4,1,3) % Вывести на экран диаграмму нулей и полюсов zplane(bz, az) zz=roots(bz); % Determine poles and zeros pz=roots(az); subplot(4,1,4) % Вывести на экран импульсную характеристику impz(bz,az) так выходит я изначально H(s) неверно определила? или я неправильно в матлабе сделала?
|
|
|
|
|
Mar 4 2013, 14:14
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Так должно быть Код clear all; Ap=3; As=55; Fd=12000; fp=2300/Fd; fs=3000/Fd; wp=fp/fs; ws=fs/fs; [N,Wc]=cheb2ord(wp,ws,Ap,As,'s'); [bs, as]=cheby2(N, As, Wc, 's'); norm=2*pi*fs; bs=bs.*norm.^(0:length(bs)-1); as=as.*norm.^(0:length(as)-1); [b,a]=impinvar(bs,as,1);
plot(0:Fd/20000:Fd/2-Fd/20000,20*log10(abs(freqz(b,a,10000)))); grid on Кстати, фильтр с такими параметрами имеет 10-й порядок а не восьмой.
Сообщение отредактировал thermit - Mar 4 2013, 14:15
|
|
|
|
|
Mar 4 2013, 17:08
|
Местный
  
Группа: Участник
Сообщений: 211
Регистрация: 25-10-09
Пользователь №: 53 195

|
Цитата(thermit @ Mar 4 2013, 01:28)  Даже не знаю, как прокомментировать это утверждение... Т е фильтр с передаточной функцией H(s) = const реализовать нельзя? Ведь их такого фильтра дельта-функция дирака... Чудеса, однако. Лучше для разбора взять импульсную характеристику фильтра Чебышёва (с АЧХ того именно типа, что здесь обсуждается), имеющую аналитическое выражение. В частном случае ФНЧ обратимся к весовой функции Дольфа-Чебышёва, рассматривая ее как импульсную характеристику. Нетрудно видеть, что АЧХ такого фильтра оптимальна (это спектр весовой функции). Теперь, как того требует метод инвариантности имп. х-ки, возьмём отсчёты представленной имп. х-ки: хотя бы один - в начале (t=-Т/2) и один в середине (t=0). Отсчёт в середине - какое-то положительное ограниченное число. Первый отсчёт - плюс бесконечность. Совершенно ясно, что такое соотношение между отсчётами не позволяет представить их в конечной разрядной сетке, равно как и реализовать в аналоговом виде - ввиду конечного значения динамического диапазона и полосы пропускания любого физического устройства. Впрочем, всё это было известно с самого появления функции Дольфа - Чебышёва, исследованной как амплитудное распределения поля в антеннах. Источник: Трухачёв А.А. Радиолокационные сигналы и их применения. -М.: Воениздат, 2005.
Сообщение отредактировал Дмитрий_Б - Mar 4 2013, 17:22
Эскизы прикрепленных изображений
|
|
|
|
|
Mar 4 2013, 19:04
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 22-02-13
Пользователь №: 75 759

|
Цитата(thermit @ Mar 4 2013, 18:14)  Кстати, фильтр с такими параметрами имеет 10-й порядок а не восьмой. и правда, в матлабе 10-й, даже по тому, что у меня было... почему же у меня получился в маткаде 8-й? тут то вроде все формулы правильно подставила...  а графики ведь совпали, когда Вы первый раз подставили в матлабе по полученной H(s) для 8-го порядка... с тем, что потом написали, где N=10
Сообщение отредактировал Наталия_К - Mar 4 2013, 19:07
|
|
|
|
|
Mar 4 2013, 19:51
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Цитата Наталия_К: и правда, в матлабе 10-й, даже по тому, что у меня было... почему же у меня получился в маткаде 8-й? тут то вроде все формулы правильно подставила... sad.gif а графики ведь совпали, когда Вы первый раз подставили в матлабе по полученной H(s) для 8-го порядка... с тем, что потом написали, где N=10 Не-а. С fp/fs 2300/3000 порядок 10. 8-ой 2100/3000. Собственно матлаб все по тем же формулам считает.
Сообщение отредактировал thermit - Mar 4 2013, 20:00
|
|
|
|
|
Mar 4 2013, 20:29
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 22-02-13
Пользователь №: 75 759

|
Цитата(thermit @ Mar 4 2013, 23:51)  Не-а. С fp/fs 2300/3000 порядок 10. 8-ой 2100/3000. Собственно матлаб все по тем же формулам считает. я имела в виду, что когда Вы построили первый раз график, он же строился для H(s) c 8 порядком. а потом то Вы подставляли исходные данные, получился N=10, а график такой же. да, и все-таки масштабируем относительно fp или fs? в первый раз у Вас f0=fs=3000 я уж стала пробовать баттерворта, там порядок 13 получился. а то мне еще ФВЧ на основе прототипа рассчитывать, а там исходные данные другие, и если здесь при разложении получилось, что в знаменателе s^2, то для моего ФВЧ получилось две дроби с простыми полюсами и одна с комплексно-сопряженными. там уже по Вашему шаблону сделать не получится. по тем то, по тем, вот только я уже поняла, что и программирование не плохо было бы знать... а то вот как отличается ход решения
Сообщение отредактировал Наталия_К - Mar 4 2013, 20:29
|
|
|
|
|
Mar 4 2013, 20:41
|
Знающий
   
Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730

|
Фильтр чебышева однозначно задается любыми 3-мя из 4-х параметров: 1 Неравномерность в пп 2 Ослабление в пз 3 Минимальная частота на которой есть требуемое ослабление в пз 4 Порядок фильтра Параметр 3 можно задать как конец пп или как начало пз. Т е что считать 1? Wp или Ws? Ну и нормирование отсюда и следует. Ваш фильтр расчитан с Ws=1. Поэтому денормировка через fs. А можно и так: Код clear all; Ap=3; As=55; Fd=12000; fp=2300/Fd; fs=3000/Fd; %Вот тут wp=fp/fp; ws=fs/fp; [N,Wc]=cheb2ord(wp,ws,Ap,As,'s'); [bs, as]=cheby2(N, As, Wc, 's'); norm=2*pi*fp; bs=bs.*norm.^(0:length(bs)-1); as=as.*norm.^(0:length(as)-1); [b,a]=impinvar(bs,as,1);
plot(0:Fd/20000:Fd/2-Fd/20000,20*log10(abs(freqz(b,a,10000)))); grid on
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|