Калачиков математические основы mu_dsp_2811
.pdfРисунок 2.6 – Cпектр сигнала y1(t)
2.4 Применение разработанного фильтра
Использовать в среде SPTool разработанный фильтр чрезвычайно просто. Для этого следует в списке Signals (Сигналы) окна SPTool выделить имя сигнала, который нужно преобразовать с помощью фильтра, а в списке Filters (Фильтры) – имя фильтра, с помощью которого надо преобразовать этот сигнал, и активизировать команду Apply (Применить). В результате в списке Signals (Сигналы) появится имя нового сигнала, начинающееся с сочетания символов sig, за которым следует порядковый номер.
Полученный сигнал можно просмотреть, как это было описано ранее, используя команду View (Просмотр). Например, применяя только что разработанный фильтр filt1 к сигналу y1(t), получим процесс, изображенный на рисунке 2.7
Рисунок 2.7 – Результат прохождения сигнала y1(t) через фильтр filt1
31
3 Описание интерактивной среды FDATool
Среда FDATool представляет графический интерфейс для расчета фильтров и просмотра их характеристик. На вкладке Design Filter задается тип синтезируемой АЧХ – фильтр нижних частот, тип фильтра нерекурсивный (FIR), метод синтеза – метод окон (синтез с использованием весовых функций). При проектировании КИХ фильтра в среде FDATool применяются следующие методы: Equiriple – синтез фильтров с равномерными пульсациями АЧХ методом Ремеза; Least-Squares – минимизация среднеквадратичного отклонения АЧХ от заданной и метод окон (Window). В разделе Filter Order задается порядок КИХфильтра. Расчет фильтра осуществляется после нажатия кнопки Design Filter.
В методе окон обратное преобразование Фурье частотной характеристики дает бесконечную в обе стороны последовательность отсчетов импульсной характеристики. Для получения КИХ-фильтра заданного порядка эта последовательность усекается путем выбора центрального фрагмента нужной длины. Для ослабления паразитных эффектов в этом методе синтеза усеченная импульсная характеристика умножается на весовую функцию (окно), плавно спадающую к краям.
Рисунок 3.1 − Окно программы FDATool
32
3.1 Синтез фильтра
Расчет фильтра начинается с задания требуемых параметров в окне
Необходимо выбрать тип синтезируемой АЧХ, с помощью переключате-
ля Filter Type (рисунок 3.2).
Возможны следующие варианты:
-Lowpass ( ФНЧ );
-Highpass ( ФВЧ );
-Bandpass ( ПФ ).
Выбрав категорию синтезируемой АЧХ, следует выбрать тип синтезируемого фильтра, установив переключатель, расположенный в разделе Design Method, в положение FIR (нерекурсивный) или IIR (рекурсивный). Каждому типу фильтра соответствует список возможных методов синтеза, перечисленных ниже и показанных на рисунке 3.2.
Нерекурсивные фильтры (FIR):
o Equiripple – синтез фильтров с равномерными пульсациями АЧХ методом Ремеза;
o Least-Squares – на основе минимизации среднеквадратического отклонения АЧХ от заданной;
o Window – синтез с использованием весовых функций (окон). Рекурсивные фильтры (IIR):
Синтез осуществляется по различным аналоговым прототипам методом билинейного z-преобразования:
o Butterworth – синтез фильтра Баттерворта;
o Chebyshev Type I – синтез фильтра Чебышева первого рода; o Chebyshev Type II – синтез фильтра Чебышева второго рода; o Elliptic – синтез эллиптического фильтра.
Рисунок 3.2 – Список возможных методов синтеза фильтров
Выбрать порядок фильтра в разделе Filter Order (см. рисунок 3.2).
33
Примечание: Возможен автоматический выбор оптимального порядка фильтра путем установки переключателя в положение Minimum Order.
Задать числовые параметры выбранной АЧХ в разделах Frequency Specifications, Magnitude Specifications (рисунок 3.2). Параметры, которые необходи-
мо задать, иллюстрируются графиком, выводимым в разделе Filter Specifica-
tions. Это можно сделать, нажав кнопку на панели инструментов. Вид этого графика меняется в зависимости от выбранного типа АЧХ.
Выбрав метод синтеза и задав характеристики фильтра, щелкните на распо-
ложенной в нижней части окна кнопке для создания вашей модели фильтра.
3.2 Просмотр характеристик фильтра
После выполнения расчета фильтра, нужно просмотреть его характеристики. Выбор графика для просмотра производится с помощью кнопок панели инструментов или следующих команд меню Analysis (рисунок 3.2):
Filter Specifications − вывод графика, поясняющего задание АЧХ;
Magnitude Response − вывод графика АЧХ;
Phase Response − вывод графика ФЧХ;
Magnitude and Phase − одновременный вывод графиков АЧХ и ФЧХ;
Group Delay − вывод графика частотной зависимости групповой задержки;
Impulse Response − вывод графика импульсной характеристики;
Phase Delay – вывод графика частотной зависимости фазовой задержки;
Step Response − вывод графика переходной характеристики;
Pole/Zero Plot − вывод графика расположения нулей и полюсов на плоскости;
View Filter Coefficients − просмотр коэффициентов фильтра.
Когда на экран выведен какой-либо из графиков, можно использовать кнопки Zoom In и Zoom Out для управления масштабом отображения.
34
Практическая работа № 1
ОПИСАНИЕ СИГНАЛОВ В МATLAB
Цель работы. Практическое изучение формирования сигналов при моделировании алгоритмов в Мatlab.
Порядок выполнения работы
Для моделирования алгоритмов обработки сигналов важным является формирование сигналов заданной формы.
Для задания сигнала как функции от времени необходимо сформировать вектор временных отсчетов и далее определить функцию от данного вектора
t1 = [0 .1 .2 .3];
t2 = 0:0.1:0.3;
t3 = linspace(0, 0.3, 4); T = [t1' t2' t3'];
X = sin(T)
В данном примере происходит формирование трех векторов отсчетов времени, задающих масштаб временной оси. Далее эти три вектора объединяются в матрицу, и полученная матрица применяется для вычисления матрицы Х, содержащей отсчеты синусоиды.
t=linspace(-1,10,100); % функция включения u=(t>=0);
plot(t,u)
ts = 0:0.5:5; % дельта импульс x = [1 zeros(1,length(ts)-1)]; stem(ts,x)
axis([-1 6 0 2])
.t = linspace(0,1,1001); %синусоидальный сигнал A = 5;
f = 2;
p = pi/8;
sinewave = A*sin(2*pi*f*t + p); plot(t, sinewave)
%Дискретные экспоненты n = -10:30; % Time index subplot(2,1,1);
y = exp(n/5); % Growing exponential h = stem(n,y); set(h(1),'Marker','.'); set(gca,'Box','Off'); subplot(2,1,2);
35
y = exp(-n/5); % Decaying exponential h = stem(n,y); set(h(1),'Marker','.'); set(gca,'Box','Off');
xlabel('Time (n)');
Важным сигналом в цифровой обработке сигналов является комплексная экспонента. Для наглядного представления формы этого сигнала можно использовать следующий м-скрипт complexp.m.
% Моделирование комплексной экспоненты. w = j*1;
fs = 500; % Sample rate (Hz)
t = -10:1/fs:10; % Time index (s) y = exp(w*t);
N = length(t); subplot(2,1,1);
h = plot(t,real(y)); box off;
grid on; ylim([-1.1 1.1]);
ylabel('Реальная часть'); subplot(2,1,2);
h = plot(t,imag(y)); box off;
grid on; ylim([-1.1 1.1]);
xlabel('Время (s)'); ylabel('мнимая часть'); figure;
h = plot3(t,zeros(1,N),zeros(1,N),'k'); hold on;
h = plot3(t,imag(y),real(y),'b');
h = plot3(t,1.1*ones(size(t)),real(y),'r'); h = plot3(t,imag(y),-1.1*ones(size(t)),'g'); hold off;
grid on;
ylabel('мнимая часть'); zlabel('Реальная часть');
title('Complex:Blue Real:Red Imaginary:Green'); axis([min(t) max(t) -1.1 1.1 -1.1 1.1]); view(27.5,22);
36
Рисунок 4.1 – Реальная и мнимая части комплексной экспоненты
Рисунок 4.2 – Графическое представление комплексной экспоненты
В пакете Signal предусмотрено несколько процедур, образующих последовательности данных, представляющие некоторые одиночные импульсные процессы типовых форм.
37
Процедура rectpuls обеспечивает формирование одиночного импульса прямоугольной формы. Обращение вида
y=rectpuls(t,w)
позволяет образовать вектор y значений сигнала такого импульса единичной амплитуды, имеющий ширину w, центрированный относительно t = 0, по заданному вектору t моментов времени. Сформируем несколько таких импульсов (рисунок 4.3):
t=0:0.01:10; y=0.75*rectpuls(t-3,2)+0.5*rectpuls(t-8,0.4)+ +1.35*rectpuls(t-5,0.8);
plot(t,y); grid; title('Прямоугольные импульсы'); xlabel('Время (с)'); ylabel('Выходной процесс')
Выходной процесс
Прямоугольные импульсы
1.4
1.2
1
0.8
0.6
0.4
0.2
00 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
|
|
|
|
Время (с) |
|
|
|
|
Рисунок 4.3 – График процесса, сгенерированного функцией rectpuls
Процедура sinc формирует вектор значений функции sin(t)/t. Эта функция является обратным преобразованием Фурье прямоугольного импульса шириной 2π и высотой 1. Пример ее применения (рисунок 4.4):
t=0:0.01:50; y=0.7*sinc(pi*(t-25)/5);
plot(t,y); grid; title('Функция sinc(t)'); xlabel('Время (с)'); ylabel('Выходной процесс')
38
Выходной процесс
Функция sinc(t)
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.20 |
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
|
|
|
|
|
Время |
(ñ) |
|
|
|
|
Рисунок 4.4 – График процесса, сгенерированного функцией sinc
Формирование гармонических колебаний можно осуществить с помощью обычных процедур sin(x) и cos(x).
Процесс, являющийся последовательностью прямоугольных импульсов с периодом 2π для заданной в векторе t последовательности отсчетов времени, генерируется с помощью функции square. Обращение к ней имеет вид:
y=square(t,duty)
Здесь аргумент duty определяет длительность положительной полуволны в процентах от периода волны. Например (рисунок 4.5):
t=0:0.01:50; y=0.7*square(pi*t/5,40); plot(t,y); grid; title('Прямоугольные волны'); xlabel('Время'); ylabel('Выходной процесс')
Выходной процесс
Прямоугольные волны
0.8 |
|
|
|
|
|
|
|
|
|
|
0.6 |
|
|
|
|
|
|
|
|
|
|
0.4 |
|
|
|
|
|
|
|
|
|
|
0.2 |
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
-0.2 |
|
|
|
|
|
|
|
|
|
|
-0.4 |
|
|
|
|
|
|
|
|
|
|
-0.6 |
|
|
|
|
|
|
|
|
|
|
-0.80 |
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
|
|
|
|
|
Время |
|
|
|
|
|
Рисунок 4.5 – График процесса, сгенерированного функцией square
39
Процедура pulstran позволяет формировать колебания, являющиеся последовательностью прямоугольных, треугольных либо гауссовых импульсов. Обращение имеет вид:
y=pulstran(t,d,'func',p1,p2,…) y=pulstran(t,d,'rectpuls',5); plot(t,y); grid; title('Последовательность прямоугольных импульсов'); xlabel('Время'); ylabel('Выходной процесс')
Выходной процесс
Последовательность прямоугольных импульсов
1
0.9 |
|
|
|
|
|
|
|
|
|
|
|
0.8 |
|
|
|
|
|
|
|
|
|
|
|
0.7 |
|
|
|
|
|
|
|
|
|
|
|
0.6 |
|
|
|
|
|
|
|
|
|
|
|
0.5 |
|
|
|
|
|
|
|
|
|
|
|
0.4 |
|
|
|
|
|
|
|
|
|
|
|
0.3 |
|
|
|
|
|
|
|
|
|
|
|
0.2 |
|
|
|
|
|
|
|
|
|
|
|
0.1 |
|
|
|
|
|
|
|
|
|
|
|
0 |
0 |
5 |
10 |
15 |
20 |
25 |
30 |
35 |
40 |
45 |
50 |
|
|
|
|
|
|
Время |
|
|
|
|
|
Рисунок 4.6 – Результат применения функции pulstran('rectpuls')
Случайные процессы
Нормально распределенный случайный процесс (белый шум) в MATLAB образуется при помощи процедуры randn. Для этого достаточно задать временной шаг отсчетов Ts, образовать с этим шагом вектор t моментов времени в нужном диапазоне, а затем сформировать по указанной процедуре векторстолбец х длиной, равной длине вектора t, например (рисунок 4.7):
Ts=0.01; t=0:Ts:20; y=randn(1,length(t)); plot(t,y); grid; title('Белый шум'); xlabel('Время'); ylabel('y(t)')
40