Курсовая работа (КР)

Посмотреть архив целиком

Синтез и анализ цифровых фильтров с использованием программного пакета MatLab



Содержание


1. Начало работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1

2. Ввод коэффициентов передаточной функции и построение графиков частотных характеристик аналогового фильтра-прототипа . . . . . . . . . . . . .1

3. Нули и полюсы аналогового фильтра-прототипа и их преобразование

в коэффициенты передаточной функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

4. Расчёт аналогового фильтра-прототипа по заданным требованиям к

его характеристике затухания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

5. Нахождение передаточной функции цифрового фильтра по

аналоговому прототипу методом билинейного z-преобразования и

методом инвариантной импульсной характеристики . . . . . . . . . . . . . . . . . . 6

6. Структуры цифровых фильтров и соответствующие им алгоритмы цифровой фильтрации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9

7. Просмотр характеристик синтезированного цифрового фильтра . . . . . 19

8. Синтез цифрового фильтра с использованием программы fdatool . . . . 20

9. Исследование влияния квантования сигналов и коэффициентов

фильтра на характеристики фильтра . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

10. Моделирование работы цифрового фильтра . . . . . . . . . . . . . . . . . . . . . . . . . 29



1. Начало работы


Произведите загрузку системы MatLab. Откроется командное окно (Command Window). Вы будете иметь возможность работы в интерактивном режиме, вводя операторы после значка >>. Кроме того, в командном окне можно ввести указанное в текущем каталоге имя той или иной программы, которой затем будет передано управление. Для очистки командного окна используется команда clc.



2. Ввод коэффициентов передаточной функции фильтра и построение графиков частотных характеристик аналогового фильтра-прототипа


Передаточная функция аналогового прототипа задаётся в виде:

, m n. (1)

- 2 -


Для построения графиков АЧХ и ФЧХ нужно ввести векторы b и a коэффициентов передаточной функции, а затем вызвать подпрограмму расчёта комплексной частотной характеристики и построения графиков. Пусть, например, m=1, n=2, b0=2, b1= -1, a0=1, a1=3, a2=2.5. В интерактивном режиме вводятся следующие операторы:


>> b=[2 –1];

>> a=[1 3 2.5];

>> freqs (b,a)


Элементы векторов разделяются пробелами и заключаются в квадратные скобки. После ввода вектора ставится точка с запятой, а затем следует нажать клавишу <Enter>. После оператора freqs(b,a) точка с запятой не ставится, ввод тоже следует завершить нажатием клавиши <Enter>. Команды запоминаются, и их можно воспроизводить, пользуясь клавишами управления курсором: и . Будут построены графики АЧХ и ФЧХ (АЧХ в логарифмическом масштабе, но без пересчёта в децибелы, ФЧХ в градусах). По умолчанию выбираются 200 частот, логарифмически равномерно распределённых в диапазоне от 0.1 до 10.

Если нужно построить АЧХ в линейном масштабе, в ином диапазоне частот, ФЧХ в радианах и с устранением скачков на 2k радиан, то следует ввести следующие операторы (пусть, для примера, границы частотного диапазона от f1=100 Гц до f2=1000 Гц, число расчётных точек N =451):


>> f=100:(1000-100)/450:1000;

>> b=[1 0 7.971e6];

>> a=[1 7.427e2 1.501e6 5.536e8];

>> k=freqs (b,a,f*2*pi);

>> subplot (2,1,1)

>> plot (f,abs(k)/max(abs(k))), grid

>> subplot (2,1,2)

>> plot (f,unwrap(angle(k))), grid


При вводе строки subplot (2,1,1) появится графическое окно

Figure No.1. Его нужно сместить, чтобы оно не загораживало командное окно, или временно свернуть. В последнем случае, по окончании ввода операторов нужно развернуть графическое окно, чтобы увидеть графики.

График АЧХ аналогового фильтра-прототипа можно использовать для нахождения частоты дискретизации Fs. Например, может быть задано, что АЧХ на частоте Fs/2 должна достигать определённого уровня. Для детального рассмотрения нужной части графика рекомендуется использовать инструменты изменения масштаба (уменьшение, увеличение), имеющиеся

на панели инструментов графического окна.

  • 3 -


3. Нули и полюсы аналогового фильтра-прототипа и их преобразование в коэффициенты передаточной функции


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

p1=-0.2+0.5i и p2=-0.2-0.5i, а также нули z1=0.1i и z2=-0.1i. Осуществляем ввод:


>> p=[-0.2+0.5i -0.2-0.5i]’;

>> z=[0.1i -0.1i]’;

>> k=5;


Здесь k - коэффициент, стоящий перед всей дробью передаточной функции (его можно выбрать произвольно, если нет иных соображений). Символ (апостроф), поставленный после закрывающей квадратной скобки, означает транспонирование. При этом вектор-строка преобразуется в вектор-столбец. (В MatLab принято полюсы и нули задавать вектор-столбцами, а коэффициенты передаточной функции вектор-строками.)

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


>> [b,a]= zp2tf (z,p,k);


Здесь b – строка коэффициентов числителя, a – строка коэффициентов знаменателя передаточной функции фильтра.

Диаграмму нулей и полюсов можно вывести, если задать следующие команды:


>> plot (p,’x’)

>> hold on

>> plot (z,’o’)

>> hold off

>> axis equal

>> axis ([-1 1 -1 1])







- 4 -


Последняя команда позволяет задать граничные значения для действительной (первые два числа) и мнимой (следующие два числа) осей. Возможно и обратное преобразование коэффициентов b и a в полюсы и нули:


>> [z,p,k]= tf2zp (b,a);

Если требуется вывести значения каких-либо переменных рабочей области MatLab на монитор, то нужно просто после значка >> ввести имя переменной, завершив ввод нажатием клавиши <Enter>. Например, если указать

>> z

то будет выведен вектор нулей. Вслед за оператором

>> p

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


4. Расчёт аналогового фильтра-прототипа по заданным требованиям к его характеристике затухания


Если заданы граничные частоты, допустимые затухания, тип фильтра(ФНЧ, ФВЧ, ППФ, ПЗФ), класс фильтра (Баттерворта, Чебышёва, инверсный Чебышёва, эллиптический, Бесселя), то рассчитать коэффициенты передаточной функции фильтра можно, используя одну из следующих функций MatLab:

    1. butter (n, w0, type, ‘s’) – расчёт фильтра Баттерворта;

    2. cheby1 (n, Rp, w0, type, ‘s’) – расчёт фильтра Чебышёва;

    3. cheby2 (n, Rs, w0, type, ‘s’) – расчёт инверсного фильтра Чебышёва;

    4. ellip (n, Rp, Rs, w0, type, ‘s’) – расчёт эллиптического фильтра;

    5. besself (n, w0, type) – расчёт фильтра Бесселя.

Здесь n – порядок ФНЧ-фильтра-прототипа; Rp – неравномерность характеристики затухания в полосе пропускания (в дБ); Rs – минимальное затухание в полосе задерживания (в дБ); w0 – скаляр или двухэлементный вектор частот среза (границ полосы пропускания ) (в рад/с) (для фильтра Баттерворта частота среза задаётся по уровню 3 дБ). Если для фильтра Баттерворта граничная частота полосы пропускания wp задана для




- 5 -


значения затухания Rp (Rp<3 дБ), то её нужно пересчитать в частоту среза



type – строковая константа, задающая тип фильтра. Строка ‘s’ говорит о том, что синтезируется аналоговый фильтр.

При синтезе ФНЧ: w0 – скаляр , параметр type отсутствует.

При синтезе ФВЧ: w0 – скаляр , type=’high’.

При синтезе ППФ: w0 – вектор [w01 w02], причём w01<w02, параметр type отсутствует.

При синтезе ПЗФ: w0 – вектор [w01 w02], причём w01<w02, параметр type=’stop’.

Если порядок ФНЧ-прототипа не задан, то его можно определить (имеется в виду минимальный порядок), применяя следующие функции MatLab:

[n,wn]=buttord (wp, ws, Rp, Rs, ‘s’)

[n,wn]=cheb1ord (wp, ws, Rp, Rs, ‘s’)

[n,wn]=cheb2ord (wp, ws, Rp, Rs, ‘s’)

[n,wn]=ellipord (wp, ws, Rp, Rs, ‘s’)

Здесь n – минимальный порядок фильтра; wn – частота среза фильтра (для фильтра Баттерворта она определяется по уровню 3 дБ); wp – граничная частота полосы пропускания (в рад/с); ws – граничная частота полосы задерживания (в рад/с).

Для ППФ и ПЗФ wp и ws –двухэлементные векторы: [wp1 wp2] и [ws1 ws2].

Должны выполняться неравенства:

для ФНЧ: wp<ws;

для ФВЧ: wp>ws;

для ППФ: ws1<wp1<wp2<ws2;

для ПЗФ: wp1<ws1<ws2<wp2.

Найденный порядок n далее используется в функциях расчёта коэффициентов передаточной функции фильтра, описанных выше.

Рассмотрим пример. Пусть требуется найти коэффициенты передаточной функции эллиптического полосно-пропускающего фильтра, для которого Rp=1 дБ, Rs=40 дБ, wp1=1000 рад/с, wp2=1100 рад/с, ws1=900 рад/с, ws2=1250 рад/с. Вводим операторы:


>> [n, wn]=ellipord([1e3 1.1e3], [0.9e3 1.25e3], 1, 40, ‘s’);

>> [b,a]=ellip(n, 1, 40, [1e3 1.1e3], ‘s’);



- 6 -

Если требуется определить полюсы и нули, то вместо последнего оператора вводят:


>> [z,p,k]= ellip (n, 1, 40, [1e3 1.1e3], ‘s’);


Альтернатива: использование функции преобразования:


>> [z,p,k]= tf2zp (b,a);



5. Нахождение передаточной функции цифрового фильтра по аналоговому прототипу методом билинейного

z-преобразования и методом инвариантной импульсной характеристики


5.1. Билинейное z-преобразование


Это преобразование задаётся путём замены переменных:


, (2)


где p – комплексная частота аналогового фильтра-прототипа, z – комплексная переменная, от которой зависит передаточная функция цифрового фильтра, Т – интервал дискретизации (Т=1/Fs, где Fs – частота дискретизации). Достаточно в передаточной функции аналогового прототипа сделать подстановку (2), и будет найдена передаточная функция цифрового фильтра К(z):


(3)


Если а0 1, то нужно разделить все коэффициенты числителя и знаменателя на а0, чтобы знаменатель записывался в виде:



- 7 -

Альтернативным способом нахождения передаточной функции K(z) методом билинейного z-преобразования является пересчёт полюсов и нулей аналогового прототипа в полюсы и нули цифрового фильтра по формуле:



Затем осуществляется преобразование нулей и полюсов в коэффициенты фильтра (см. разд.3; функции MatLab, описанные здесь для аналоговых фильтров, годятся и для цифровых фильтров). Если количество полюсов аналогового ФНЧ-прототипа превышает количество его нулей, то возникают также дополнительные нули, так что общее количество нулей и полюсов цифрового фильтра, синтезированного по методу билинейного z-преобразования, оказывается равным (об этом см. в специальной литературе).

Указанные преобразования применимы, если аналоговый фильтр-прототип и цифровой фильтр – это фильтры одинакового типа (оба ФНЧ или оба ФВЧ и т.д.). Значит, если задан ФНЧ-прототип, а его нужно преобразовать в цифровой фильтр другого типа (ФВЧ, ППФ, ПЗФ), то нужно прежде найти передаточную функцию аналогового фильтра этого типа, а затем применить билинейное z-преобразование. Соответствующее преобразование типов фильтра осуществляется в MatLab операторами:


>> [b1,a1]=lp2hp (b, a, w0);

- преобразование ФНЧ в ФВЧ; w0 – граничная частота ФВЧ (рад/с).


>> [b1,a1]=lp2bp (b, a, w0, Bw);

- преобразование ФНЧ в ППФ; w0 – средняя геометрическая частота

полосы пропускания (рад/с) (w0=w1*w2); Bw – полоса пропускания (рад/с)

(Bw=w1-w2).


>> [b1,a1]=lp2bs (b, a, w0, Bw);

- преобразование ФНЧ в ПЗФ; w0 – средняя геометрическая частота полосы


задерживания (рад/с) (w0=w1*w2 ); Bw – ширина полосы задерживания

(рад/с) (Bw=w1-w2).

Само билинейное преобразование в MatLab осуществляется следующими операторами:

>> [bz, az]= bilinear (b, a, Fs);


- 8 -


или

>> [zz, pz, kz]= bilinear (z, p, k, Fs);

Здесь b, a, z, p, k коэффициенты передаточной функции, нули, полюсы и масштабный коэффициент передаточной функции аналогового фильтра-прототипа. bz, az, zz, pz, kz соответствующие параметры цифрового фильтра. Векторы b и a должны задаваться как векторы-строки, z и p – как векторы-столбцы. Преобразование строки в столбец и наоборот осуществляется путём постановки символа ‘ (апостроф) после имени вектора. Например, операция

>> d=d’;

приводит к транспонированию вектора d.

Параметр Fs – это частота дискретизации [Гц].

Отобразить диаграмму полюсов и нулей можно командой

>> zplane (z, p)

или

>> zplane (b, a)

В первом случае z и pвектор-столбцы , во втором случае b и a – вектор-строки. Полюсы отображаются крестиками, нули – кружками. Отображается также окружность единичного радиуса. Указанную команду можно применять как для цифровых, так и для аналоговых фильтров.


5.2. Метод инвариантной импульсной характеристики


Этот метод предполагает, что импульсная характеристика цифрового фильтра совпадает с точностью до постоянного множителя с импульсной характеристикой аналогового прототипа в точках t=nT, где n=0, 1, 2,, Т=1/Fs – интервал дискретизации. Иначе говоря, gц(n)=gа(nT) , где - некоторый коэффициент. Передаточная функция цифрового фильтра записывается в виде:


, (4)

где rk =Res K(p) – вычет передаточной функции аналогового прототипа в

p=pk

полюсе pk. Общее количество полюсов pk равно N (предполагается, что все полюсы простые).

Вычеты rk и полюсы pk можно найти, используя следующий оператор MatLab:

>> [r, p, k]= residue(b, a)


- 9 -


Если не ставить в конце строки точку с запятой и нажать клавишу <Enter>, то на экран монитора будут выведены вектор вычетов r, вектор полюсов p и вектор коэффициентов целой части k. Полюсы и вычеты могут быть

действительными или образовывать комплексно-сопряжённые пары. Масштабирующий коэффициент подбирается таким, чтобы значение gц(0) было порядка единицы. При этом значения величин rk по модулю тоже порядка единицы. Если далее сумму дробей (4) привести к одной дроби, то можно получить передаточную функцию в стандартном виде (3). Полюсы цифрового фильтра в методе инвариантной импульсной характеристики связаны с полюсами аналогового прототипа стандартным z-преобразованием: zk=exp(pkT).

Синтез цифрового фильтра по методу инвариантной импульсной характеристики осуществляется в MatLab путём ввода оператора:


>> [bz, az]= impinvar (b, a, Fs);


где bz, az – коэффициенты числителя и знаменателя передаточной функции цифрового фильтра (см. (3)); b, a – коэффициенты числителя и знаменателя передаточной функции аналогового прототипа (см. (1)); Fs – частота дискретизации (в Гц).


6. Структуры цифровых фильтров и соответствующие им алгоритмы цифровой фильтрации


Одной и той же передаточной функции K(z) цифрового фильтра соответствуют различные формы реализации и разные алгоритмы преобразования отсчётов входного сигнала в отсчёты выходного. Выбор той или иной структуры цифрового фильтра имеет смысл при учёте эффектов конечной разрядности представления коэффициентов фильтра и отсчётов сигнала на входе, в промежуточных точках и на выходе. Дело в том, что дисперсия шума квантования на выходе устройства, чувствительность характеристик к точности представления коэффициентов, быстродействие, необходимый объём памяти и другие характеристики качества цифрового фильтра зависят от алгоритма работы и структуры. Естественно, что предпочтительнее та структура, которая обеспечивает наилучшие характеристики качества при заданных ограничениях. При реализации цифровых фильтров в виде специализированных вычислительных устройств имеет также значение, в какой последовательности выполняются операции, есть ли возможность производить несколько операций параллельно, что позволяет повысить быстродействие; каковы аппаратурные затраты при реализации того или иного алгоритма.


- 10 -

6.1. Прямая структура рекурсивного фильтра

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



соответствует структура вида


x[n] b0 y[n]


1/z 1/z

b1 - a1

x[n-1] y[n-1]


1/z 1/z

b2 -a2

x[n-2] y[n-2]




1/z bM -aN 1/z

x[n-M] y[n-N]



Алгоритм (разностное уравнение) записывается следующим образом:


y[n]= b0 x[n]+b1 x[n-1]+b2 x[n-2]++bM x[n-M]- a1 y[n-1]-a2 y[n-2]--aN y[n-N]


6.2. Каноническая структура рекурсивного фильтра


Каноническая структура получается из прямой путём разделения сумматора на две части (одна для прямых связей, другая – для обратных связей) с последующей перестановкой левой и правой частей схемы и дальнейшим слиянием параллельных цепочек элементов памяти в одну.




- 11 -



x[n] v[n] b0 y[n]





- a1 1/z b1

v[n-1]


1/z

- a2 v[n-2] b2



1/z

- aN v[n-N] bN




1/z

v[n-M] bM





На данной схеме показано, что М>N, однако это не обязательно; возможны случаи M=N или M<N. Наибольшее из чисел M и N является порядком фильтра. Алгоритм для канонической структуры записывается в виде двух рекуррентных соотношений:


v[n]= x[n] - a1 v[n - 1] – a2 v[n - 2] - -aN v[n - N]

y[n]= b0 v[n]+b1 v[n - 1]+b2 v[n - 2]++bM v[n - M]


Сначала производится вычисление отсчёта сигнала v[n] в промежуточной точке (на выходе первого сумматора), а затем уже с его использованием – отсчёта выходного сигнала y[n]. Каноническая форма интересна тем, что в ней, в отличие от прямой структуры, представлена одна последовательность элементов памяти, а не две. Это позволяет экономить память. Однако абсолютные значения отсчётов промежуточного сигнала v[n] могут превосходить значения отсчётов входного и выходного сигналов, так что может потребоваться увеличенная разрядность ячеек памяти по сравнению с разрядностью регистров для ввода и вывода отсчётов входного и выходного сигналов соответственно.




- 12 -

6.3. Транспонированная структура рекурсивного фильтра


Преобразование прямой структуры, связанное с изменением порядка операций задержки и суммирования, приводит к транспонированной структуре.


x[n]



b0 b1 b2 bN bM-1 bM

+ 1/z + 1/z + 1/z + 1/z + 1/z

v1[n] v2[n] vN[n] vM-1[n] vM[n-1]


-a1 -a2 -aN


y[n]




Алгоритм для транспонированной структуры:


y[n]= b0 x[n]+v1[n-1]

v1[n]= b1 x[n] – a1 y[n]+v2[n-1]

v2[n]= b2 x[n] – a2 y[n]+v3[n-1]

vN[n]= bN x[n] – aN y[n]+vN+1[n-1]

vM-1[n]= bM-1 x[n]+vM[n-1]

vM[n]= bM x[n]


Разумеется, возможны случаи М=N или M<N. Тогда алгоритм соответствующим образом изменяется. Транспонированная форма имеет то преимущество, что в ней операции умножения отсчётов входного и выходного сигналов, а также операции суммирования можно производить параллельно; при этом повышается быстродействие алгоритма, хотя увеличиваются аппаратурные затраты (нужно иметь несколько одновременно работающих перемножителей и сумматоров).




- 13 -


6.4. Каскадная (последовательная) структура


Передаточную функцию K(z) можно представить в виде произведения передаточных функций (обычно отдельные функции имеют порядок не выше второго):


K(z) = K1(z) K2(z) KL(z).


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


Каскадная структура изображается следующим образом:



Алгоритм:

v[n]= b10 x[n]+ b11 x[n-1] – a11 v[n-1]

y[n]= b20 v[n]+ b21 v[n-1]+ b22 v[n-2] – a21 y[n-1] – a22 y[n-2]


В данной схеме каскады выполнены в виде прямых структур. Возможно их реализовать и в виде канонических форм:






- 14 -



Алгоритм в данном случае содержит три уравнения:


v[n] = x[n] – a11 v[n-1]

w[n] = b10 v[n]+ b11v[n-1] – a21w[n-1] – a22 w[n-2]

y[n] = b20 w[n]+ b21 w[n-1]+ b22 w[n-2]


Можно реализовать каскады и в виде транспонированных структур:







- 15 -


Теперь алгоритм включает в себя пять уравнений:


w[n]= b10 x[n] +v1[n-1]

v1[n]= b11 x[n] – a11 w[n]

y[n]= b20 w[n]+u1[n-1]

u1[n]= b21 w[n] – a21 y[n]+ u2[n-1]

u2[n]= b22 w[n] – a22 y[n]


Анализ показывает, что каскадная форма рекурсивного фильтра обладает меньшей чувствительностью частотной характеристики цифрового фильтра к точности представления коэффициентов фильтра, чем прямая, каноническая и транспонированная формы. Это означает, что при одинаковой разрядности округлённых коэффициентов b и a частотная характеристика фильтра в каскадной форме будет в меньшей степени отличаться от расчётной, чем характеристики некаскадных форм.

Для получения коэффициентов передаточных функций для каскадного представления фильтра можно использовать оператор MatLab преобразования фильтра в соединение секций второго порядка (sossecond-order sections):


>> [sos,g] = tf2sos (b, a);


где b,a – векторы-строки коэффициентов передаточной функции цифрового фильтра, sos – шестистолбцовая матрица, каждая строка которой соответствует одной секции и имеет структуру


[ b0 b1 b2 1 a1 a2 ],


что соответствует передаточной функции секции вида


В частном случае какая-либо из секций может иметь первый порядок; тогда соответствующие элементы строки матрицы sos будут нулевыми:

[ b0 b1 0 1 a1 0]. Передаточная функция, соответствующая такой строке:


- 16 -


g – масштабный коэффициент, который реализуется в схеме в виде отдельного умножителя либо учитывается путём умножения на него коэффициентов b одного из каскадов.

При формировании передаточных функции секций группируются пары комплексно-сопряжённых полюсов с комплексно-сопряжёнными нулями, расположенными наиболее близко к данным полюсам. Действительные полюсы группируются в пары, в которых значения полюсов наиболее близки по модулю. Строки в матрице sos располагаются в порядке приближения полюсов, реализуемых соответствующими секциями, к единичной окружности.

Для вывода рассчитанной матрицы sos на монитор достаточно не ставить точку с запятой в конце оператора или набрать имя матрицы после значка >>.

Обратное преобразование матрицы sos в коэффициенты b и a фильтра осуществляется оператором:


>> [b, a]= sos2tf (sos, g);


6.5. Параллельная структура


Представим передаточную функцию K(z) в виде суммы дробей:


, (5)

где r1 , r2 , …rN - вычеты, p1, p2 , … pN – полюсы, k0, k1, kMN – константы.

Последние появляются в разложении, если MN, то есть прямых связей в структуре фильтра не меньше, чем обратных. Подобное разложение осуществляется в MatLab с использованием оператора residuez. После ввода или расчёта коэффициентов системной функции, представленных векторами b и a, нужно задать:


>> [r, p, k]= residuez (b, a)


Если не ставить точку с запятой в конце строки и нажать клавишу <Enter>, то будут выведены значения вектора вычетов r, вектора полюсов p и вектора коэффициентов k. При действительных b и a значения вычетов и полюсов могут образовывать комплексно-сопряжённые пары или быть действительными. Дроби с комплексно-сопряжёнными значениями вычетов и полюсов нужно объединить в одну дробь второго порядка. Ей будет соответствовать прямая, каноническая или транспонированная структура


- 17 -


второго порядка. Например, применение оператора residuez привело к следующему результату:

>> [r, p, k]= residuez (b, a)

r=

-0.5000 - 0.1000i

-0.5000 + 0.1000i

2.1000

p=

0.4000 - 0.7000i

0.4000 + 0.7000i

0.6000

k=

1.5000


Для объединения дробей, соответствующих первым двум вычетам и первым двум полюсам в одну дробь второго порядка нужно задать:


>> [b1, a1]= residuez (r(1:2), p(1:2), [ ] )


Здесь функция residuez в обратном направлении: объединяет две суммируемые дроби в одну и вычисляет коэффициенты полиномов числителя и знаменателя этой дроби. [ ] – символ пустой матрицы (не задаём коэффициент k). Будет выведено:


b1=

-1.0000 0.2600


a1=

1.0000 -0.8000 0.6500


что соответствует дроби



Покажем теперь, как изображается параллельная структура и как записать для неё алгоритм. Пусть, например,


- 18 -


Такому разложению соответствует схема




Алгоритм:


v[n]= b10 x[n] – a11 v[n-1]

w[n]= b20 x[n]+b21 x[n-1] – a21 w[n-1] – a22 w[n-2]

y[n]= k0 x[n]+v[n]+w[n]


Разумеется, отдельные части схемы можно реализовывать в виде канонических или транспонированных структур (см. подраздел 6.4 ). Так же как и каскадная форма, параллельная обеспечивает меньшую чувствительность частотных и временных характеристик фильтра к точности представления коэффициентов по сравнению с прямой, канонической и транспонированной структурами. Это позволяет при реализации цифрового фильтра в виде специализированного вычислительного устройства обеспечивать заданные допуски на отклонение характеристик от расчётных при меньшем количестве двоичных разрядов, используемых для представления коэффициентов фильтра.




- 19 -


6.6. Нерекурсивный фильтр


Структура нерекурсивного не содержит обратных связей. Значит, все коэффициенты ak равны нулю, кроме a0=1. Передаточная функция такого фильтра

K(z)=b0 + b1z –1 + b2z –2 +…+bMzM


Схема:



Алгоритм цифровой фильтрации:


y[n]= b0x[n]+b1x[n-1]+b2x[n-2]+…+bMx[n-M].


7. Просмотр характеристик синтезированного цифрового

фильтра.


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


>> fvtool (b, a)


После задания функции fvtool (filter visualization tool) нужно нажать клавишу <Enter>. Аргументы функции – коэффициенты числителя и знаменателя передаточной функции, расположенные в порядке возрастания отрицательных степеней z (см. выражение (3)). Для просмотра характеристик нескольких фильтров одновременно нужно указать несколько пар векторов в списке входных параметров функции fvtool:


>> fvtool (b1, a1, b2, a2, b3, a3)

- 20 -

После вызова функции fvtool откроется графическое окно. На панели инструментов в верхней части этого окна имеются значки характеристик фильтра. Подводя курсор к одному из значков и нажимая левую кнопку мыши, можно вывести на экран график желаемой характеристики. Можно просмотреть


Случайные файлы

Файл
161114.rtf
10006.rtf
157181.rtf
142010.rtf
94044.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.