besself

Создание аналогового фильтра Бесселя

Описание

пример

[b,a] = besself(n,Wo) возвращает коэффициенты передаточной функции nth-порядок аналог lowpass фильтр Бесселя, где Wo угловая частота, до которой групповая задержка фильтра является приблизительно постоянной. Большие значения n произведите групповую задержку, которая лучше аппроксимирует константу до Wo. besself функция не поддерживает проект цифровых фильтров Бесселя.

пример

[b,a] = besself(n,Wo,ftype) проектирует lowpass, highpass, полосу пропускания или bandstop аналоговый фильтр Бесселя, в зависимости от значения ftype и число элементов Wo. Получившаяся полоса пропускания и проекты bandstop имеют порядок 2n.

[z,p,k] = besself(___) проектирует lowpass, highpass, полосу пропускания или bandstop аналоговый фильтр Бесселя и возвращает его нули, полюса и усиление. Этот синтаксис может включать любой из входных параметров в предыдущих синтаксисах.

[A,B,C,D] = besself(___) проектирует lowpass, highpass, полосу пропускания или bandstop аналоговый фильтр Бесселя и возвращает матрицы, которые задают его представление пространства состояний.

Примеры

свернуть все

Спроектируйте аналог пятого порядка lowpass фильтр Бесселя приблизительно с постоянной групповой задержкой до 104 рад/секунда. Постройте величину и фазовые отклики фильтра с помощью freqs.

[b,a] = besself(5,10000);
freqs(b,a)

Вычислите ответ групповой задержки фильтра как производная развернутого фазового отклика. Постройте групповую задержку, чтобы проверить, что это приблизительно постоянно до частоты среза.

[h,w] = freqs(b,a,1000);
grpdel = diff(unwrap(angle(h)))./diff(w);

clf
semilogx(w(2:end),grpdel)
xlabel('Frequency (rad/s)')
ylabel('Group delay (s)')

Спроектируйте полосу пропускания 12-го порядка фильтр Бесселя с полосой пропускания в пределах от от 300 рад/с до 500 рад/с. Вычислите частотную характеристику фильтра.

[b,a] = besself(6,[300 500],'bandpass');

[h,w] = freqs(b,a);

Постройте величину и фазовые отклики фильтра. Разверните фазовый отклик, чтобы избежать 180 и 360 скачки и преобразуют его от радианов до степеней. Как ожидалось фазовый отклик близко к линейному по полосе пропускания.

subplot(2,1,1)
plot(w,20*log10(abs(h)))
ylabel('Magnitude')
subplot(2,1,2)
plot(w,180*unwrap(angle(h))/pi)
ylabel('Phase (degrees)')
xlabel('Frequency (rad/s)')

Входные параметры

свернуть все

Порядок фильтра, заданный как целочисленный скаляр.

Типы данных: double

Частота среза, заданная как скаляр или двухэлементный вектор. Частота среза является верхней или нижней границей частотного диапазона, в котором групповая задержка фильтра является приблизительно постоянной. Частоты среза должны быть выражены в радианах в секунду и могут взять любое положительное значение.

  • Если Wo скаляр, затем besself проектирует lowpass или фильтр highpass с частотой среза Wo.

  • Если Wo двухэлементный векторный  [w1 w2], где w1 < w2, затем besself проектирует полосовой или заграждающий фильтр с более низкой частотой среза w1 и более высокая частота среза w2.

Типы данных: double

Отфильтруйте тип, заданный как:

  • 'low' — фильтр lowpass с частотой среза Wo. 'low' значение по умолчанию для скалярного Wo.

  • 'high' — highpass фильтрует с частотой среза Wo.

  • 'bandpass' — полосовой фильтр порядка 2n если Wo двухэлементный вектор. 'bandpass' значение по умолчанию когда Wo имеет два элемента.

  • 'stop' — заграждающий фильтр порядка 2n если Wo двухэлементный вектор.

Выходные аргументы

свернуть все

Коэффициенты передаточной функции фильтра, возвращенного как векторы-строки из длины n + 1 для lowpass и фильтров highpass и 2n + 1 для полосовых и заграждающих фильтров. Передаточная функция выражается в терминах b и a как

H(s)=B(s)A(s)=b (1) sn+b (2) sn1++b (n+1)(1) sn+(2) sn1++(n+1).

Типы данных: double

Нули, полюса, и усиление фильтра, возвратились как два вектор-столбца длины n (2n для полосы пропускания и проектов bandstop) и скаляр. Передаточная функция выражается в терминах zP, и k как

H(s)=k(sz (1))(sz (2))(sz (n))(sp (1))(sp (2))(spn ).

Типы данных: double

Представление пространства состояний фильтра, возвращенного как матрицы. Если m = n для lowpass и проектов highpass и m = 2n для полосовых и заграждающих фильтров, затем A m × m, B m  × 1, C 1 × m и D 1  × 1.

Матрицы пространства состояний связывают вектор состояния x, вход u и выход y через

x˙=Ax+Buy=Cx+Du.

Типы данных: double

Алгоритмы

besself аналоговые фильтры Бесселя проектов, которые характеризуются почти постоянной групповой задержкой через целую полосу пропускания, таким образом сохраняя форму волны отфильтрованных сигналов в полосе пропускания.

Lowpass фильтры Бесселя имеет монотонно уменьшающийся ответ величины, также, как и Фильтры Баттерворта lowpass. По сравнению с Баттервортом, Чебышевым, и эллиптическими фильтрами, фильтр Бесселя имеет самый медленный спад и требует самого высокого порядка соответствовать спецификации затухания.

Для старших фильтров форма пространства состояний наиболее численно точна, сопровождается формой нулей, полюсов и усиления. Содействующая форма передаточной функции наименее точна; числовые проблемы могут возникнуть для порядка фильтра всего 15.

besself использование алгоритм с четырьмя шагами:

  1. Найдите аналоговые прототипные полюса lowpass, нули и усиление с помощью besselap функция.

  2. Преобразуйте полюса, нули и усиление в форму пространства состояний.

  3. При необходимости используйте преобразование пространства состояний, чтобы преобразовать фильтр lowpass в полосу пропускания, highpass, или заграждающий фильтр с желаемыми ограничениями частоты.

  4. Преобразуйте в передаточную функцию фильтр пространства состояний назад или форму нулей, полюсов и усиления, как требуется.

Ссылки

[1] Парки, Томас В. и К. Сидни Беррус. Создание цифровых фильтров. Нью-Йорк: John Wiley & Sons, 1987.

Смотрите также

| | | |

Представлено до R2006a