exponenta event banner

билинеарный

Метод билинейного преобразования для аналого-цифрового преобразования фильтров

Описание

[zd,pd,kd] = bilinear(z,p,k,fs) преобразует передаточную функцию s-области в полюсно-нулевую форму, заданную z, p, k и частота выборки fs в дискретный эквивалент.

[numd,dend] = bilinear(num,den,fs) преобразует передаточную функцию s-области, заданную числителем num и знаменатель den в дискретный эквивалент.

пример

[Ad,Bd,Cd,Dd] = bilinear(A,B,C,D,fs) преобразует систему состояния-пространства непрерывного времени в матрицы A, B, C, и D в дискретно-временную систему.

пример

[___] = bilinear(___,fp)использует параметр fp в качестве частоты «совпадения» для указания предварительного предупреждения.

Примеры

свернуть все

Разработать прототип полосового фильтра Чебышёва I типа 10-го порядка с 3 дБ пульсации в полосе пропускания. Преобразуйте его в форму state-space.

[z,p,k] = cheb1ap(10,3);
[A,B,C,D] = zp2ss(z,p,k);  

Создайте аналоговый фильтр с частотой дискретизации fs = 2 кГц, предварительно обработанными краями полосы u1 и u2 в рад/с, полосой пропускания Bw = u2-u1 и центральной частотой Wo = u1u2 для использования сlp2bp. Задайте граничные частоты полосы пропускания 100 Гц и 500 Гц.

Fs = 2e3;
u1 = 2*Fs*tan(100*(2*pi/Fs)/2);   
u2 = 2*Fs*tan(500*(2*pi/Fs)/2); 
Bw = u2 - u1;                     
Wo = sqrt(u1*u2);                 
[At,Bt,Ct,Dt] = lp2bp(A,B,C,D,Wo,Bw);
[b,a] = ss2tf(At,Bt,Ct,Dt);        

Вычислить частотную характеристику аналогового фильтра с помощью freqs. Постройте график амплитудной характеристики и предварительно предупрежденных границ полосы частот.

[h,w] = freqs(b,a);     
plot(w,mag2db(abs(h)))
hold on
ylim([-165 5])
[U1,U2] = meshgrid([u1 u2],ylim);
plot(U1,U2)
legend('Magnitude response','Lower Passband Edge','Upper Passband Edge')
hold off
xlabel('Angular Frequency (rad/s)')
ylabel('Magnitude (dB)')
grid

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Magnitude response, Lower Passband Edge, Upper Passband Edge.

Использовать bilinear создание цифрового полосового фильтра с частотой дискретизации fs и нижним краем полосы 100 Гц. Преобразование цифрового фильтра из формы state-space в форму передаточной функции с помощью ss2tf.

[Ad,Bd,Cd,Dd] = bilinear(At,Bt,Ct,Dt,Fs);

[bz,az] = ss2tf(Ad,Bd,Cd,Dd);

Использовать fvtool для построения графика амплитудной характеристики цифрового фильтра.

fvtool(bz,az,'Fs',Fs)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

Спроектируйте эллиптический аналоговый фильтр нижних частот 6-го порядка с 3 дБ пульсации в полосе пропускания и стоп-полосой 90 дБ вниз. Установить частоту отсечки fc = 20 Гц и частоту дискретизации fs = 200 Гц.

clear
Fc = 20;
Fs = 200;                             
[z,p,k] = ellip(6,3,90,2*pi*Fc,'s');
[num,den] = zp2tf(z,p,k);

Вычислите амплитудную характеристику аналогового эллиптического фильтра. Визуализация аналогового фильтра.

[h,w] = freqs(num,den);
plot(w/(2*pi),mag2db(abs(h)))
hold on
xlim([0 50])
[l1,l2] = meshgrid(Fc,[-120 0]);
plot(l1,l2)
grid
legend('Magnitude response','Passband Edge')
xlabel('Frequency (Hz)')
ylabel('Magnitude (dB)')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Magnitude response, Passband Edge.

Использовать bilinear для преобразования в дискретный фильтр БИХ. Установите частоту совпадения fp = 20 Гц.

[numd,dend] = bilinear(num,den,Fs,20);

Визуализация фильтра с помощью fvtool.

fvtool(numd,dend,'Fs',Fs)                     

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

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

свернуть все

Нули передаточной функции s-домена, заданной как вектор столбца.

Полюса передаточной функции s-домена, заданные как вектор столбца.

Коэффициент усиления передаточной функции s-области, определяемый как скаляр.

Частота выборки, заданная как положительный скаляр.

Числительные коэффициенты аналоговой передаточной функции, задаваемые как вектор строки.

Коэффициенты знаменателя аналоговой передаточной функции, задаваемые как вектор строки.

Матрица состояний в s-области, заданная как матрица. Если система имеет p входов и q выходов и описывается переменными состояния n, то A n-by-n.

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

Матрица «вход в состояние» в s-области, заданная как матрица. Если система имеет p входов и q выходов и описывается переменными состояния n, то B является n-by-p.

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

Матрица «состояние-выход» в s-области, заданная как матрица. Если система имеет p входов и q выходов и описывается переменными состояния n, то C является q-by-n.

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

Матрица прохождения в s-области, заданная как матрица. Если система имеет p входов и q выходов и описывается переменными состояния n, то D является q-by-p.

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

Частота совпадения, заданная как положительный скаляр.

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

свернуть все

Нули передаточной функции z-области, заданной как вектор столбца.

Полюса передаточной функции z-области, заданные как вектор столбца.

Коэффициент усиления передаточной функции z-области, определяемый как скаляр.

Числительные коэффициенты цифровой передаточной функции, задаваемые как вектор строки.

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

Матрица состояний в z-области, возвращаемая как матрица. Если система описывается переменными состояния n, то Ad n-by-n.

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

Матрица «вход-состояние» в z-области, возвращаемая как матрица. Если система описывается переменными состояния n, то Bd n-by-1.

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

Матрица «состояние-выход» в z-области, возвращаемая как матрица. Если система имеет q выходов и описывается переменными состояния n, то Cd является q-by-n.

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

Матрица прохождения в z-области, возвращаемая как матрица. Если система имеет q выходов, то Dd является q-by-1.

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

Диагностика

bilinear требует, чтобы порядок числителя был не больше порядка знаменателя. Если это не так, bilinear показы

Numerator cannot be higher order than denominator.

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

First two arguments must have the same orientation.

Алгоритмы

свернуть все

Билинейное преобразование - это математическое отображение переменных. В цифровой фильтрации это стандартный способ отображения s или аналоговой плоскости в z или цифровую плоскость. Он преобразует аналоговые фильтры, разработанные с использованием классических методов проектирования фильтров, в их дискретные эквиваленты.

Билинейное преобразование отображает s-плоскость в z-плоскость

H (z) = H (s) | s = 2fsz − 1z + 1.

Это преобразование отображает ось (от Λ = - ∞ до +∞) многократно вокруг единичной окружности (ejw, от  λ = -λ до λ) на

λ = 2tan 1 (Start2fs).

bilinear может принять необязательный параметр Fp , которая определяет предварительную операцию. fp, в герцах, указывает частоту «совпадения», то есть частоту, для которой частотные характеристики до и после отображения точно совпадают. В предварительном режиме билинейное преобразование отображает s-плоскость в z-плоскость с помощью

H (z) = H (s) | s = 2.dfptan (øfpfs) z − 1z + 1.

С опцией предварительной подготовки, bilinear отображает ось (от Λ = - ∞ до +∞) многократно вокруг единичной окружности (ejλ, от  λ = -λ до λ) по

λ = 2tan 1 (Starttan (¼ fpfs) 2lsfp).

В режиме предварительной обработки bilinear соответствует частоте 2āfp (в радианах в секунду) в s-плоскости нормированной частоте 2āfp/fs (в радианах в секунду) в z-плоскости.

bilinear функция работает с тремя различными представлениями линейной системы: нулевой коэффициент усиления полюса, передаточная функция и форма состояния-пространства.

bilinear использует один из двух алгоритмов в зависимости от формата вводимой линейной системы. Один алгоритм работает в формате с нулевым коэффициентом усиления, а другой - в формате state-space. Для представлений передаточных функций, bilinear преобразует в форму state-space, выполняет преобразование и преобразует результирующую систему state-space обратно в форму передаточной функции.

Алгоритм усиления нулевого полюса

Для системы с нулевым коэффициентом усиления, bilinear выполняет четыре шага:

  1. Если fp присутствует, он предвоен:

    fp = 2*pi*fp;
    fs = fp/tan(fp/fs/2)
    

    в противном случае fs = 2*fs.

  2. Удаление нулей при ±∞ с помощью

    z = z(finite(z));
    
  3. Он преобразует нули, полюса и коэффициент усиления с помощью

    pd = (1+p/fs)./(1-p/fs);    % Do bilinear transformation
    zd = (1+z/fs)./(1-z/fs);
    kd = real(k*prod(fs-z)./prod(fs-p));
    
  4. Он добавляет дополнительные нули в -1, так что результирующая система имеет эквивалентный числитель и порядок знаменателя.

Алгоритм состояния-пространства

Аналоговая система в форме пространства состояний задается

x˙=Ax+Buy=Cx+Du

. Эта система преобразуется в дискретную форму с помощью уравнений «состояние-пространство» следующим образом:

x [n + 1] = Adx [n] + Bdu  [ n ] , y [n] = Cdx [n] + Ddu [n].

Преобразование аналоговой системы в формате state-space bilinear выполняет два шага:

  1. Если fp присутствует, пусть

    λ = ¼ fptan (¼ fp/fs).

    Если fp отсутствует, пусть λ = fs.

  2. Вычислить Ad, Bd, Cd, и Dd в терминах A, B, C, и D использование

    Ad = (I A12λ) 1 (I + A12λ), Bd = (I A12λ) 1B, Cd = 1λC (I A12λ) − 1, Dd = 12λC (I − A12λ) − 1B + D.

Передаточная функция

Для системы в форме функции переноса, bilinear преобразует передаточную функцию s-области, заданную num и den в дискретный эквивалент. Векторы строк num и den укажите коэффициенты числителя и знаменателя соответственно в степенях убывания s. Пусть B (s) - многочлен числителя, а A (s) - многочлен знаменателя. Передаточная функция:

B (s) A (s) = B (1) sn+⋯+B (n) s + B (n + 1) A (1) sm+⋯+A (m) s + A (m + 1)

fs - частота выборки в герцах. bilinear возвращает дискретный эквивалент в векторах строк numd и dend в нисходящих степенях z (восходящих степенях z-1). fp - необязательная частота совпадения в герцах для предварительной подготовки.

Ссылки

[1] Оппенгейм, Алан В., Рональд В. Шефер и Джон Р. Бак. Дискретно-временная обработка сигналов. Река Верхнее Седло, Нью-Джерси: Прентис Холл, 1999.

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

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | | |

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