impinvar

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

Синтаксис

[bz,az] = impinvar(b,a,fs)
[bz,az] = impinvar(b,a,fs,tol)

Описание

[bz,az] = impinvar(b,a,fs) создает цифровой фильтр с числителем и коэффициентами знаменателя bz и az, соответственно, чей импульсный ответ равен импульсному ответу аналогового фильтра с коэффициентами b и a, масштабируемый 1/fs. Если вы не учитываете аргумент fs или задаете fs как пустой вектор [], это берет значение по умолчанию 1 Гц.

[bz,az] = impinvar(b,a,fs,tol) использует допуск, заданный tol, чтобы определить, повторяются ли полюса. Больший допуск увеличивает вероятность, что impinvar интерпретирует тесно расположенные полюса как кратность (повторенные единицы). Значение по умолчанию 0.001, или 0,1% значения полюса. Точность значений полюса все еще ограничивается точностью, доступной функцией roots.

Примеры

свернуть все

Преобразуйте аналог шестого порядка Баттерворт lowpass фильтр к цифровому фильтру с помощью импульсной инвариантности. Задайте частоту дискретизации 10 Гц и частоту среза 2 Гц. Отобразите частотную характеристику фильтра.

f = 2;
fs = 10;

[b,a] = butter(6,2*pi*f,'s');
[bz,az] = impinvar(b,a,fs);

freqz(bz,az,1024,fs)

Преобразуйте аналог четвертого порядка эллиптический фильтр в цифровой фильтр с помощью импульсной инвариантности. Задайте частоту дискретизации fs=10 Гц, частота ребра полосы пропускания 2,5 Гц, пульсация полосы пропускания 1 дБ и затухание полосы задерживания 60 дБ. Отобразите импульсный ответ цифрового фильтра.

fs = 10;

[b,a] = ellip(3,1,60,2*pi*2.5,'s');
[bz,az] = impinvar(b,a,fs);

impz(bz,az,[],fs)

Выведите импульсный ответ аналогового фильтра путем нахождения остатков, rk, и полюса, pk, из передаточной функции и инвертирования Преобразования Лапласа явным образом с помощью

H(s)=krks-pkh(t)=krkepkt.

Наложите импульсный ответ аналогового фильтра. Импульсная инвариантность вводит усиление 1/fs к цифровому фильтру. Умножьте аналоговый импульсный ответ на это усиление, чтобы включить значимое сравнение.

[r,p] = residue(b,a);
t = linspace(0,4,1000);
h = real(r.'*exp(p.*t)/fs);

hold on
plot(t,h)
hold off

Алгоритмы

impinvar выполняет инвариантный импульсом метод аналого-цифрового преобразования передаточной функции, обсужденного в ссылке [1]:

  1. Это находит расширение элементарной дроби системы представленным b и a.

  2. Это заменяет полюса p полюсами exp(p/fs).

  3. Это находит коэффициенты передаточной функции системы от остатков от шага 1 и полюсов от шага 2.

Ссылки

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

[2] Antoniou, Андреас. Цифровые фильтры. Нью-Йорк: McGraw-Hill, Inc., 1993.

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

| | | |

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