bilinear

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

Описание

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

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

пример

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

пример

[___] = bilinear(___,fp)параметр использования fp как "совпадают" с частотой, чтобы задать предварительное деформирование.

Примеры

свернуть все

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

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

Создайте аналоговый фильтр с частотой дискретизации fs=2kHz, предварительно деформированные ребра полосы u1и u2 в rad/s, полосе пропускания 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 object. The axes object contains 3 objects of type line. These objects represent Magnitude response, Lower Passband Edge, Upper Passband Edge.

Используйте bilinear создать цифровой полосовой фильтр с частотой дискретизации fs и ребро нижней полосы 100 Гц. Преобразуйте цифровой фильтр от формы пространства состояний до формы передаточной функции с помощью 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 object and other objects of type uitoolbar, uimenu. The axes object with title Magnitude Response (dB) contains an object of type line.

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

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 object. The axes object contains 2 objects of type line. These objects represent Magnitude response, Passband Edge.

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

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

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

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

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes object and other objects of type uitoolbar, uimenu. The axes object 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=2fsz1z+1.

Это преобразование сопоставляет j Ω ось (от Ω = – ∞ к + ∞) неоднократно вокруг модульного круга (ejw, от ω = –π к π)

ω=2tan1(Ω2fs).

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

H(z)=H(s)|s=2πfptan(πfpfs)z1z+1.

С предварительно деформирующейся опцией, bilinear сопоставляет j Ω ось (от Ω = – ∞ к + ∞) неоднократно вокруг модульного круга (e, от ω = –π к π)

ω=2tan1(Ωtan(πfpfs)2πfp).

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

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

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

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

Для системы в форме нулей, полюсов и усиления, 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].

Преобразовывать аналоговую систему в форме пространства состояний, bilinear выполняет два шага:

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

    λ=πfptan(πfp/fs).

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

  2. Вычислите Ad, BdCD, и Dd в терминах ABC, и D использование

    Ad=(IA12λ)1(I+A12λ),Bd=1λ(IA12λ)1B,Cd=1λC(IA12λ)1,Dd=12λC(IA12λ)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–1fp дополнительная частота соответствия, в герц, для предварительного деформирования.

Ссылки

[1] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999.

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

| | | |

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