Синтез и анализ цифровых фильтров с использованием программного, страница 6
Описание файла
PDF-файл из архива "Синтез и анализ цифровых фильтров с использованием программного", который расположен в категории "". Всё это находится в предмете "радиотехнические цепи и сигналы (ртцис)" из 5 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "ртцис (отц)" в общих файлах.
Просмотр PDF-файла онлайн
Текст 6 страницы из PDF
/, поэлементное возведение в степень . ^. Числоπ задаётся в MatLab как pi.е) Пачки импульсов.Для генерации конечной последовательности (пачки) импульсоводинаковой формы с произвольно задаваемыми задержками и амплитудамииспользуется функция pulstran. Она вызывается следующим образом:s= pulstran (t, d, ‘func’, p1, p2 …)Здесь t - вектор значений моментов времени, d - вектор задержек иамплитуд импульсов, ‘func’- имя функции, задающей одиночный импульс,например, ‘rectpuls’ или ‘tripuls’; p1, p2 … - параметры одиночного импульса,передаваемые функции func.Например,нужнозадатьследующуюпоследовательностьпрямоугольных импульсов:s(t)320.500.10.20.30.60.4-1Вводится набор операторов:>> Fs= 1e3; t= 0:1/Fs:1; t= t’;>> tau= 0.1;>> d(: ,1)= [0.05 0.25 0.55]’ ;>> d(: ,2)= [2 3 - 1]’;>> s= pulstran (t, d, ‘rectpuls’, tau);t- 33 Если нужно построить последовательность импульсов произвольнойформы причём отсчёты одиночного импульса записаны в векторе s1, тоиспользуют следующую форму задания функции pulstran:s= pulstran (t, d, s1, Fs);Например, нужно задать пачку из четырёх синусоидальных импульсов:s(t)200.0020.0050.0070.010.0120.0150.017 t, cВводятся следующие операторы:>> Fs= 1e4;>> t= 0:1/Fs:2e-2; t=t’;>> tau= 2e-3; A= 2;>> s1= sin (pi * t / tau) .* (t<=tau);>> d(: ,1)= (0:3)’ * 5e-3;>> d(: ,2)= A*ones(4,1);>> s= pulstran (t, d, s1, Fs);ж) Периодическая последовательность прямоугольных импульсов.S(t)A0tauT2T3Tt>> s= A/2 * (1+square (2*pi*t / T, tau / T*100));з) Пилообразный сигнал.S(t)A0-AT2T3Tt- 34 >> s= A* sawtooth (2*pi*t / T);и) Бигармонический сигнал.>> s= A1 *cos (2*pi*f1*t+phi1) + A2 *cos (2*pi*f2*t+phi2);к) Амплитудно-модулированный сигнал.>> s= A*(1+M*cos (2*pi*F*t+psi)).*cos (2*pi*f0*t+phi);л) Частотно-модулированный сигнал.>> s= A*cos (2*pi*f0*t + m*cos (2*pi*F*t + psi) + phi);м) Случайные сигналы.Для генерации случайной последовательности с равномерным закономраспределения вероятностей служит функция rand, с нормальным закономраспределения – функция randn.Например, нужно задать нормальный гауссовский белый шум с нулевымматематическим ожиданием и дисперсией σ2=4.>> Fs= 1e3;>> t=0:1/Fs:1;>> sigma= 2;>> n= sigma * randn ( length(t), 1);В дальнейшем можно создавать зашумлённые сигналы:>> sn= s+n;В качестве сигнала s можно взять одну из функций, описанных выше.10.2.
Построение графика тестового сигналаГрафик тестового сигнала можно построить, используя функции plot,stem или stairs:>> plot (t, s)>> plot (t, s, ‘.’)>> stem(t, s)>> stairs (t, s)- 35 Первая функция строит график сигнала, в котором все отсчётные значениясоединены отрезками прямых (получается график соответствующегоаналогового сигнала при достаточно малом интервале дискретизации).Вторая функция имеет «точечный» вид (отсчёты сигнала не соединенылиниями).
Третья функция представляет отсчёты вертикальными линиями скружком на конце. Четвёртая функция представляет сигнал в видеступенчатой линии. Можно ограничить диапазон выводимых значений. Приэтом указывается интервал номеров отсчётов:>> plot (t(1:100), s(1:100))Будут выведены значения сигнала с 1-го по 100-й отсчёт. Можно управлятьдиапазоном значений, отложенных по осям абсцисс и ординат графика. Дляэтого используются функции:axis ([xmin xmax ymin ymax]) – задание пределов по оси абсцисс (от xminдо xmax) и по оси ординат (от ymin до ymax); числовые значения в спискеразделяются пробелами;xlim ([xmin xmax]) – задание пределов по оси абсцисс;ylim ([ymin ymax]) – задание пределов по оси ординат.Добавление сетки производится оператором grid (grid on – включение, gridoff – выключение).
Можно также управлять цветом, типом линий имаркерами точек данных. Для этого используется строковый параметр всписке входных аргументов функций plot, stem, stairs.Управление цветом:b – синий (blue) (по умолчанию),с – голубой (cyan),g – зелёный (green),k – чёрный (black),m – фиолетовый (magenta),r – красный (red),y – жёлтый (yellow).Управление типом линий :− непрерывная (по умолчанию),- - пунктирная (длинный штрих),: пунктирная (короткий штрих),-. штрих-пунктирная.Управление маркерами данных:. точка (по умолчанию),+ знак «плюс»,* звёздочка,- 36 о кружок,х крестик,s квадрат,d ромб,v треугольник остриём вниз,^ треугольник остриём вверх.Например, plot (t, s, ‘r’) – непрерывная линия красного цвета,plot (t, s, ‘:og’) – пунктирная линия зелёного цвета, точки данныхотмечены кружками.10.3.Фильтрация сигналаВыходной сигнал фильтра можно найти, используя функцию filter.
Онареализуеталгоритмцифровойфильтрации,соответствующийтранспонированной структуре фильтра (direct form II transposed) (см.подраздел 6.3).>> y= filter (b, a, s);где b и a – векторы коэффициентов числителя и знаменателя передаточнойфункции фильтра; s – вектор входного сигнала; y – вектор выходногосигнала. Рассчитав выходной сигнал, можно построить графики входного ивыходного сигналов:>> plot (t, s, ‘r’, t, y, ‘g’)Входной сигнал будет отображён непрерывной линией красного цвета, авыходной – непрерывной линией зелёного цвета.При использовании функции stem лучше вывести графики отдельно:>> subplot (2,1,1)>> stem (t, s, ‘.r’)>> subplot (2, 1, 2)>> stem (t, y, ‘.b’)10.4.
Фильтрация как операция свёртки входного сигнала и импульснойхарактеристики фильтраСначала нужно получить импульсную характеристику фильтра:>> g= impz (b, a);- 37 где b и a – коэффициенты полиномов числителя и знаменателя передаточнойфункции, g – вектор отсчётов импульсной характеристики. Количествоотсчётов рассчитывается автоматически и зависит от поведения импульснойхарактеристики. Для явного задания количества расчётных точек n нужноввести оператор:>> g= impz (b, a, n);Для вывода графика импульсной характеристики не нужно указыватьвыходной параметр и ставить точку с запятой:>> impz (b, a)Рассчитав импульсную характеристику, можно найти выходной сигналфильтра методом свёртки:>> y= conv (s, g);где s – вектор входного сигнала, g – вектор импульсной характеристики, y –вектор выходного сигнала.Далее следует построить графики входного и выходного сигналов (см.подразделы 10.2 и 10.3).10.4.
Фильтрация в частотной области с использованием быстрогопреобразования Фурье (БПФ)В соответствии со спектральным методом спектр выходного сигналаравен произведению спектра входного сигнала и комплексной частотнойхарактеристики фильтра. Спектр вычисляется путём применения к сигналу,заданному в виде последовательности отсчётов, дискретного преобразованияФурье (ДПФ).
В MatLab алгоритм ДПФ применяется в форме БПФ (FFT –Fast Fourier Transform). Для осуществления фильтрации в частотной областизадаются операторы (подразумевается, что сигнал s, частота дискретизацииFs, а также коэффициенты фильтра b и a определены ранее):>> K= freqz (b, a, 512);>> S= fft (s, 1024);>> Y= S(1:512) .*K;>> y= ifft (Y);Нужно следить, чтобы суммарное количество отсчётов сигнала s иимпульсной характеристики g = impz (b, a) не превышало 1024.
В противномслучае нужно использовать функцию fft, задавая более высокую- 38 размерность преобразования. Тогда большее количество точек n надозадавать при расчёте частотной характеристики фильтра: K = freqz (b, a, n).(n = N/2, где N – размерность БПФ.) Помимо графиков сигналов можновывести спектры входного и выходного сигналов и частотнуюхарактеристику фильтра:>> f = (0:511)/512*(Fs/2);>> subplot (3,1,1)>> stem (f, abs(S(1:512)))>> subplot (3,1,2)>> plot (f, abs(K))>> subplot (3,1,3)>> stem (f, abs(Y(1:512)))Вместо функции stem можно использовать функцию plot, тогда получимнепрерывные спектры. Если имеется необходимость совместить все триграфика, то можно использовать операторы hold on и hold off вместооператоров subplot. Для различения графиков нужно задать различный цвети (или) тип линии (см.
подраздел 10.2).Блочную фильтрацию с помощью БПФ (сигнал разбивается на блоки поN отсчётов, где N – размерность БПФ) можно также реализовать, используяфункцию fftfilt:>>y = fftfilt (g, s, N);где g – вектор импульсной характеристики фильтра, s – вектор входногосигнала, N – размерность БПФ.10.5. Фильтрация сигнала с применением программы sptoolПрограмма sptool (signal processing tool) позволяет просматривать графикисигналов и их спектров, производить спектральный анализ сигнала,рассчитывать и анализировать фильтры, а также фильтровать сигналы.Программа имеет удобный графический интерфейс. Фильтрацияосуществляется с применением функции filter (см. подраздел 10.3).
Привыполнении спектрального анализа сигнала имеется возможность выбора издовольно широкого набора цифровых параметрических и непараметрическихметодов. Вызов программы осуществляется из командной строки MatLab:>> sptoolПосле набора имени программы нажмите клавишу <Enter>. Основное окнопрограммы содержит три поля: Signals, Filters и Spectra. В них перечисляютсяидентификаторы загруженных в программу сигналов, фильтров и спектров.- 39 Под списками расположены кнопки, нажимая на одну из которых можноактивизировать выполнение той или иной операции.Кнопка View – просмотр графика сигнала, спектра или характеристикфильтра.
Выводятся графики или характеристики того объекта, которыйвыделен в списке. Для выделения нескольких объектов одновременно нужнопри нажатии левой кнопки мыши удерживать клавишу <Ctrl>. Припросмотре графиков можно изменять масштаб, укрупняя отдельные участки.Для измерения значений в отдельных точках используются маркеры, которыеможно перетаскивать мышью. При просмотре характеристик фильтраимеется возможность совместного или раздельного вывода АЧХ (влогарифмическом или в линейном масштабе), ФЧХ (в градусах или врадианах), характеристики группового времени запаздывания, диаграммынулей и полюсов, импульсной и переходной характеристик.Кнопка Create – при её нажатии осуществляется расчёт спектра сигнала,выделенного в списке сигналов. В окне Spectrum Viewer в поле Parametersнужно указать метод спектрального анализа.
Имеет смысл испытатьнесколько методов и сравнить их результаты. Обычно из непараметрическихметодов предпочтение отдают методу Уэлча (Welch), из параметрических –можно применить авторегрессионный метод Юла-Уолкера (Yule AR).Разумеется, не следует забывать и об обычном ДПФ (FFT). Указав метод,следует щёлкнуть мышью по кнопке Apply. Будет выведен графикспектральной плотности мощности. Имеется возможность выводить спектрыв линейном или в логарифмическом масштабе (меню Options).Кнопки New и Edit позволяют осуществить синтез нового фильтра илиизменить характеристики уже существующего фильтра.