impzlength

Импульсная продолжительность ответа

Синтаксис

len = impzlength(b,a)
len = impzlength(sos)
len = impzlength(d)
len = impzlength(hd)
len = impzlength(___,tol)

Описание

пример

len = impzlength(b,a) возвращает импульсную продолжительность ответа для причинного фильтра дискретного времени с рациональной системной функцией, заданной числителем, b, и знаменателем, a, полиномами в z –1. Для стабильных БИХ-фильтров len является эффективной импульсной длиной последовательности ответа. Условия в БИХ-импульсном ответе фильтра после len-th термин являются по существу нулем.

пример

len = impzlength(sos) возвращает эффективную импульсную продолжительность ответа для БИХ-фильтра, заданного матрицей разделов второго порядка, sos. sos является K-by-6 матрица, где количество разделов, K, должно быть больше, чем или равным 2. Если количество разделов - меньше чем 2, impzlength полагает, что вход вектор числителя, b. Каждая строка sos соответствует коэффициентам второго порядка (biquad) фильтр. i th строка матрицы sos соответствует [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)].

пример

len = impzlength(d) возвращает импульсную продолжительность ответа для цифрового фильтра, d. Используйте designfilt, чтобы сгенерировать d на основе спецификаций частотной характеристики.

len = impzlength(hd) возвращает импульсную продолжительность ответа для объекта фильтра dfilt, hd. Можно также ввести массив объектов фильтра. Если hd является массивом объектов фильтра, каждый столбец len является импульсной продолжительностью ответа соответствующего объекта фильтра.

len = impzlength(___,tol) задает допуск к оценке эффективной продолжительности БИХ-импульсного ответа фильтра. По умолчанию tol является 5e-5. Увеличение значения tol оценивает более короткую эффективную длину для БИХ-импульсного ответа фильтра. Уменьшение значения tol производит более долгую эффективную длину для БИХ-импульсного ответа фильтра.

Примеры

свернуть все

Создайте lowpass allpole БИХ-фильтр с полюсом в 0,9. Вычислите эффективную импульсную продолжительность ответа. Получите импульсный ответ. Постройте результат.

b = 1;
a = [1 -0.9];
len = impzlength(b,a)
len = 93
[h,t] = impz(b,a);
stem(t,h)

h(len)
ans = 6.1704e-05

Разработайте 4-й порядок lowpass эллиптический фильтр с частотой среза 0.4π рад/выборка. Задайте 1 дБ пульсации полосы пропускания и 60 дБ затухания полосы задерживания. Разработайте фильтр в нулевом усилении полюса, формируют и получают матрицу раздела второго порядка использование zp2sos. Определите эффективную импульсную длину последовательности ответа из матрицы раздела второго порядка.

[z,p,k] = ellip(4,1,60,.4);
[sos,g] = zp2sos(z,p,k);
len = impzlength(sos)
len = 80

Используйте designfilt, чтобы разработать 4-й порядок lowpass эллиптический фильтр с нормированной частотой полосы пропускания 0.4π рад/выборка. Задайте 1 дБ пульсации полосы пропускания и 60 дБ затухания полосы задерживания. Определите эффективную импульсную длину последовательности ответа и визуализируйте ее.

d = designfilt('lowpassiir','FilterOrder',4,'PassbandFrequency',0.4, ...
               'PassbandRipple',1,'StopbandAttenuation',60, ...
               'DesignMethod','ellip');
len = impzlength(d)
len = 80
impz(d)

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

свернуть все

Коэффициенты числителя, заданные как скаляр (allpole фильтр) или вектор.

Пример: b = fir1(20,0.25)

Типы данных: single | double
Поддержка комплексного числа: Да

Коэффициенты знаменателя, заданные как скаляр (КИХ-фильтр) или вектор.

Типы данных: single | double
Поддержка комплексного числа: Да

Матрица разделов второго порядка, заданных как K-by-6 матрица. Системная функция K-th biquad фильтр имеет рациональное Z-преобразование

Hk(z)=Bk(1)+Bk(2)z1+Bk(3)z2Ak(1)+Ak(2)z1+Ak(3)z2.

Коэффициенты в K th строка матрицы, sos, упорядочены можно следующим образом.

[Bk(1)Bk(2)Bk(3)Ak(1)Ak(2)Ak(3)]

Частотная характеристика фильтра является системной функцией, оцененной на модульном круге с

z=ej2πf.

Цифровой фильтр, заданный как объект digitalFilter. Используйте designfilt, чтобы сгенерировать цифровой фильтр на основе спецификаций частотной характеристики.

Пример: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) задает третий порядок Фильтр Баттерворта с нормированной частотой на 3 дБ 0.5π рад/выборка.

Объект фильтра, заданный как объект dfilt.

Допуск к БИХ фильтрует эффективную импульсную продолжительность ответа, заданную как положительное число. Допуск определяет термин в абсолютно суммируемой последовательности, после которой последующие условия считаются 0. Допуском по умолчанию является 5e-5. Увеличение допуска возвращает более короткую эффективную импульсную длину последовательности ответа. Уменьшение допуска возвращает более долгую эффективную импульсную длину последовательности ответа.

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

свернуть все

Продолжительность импульсного ответа, заданного как положительное целое число. Для стабильных БИХ-фильтров с абсолютно суммируемыми импульсными ответами impzlength возвращает эффективную длину для импульсного ответа, вне которого коэффициенты являются по существу нулем. Можно управлять этим пределом путем определения дополнительного входного параметра tol.

Алгоритмы

Чтобы вычислить импульсный ответ для КИХ-фильтра, impzlength использует длину b. Для БИХ-фильтров функция сначала находит полюса передаточной функции с помощью roots.

Если фильтр нестабилен, длина расширяет к точке, в которой термин от самого большого полюса достигает 106 раз своего исходного значения.

Если фильтр стабилен, длина расширяет к точке, в которой термин от само-амплитудного полюса является временами tol его исходная амплитуда.

Если фильтр является колебательным с полюсами на модульном круге только, то impzlength вычисляет пять периодов самого медленного колебания.

Если фильтр имеет и колебательные и ослабленные условия, длина расширяет к большим из этих значений:

  • Пять периодов самого медленного колебания.

  • Точка, в которой термин из-за самого большого полюса является временами tol его исходная амплитуда.

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

| | |

Введенный в R2013a