besself

Аналог функции Бесселя фильтрует проект

Синтаксис

[b,a] = besself(n,Wo)
[b,a] = besself(n,Wo,ftype)
[z,p,k] = besself(___)
[A,B,C,D] = besself(___)

Описание

пример

[b,a] = besself(n,Wo) возвращает коэффициенты передаточной функции th-порядка n 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 аналоговый фильтр Бесселя и возвращает матрицы, которые задают его представление пространства состояний.

Примеры

свернуть все

Разработайте аналог 5-го порядка lowpass фильтр Бесселя приблизительно с постоянной групповой задержкой до 104 rad/s. Постройте значение и фазовые отклики фильтра с помощью 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 имеет два элемента.

  • остановка заграждающий фильтр порядка 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) и скаляр. Передаточная функция выражается с точки зрения z, p и 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