bilinear

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

Описание

[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 дБ пульсации в полосе пропускания. Преобразуйте его в форму пространства состояний.

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

Создайте аналоговый фильтр со скоростью дискретизации fs=2kHz, предварённые ребра полосы 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 Гц. Преобразуйте цифровой фильтр из формы пространства состояний в форму передаточной функции с помощью 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.

Проектируйте аналоговый 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. The axes 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 and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

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

свернуть все

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

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

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

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

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

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

Матрица состояний в 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-domain, заданные как вектор-столбец.

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

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

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

Матрица состояний в 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, в hertz указывает «совпадающую» частоту, то есть частоту, для которой частотные характеристики до и после отображения точно совпадают. В предваренном режиме билинейное преобразование преобразует s -plane в z -plane с

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

С опцией предварительной обработки, bilinear преобразует ось j в единицу (от И = - ∞ до +∞) неоднократно вокруг единичной окружности (e), от ω = - π до π) по

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

В предваренном режиме bilinear совпадает с частотой 2 πf p (в радианах в секунду) в s -plane на нормированную частоту 2 πf p/ f s (в радианах в секунду) в z -plane.

The 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, Bd, Cd, и Dd с точки зрения A, B, C, и 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–1). fp - необязательная частота соответствия, в hertz, для предварительной обработки.

Ссылки

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 1999.

[2] Parks, Thomas W., and C. Sidney Burrus. Создание цифровых фильтров. Нью-Йорк: John Wiley & Sons, 1987.

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

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

.

См. также

| | | |

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