Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2 Дискретные фильтры Вариант2

.docx
Скачиваний:
0
Добавлен:
27.01.2026
Размер:
816.6 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра ТОР

отчет

по лабораторной работе №2

по дисциплине «Цифровая обработка сигналов»

Тема: Дискретные фильтры

Студенты гр.

Преподаватель

Апалина П.В.

Санкт-Петербург

202X

Цели работы.

– Пропускание дискретного сигнала через дискретный фильтр и получение графика выходного сигнала;

– Анализ сигналов, проходящих через элементы памяти фильтра, при реализации фильтра в разных формах;

– Получение графиков характеристик фильтра с помощью среды визуализации фильтров FVTool;

– Разложение функции передачи фильтра на простые дроби и получение аналитической формулы для импульсной характеристики фильтра.

Структурные схемы.

На рис. 1 – 3 приведены структурные схемы реализации дискретного фильтра, соответствующие различным вариантам представления одной и той же функции передачи в пространстве состояний.

Рисунок 1 – Прямая форма реализации дискретного фильтра

Рисунок 2 – Каноническая форма реализации фильтра

Рисунок 3 – Транспонированная форма реализации фильтра

Программный код.

clear; %удаление переменных из рабоченй области

close all; %закрытие всех графических окон

%1. Создание переменных

U1 = 0; %В

U2 = 8; %В

U3 = 3; %В

U4 = 0; %В

T1 = 4; %мс

T2 = 7; %мс

Fd = 5; %кГц

a = [1, -2.5614, 2.9222, -1.6586, 0.3931]; %вектор коэффициентов знаменателя функции передачи

b = [0.0056, 0.0224, 0.0336, 0.0224, 0.0056]; %вектор коэффициентов числителя функции передачи

%2. Формирование дискретного сигнала

T = 1/Fd; %интервал дискретизации, мс

Tk1 = 0:T:T1; %вектор моментов времени взятия отсчетов первого линейного фрагмента

Tk2 = T1:T:T2; %вектор моментов времени взятия отсчетов второго линейного фрагмента

Tk = [Tk1 Tk2(2:end)]; %вектор моментов времени взятия отсчетов

u1T = 2*Tk1; %значения отсчетов первого линейного фрагмента

u2T = -1*Tk2 + 7; %значения отсчетов второго линейного фрагмента

xk = [u1T(1:(length(u1T) - 1)) (u1T(end)+u2T(1))/2 u2T(2:end)]; %значения отсчетов всего дискретного сигнала

xk0 = [xk zeros(1,length(xk))]; %добавление к вектору значений отсчетов нулей

figure; %окно для вывода графика дискретного сигнала

stem(xk0); %график дискретного сигнала

xlabel('k'); %подпись оси абсцисс

ylabel('x(k), B'); %подпись оси ординат

%3. Пропускание сигнала через дискретный фильтр

y_st = filter(b, a, xk0); %обработка сигнала дискретным фильтром

figure; %окно для вывода графика выходного сигнала фильтра

stem(y_st); %выходной сигнал фильтра

xlabel('k'); %подпись оси абсцисс

ylabel('y(k), B'); %подпись оси ординат

b_kan = [1, 0, 0, 0, 0]; %вектор коэффициентов числителя функции передачи для расчета сигнала, прошедшего через рекурсивную часть фильтра

y_kan = filter(b_kan, a, xk0); %обработка сигнала дискретным фильтром

figure; %окно для вывода графика сигнала

stem(y_kan); %сигнал, хранящийся в элементах памяти фильтра, реализованного в соответствии с канонической формой

xlabel('k'); %подпись оси абсцисс

ylabel('yвнутр(k), B'); %подпись оси ординат

states = []; %заготовка матрицы внутренних состояний

s = []; %текущее состояние фильтра

for k = 1:length(xk0)

[y(k), s] = filter(b, a, xk0(k), s); %обработка одного отсчета с заданием и сохранением внутреннего состояния фильтра

states = [states s]; %добавление нового столбца к матрице состояний

end

figure; %окно для вывода графиков

plot(states.'); %графики всех внутренних сигналов фильтра

xlabel('k'); %подпись оси абсцисс

ylabel('yвнутр(k), B'); %подпись оси ординат

legend('yвнутр1(k)', 'yвнутр2(k)', 'yвнутр3(k)', 'yвнутр4(k)');

%4. Определение максимального по модулю значения сигнала (внутреннего

%состояния) хранящегося в элементах памяти при работе фильтра

max_straight = max(max(abs(y_st)), max(abs(xk0))); %для прямой формы реализации фильтра

max_kanon = max(max(abs(y_kan)), max(abs(xk0))); %для канонической формы реализации фильтра

max_trans = max(max(abs(states))); %для транспонированной формы реализации фильтра

Форма реализации фильтра

Максимальное по модулю внутреннее состояние

Прямая

7.6000

Каноническая

76.0032

Транспонированная

10.7597

%5. Получение графиков характеристик фильтра

%ввод в командную строку команды fvtool(b, a)

%6. Получение аналитической формы для импульсной характеристики фильтра

[r, p, k] = residuez(b, a); %разложение функции передачи на простые дроби

r_mod = abs(r); %вычисление модулей вычетов

p_mod = abs(p); %вычисление модулей полюсов

r_ang = angle(r); %вычисление фаз вычетов

p_ang = angle(p); %вычисление фаз полюсов

Модуль

Фаза, рад

Вычеты

r1

0.1318

2.0847

r2

0.1318

– 2.0847

r3

0.3724

– 1.4077

r4

0.3724

1.4077

Полюсы

p1

0.8839

0.8000

p2

0.8839

– 0.8000

p3

0.7093

0.3559

p4

0.7093

– 0.3559

Целая часть

k

0.0142

Представление функции передачи в виде суммы простых дробей:

Обратное z-преобразование:

Объединение комплексно-сопряженных пар:

Выводы.

В ходе лабораторной работы дискретный сигнал из предыдущей работы был пропущен через дискретный фильтр с получением графика выходного сигнала. Были получены сигналы, проходящие через элементы фильтра при прямой, канонической и транспонированной формах реализации и графики различных характеристик фильтра. Также было произведено разложение функции передачи на простые дроби и получена аналитическая формула для импульсной характеристики фильтра.