Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практ_5.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.01 Mб
Скачать

Импульсные и частотные характеристики цифровых фильтров

Импульсную характеристику фильтра с коэффициентами числителя и коэффициенты знаменателя вычисляют посредством оператора impz. Его запись такова

[h, t] = impz (b, a).

MATLAB отображает значения характеристики в векторе-столбце h, времени в векторе-столбце t.

Если указанная функция записана в виде impz (b, a) без аргументов, то получим график импульсной дискретной характеристики фильтра в текущем окне.

Частотная характеристика фильтра с коэффициентами числителя b и коэффициентами знаменателя вычисляется посредством оператора freqz. Форма его вызова такова

[h, f] = freqz (b, a).

MATLAB отображает значения частотной характеристики в векторе-столбце h, частоту в векторе-столбце f.

Если записать функцию в виде freqz (b, a) без аргументов, то получим график частотной характеристики фильтра в текущем окне фигуры.

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

impz (b, a)

freqz (b, a)

Полученные графики показаны на рис. 2 (рис.2.а – импульсная характеристика, рис. 2.б - частотная характеристика).

a b

Рис.2

Формирование белого гауссовского шума

Идеализированный случайный процесс с нормальным распределением, т.е. "белый" шум может быть получен в MATLABе посредством использования оператора randn. Достаточно задать дискрет времени , образовать с этим шагом массив (вектор) моментов времени в нужном диапазоне, а затем сформировать по указанной процедуре вектор-столбец длиной, равной длине вектора .

Пример 3. Построить белый шум на интервале от 0 до 20 с = 0.01с.

Ts=0.01;

t=0:Ts:20;

x = randn(1,length(t));

plot(t,x), grid

title('Белый шум');

xlabel('Время (сек)');

ylabel('x(t)')

Фильтрация данных в matlaBе

Фильтрация - преобразование заданного сигнала с помощью линейного фильтра, описываемого дискретной передаточной функцией вида

Фильтрация осуществляется в MATLABе при помощи оператора filter следующим образом

y = filter(b, a, x),

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

Чтобы избежать фазовых искажений полезного сигнала при его восстановлении, можно воспользоваться процедурой двойной фильтрации – filtfilt. Обращение к ней имеет такую же форму, что и к процедуре filter. В отличие от последней процедура filtfilt осуществляет обработку вектора x в два приема: сначала в прямом, а затем в обратном направлении. Результат имеет практически нулевое искажение фазы и амплитуду, измененную квадратом отклика амплитуды фильтра.

Ход работы:

Имеется полезный сигнал длительностью , к которому в результате его измерения прибавляется белый шум с интенсивностью . Для нечетных вариантов и для четных – . Известен также порядок фильтра и время (период) дискретизации . Необходимо:

  1. построить полезный сигнал ;

  2. сгенерировать белый шум с интенсивностью ;

  3. построить белый шум;

  4. рассчитать зашумленный сигнал , как сумму полезного сигнала и помехи измерения;

  5. построить зашумленный сигнал ;

6) вычислять частоту среза;

  1. спроектировать цифровой фильтр низкой частоты с помощью указанного окна;

  2. построить импульсную характеристику спроектированного фильтра;

  3. построить частотную характеристику спроектированного фильтра;

  4. выполнить фильтрацию зашумленного сигнала с помощью функций filter и filtfilt.

  5. выполнить сравнение восстановленного процесса и полезного сигнала на одном графике в обоих вариантах фильтрации.