шаги

Переходной процесс цифрового фильтра

Синтаксис

[h,t] = stepz(b,a)
[h,t] = stepz(sos)
[h,t] = stepz(d)
[h,t] = stepz(...,n)
[h,t] = stepz(...,n,fs)
stepz(...)

Описание

[h,t] = stepz(b,a) возвращает переходной процесс фильтра с коэффициентами числителя, b, и коэффициентами знаменателя, a. stepz выбирает количество выборок и возвращает ответ в вектор-столбце h и шаги расчета в вектор-столбце t (где   t = [0:n-1]' и n = length(t) вычисляются автоматически).

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

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

[h,t] = stepz(...,n) вычисляет первые n выборки переходного процесса, когда n является целым числом (t = [0:n-1]'). Если n является вектором целых чисел, переходной процесс вычисляется только в тех целочисленных значениях с 0 обозначениями источника времени.

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

stepz(...) без выходных аргументов строит переходной процесс фильтра. Если вы вводите коэффициенты фильтра или матрицу разделов второго порядка, окно текущей фигуры используется. Если вы вводите digitalFilter, переходной процесс отображен в fvtool.

Примечание

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

Примеры

свернуть все

Создайте третий порядок Фильтр Баттерворта с нормированной частотой на уровне половинной мощности 0.4π рад/выборка. Отобразите его переходной процесс.

[b,a] = butter(3,0.4);
stepz(b,a)
grid

Создайте идентичный фильтр с помощью designfilt и отобразите его переходной процесс с помощью fvtool.

d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.4);
stepz(d)

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

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

Создайте тот же фильтр с помощью designfilt и отобразите его переходной процесс с помощью fvtool.

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

Алгоритмы

stepz фильтрует длину использование последовательности шага n

filter(b,a,ones(1,n))

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

Чтобы вычислить n в случае автодлины, stepz или использует   n = length(b) для КИХ-случая или сначала находит полюса с помощью   p = roots(a), если length(a) больше, чем 1.

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

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

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

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

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

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

| | | | | |

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