impz

Импульсный ответ цифрового фильтра

Синтаксис

[h,t] = impz(b,a)
[h,t] = impz(sos)
[h,t] = impz(d)
[h,t] = impz(___,n)
[h,t] = impz(___,n,fs)
impz(___)

Описание

пример

[h,t] = impz(b,a) возвращает импульсный ответ цифрового фильтра с коэффициентами числителя b и коэффициенты знаменателя a. Функция выбирает количество выборок и возвращает коэффициенты ответа в h и шаги расчета в t.

[h,t] = impz(sos) возвращает импульсный ответ фильтра, заданного матрицей разделов второго порядка sos.

пример

[h,t] = impz(d) возвращает импульсный ответ цифрового фильтра d. Используйте designfilt, чтобы сгенерировать d на основе спецификаций частотной характеристики.

пример

[h,t] = impz(___,n) задает что выборки импульсного ответа вычислить. Можно задать фильтр с помощью любого из предыдущих синтаксисов.

пример

[h,t] = impz(___,n,fs) возвращается векторный t с последовательными выборками расположил 1/fs модули с интервалами независимо.

пример

impz(___) без выходных аргументов строит импульсный ответ фильтра.

Примеры

свернуть все

Разработайте четвертый порядок lowpass эллиптический фильтр с нормированной частотой полосы пропускания 0,4 рада/выборки. Задайте пульсацию полосы пропускания 0,5 дБ и затухание полосы задерживания 20 дБ. Постройте первые 50 выборок импульсного ответа.

[b,a] = ellip(4,0.5,20,0.4);
impz(b,a,50)

Разработайте тот же фильтр с помощью designfilt. Постройте первые 50 выборок его импульсного ответа.

d = designfilt('lowpassiir','DesignMethod','ellip','FilterOrder',4, ...
               'PassbandFrequency',0.4, ...
               'PassbandRipple',0.5,'StopbandAttenuation',20);
impz(d,50)

Разработайте КИХ highpass фильтр порядка 18 с помощью окна Kaiser с β=4. Задайте частоту дискретизации 100 Гц и частоту среза 30 Гц. Отобразите импульсный ответ фильтра.

b = fir1(18,30/(100/2),'high',kaiser(19,4));
impz(b,1,[],100)

Разработайте тот же фильтр с помощью designfilt и постройте его импульсный ответ.

d = designfilt('highpassfir','FilterOrder',18,'SampleRate',100, ...
               'CutoffFrequency',30,'Window',{'kaiser',4});
impz(d,[],100)

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

свернуть все

Коэффициенты передаточной функции, заданные как векторы. Выразите передаточную функцию с точки зрения b и a как

H(ejω)=B(ejω)A(ejω)=b (1)+b (2) ejω+b (3) ej2ω++b (M) ej(M1)ω(1)+(2) ejω+(3) ej2ω++(N) ej(N1)ω.

Пример: b = [1 3 3 1]/6 и a = [3 0 1 0]/3 задают третий порядок Фильтр Баттерворта с нормированной частотой на 3 дБ 0.5π рад/выборка.

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

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

Пример: s = [2 4 2 6 0 2;3 3 0 6 0 0] задает третий порядок Фильтр Баттерворта с нормированной частотой на 3 дБ 0.5π рад/выборка.

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

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

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

Демонстрационные числа, заданные как положительное целое число, вектор неотрицательных целых чисел или пустой вектор.

  • Если n является положительным целым числом, impz вычисляет первые выборки n импульсного ответа и возвращает t как (0:n-1)'.

  • Если n является вектором неотрицательных целых чисел, impz вычисляет импульсный ответ в местоположениях, заданных в векторе.

  • Если n является пустым вектором, impz вычисляет количество выборок автоматически. См. Алгоритмы для получения дополнительной информации.

Пример: impz([2 4 2 6 0 2;3 3 0 6 0 0],5) вычисляет первые пять выборок импульсного ответа Фильтра Баттерворта.

Пример: impz([2 4 2 6 0 2;3 3 0 6 0 0],[0 3 2 1 4 5]) вычисляет первые шесть выборок импульсного ответа Фильтра Баттерворта.

Пример: impz([2 4 2 6 0 2;3 3 0 6 0 0],[],5e3) вычисляет импульсный ответ Фильтра Баттерворта, разработанного, чтобы отфильтровать сигналы, выбранные на уровне 5 кГц.

Частота дискретизации, заданная как положительная скалярная величина. Когда модуль времени является секундами, fs выражается в герц.

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

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

свернуть все

Импульсные коэффициенты ответа, возвращенные как вектор-столбец.

Шаги расчета, возвращенные как вектор-столбец.

Алгоритмы

impz фильтрует импульсное использование последовательности длины-n

filter(b,a,[1 zeros(1,n-1)])

и строит результат с помощью stem.

Примечание

Если вход к impz является одинарной точностью, функция вычисляет импульсный ответ с помощью арифметики с одинарной точностью и возвращает выходной параметр с одинарной точностью.

Когда impz вычисляет n автоматически, алгоритм зависит от свойств фильтра:

  • КИХ-фильтры — n является длиной b.

  • БИХ-фильтры — impz сначала находит полюса передаточной функции с помощью roots.

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

    • Если фильтр стабилен, n выбран в качестве точки, в которой термин от само-амплитудного полюса является 5 × 10–5 раз его исходная амплитуда.

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

    • Если фильтр имеет и колебательные и ослабленные условия, n является большими из пяти периодов самого медленного колебания или точкой, в которой термин из-за самого большого полюса является 5 × 10–5 раз его исходная амплитуда.

impz также допускает задержки полинома числителя. Количество задержек включено в вычисление количества выборок.

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

| | | |

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