Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР3 Дискретное преобразование Фурье.docx
Скачиваний:
0
Добавлен:
27.01.2026
Размер:
204.7 Кб
Скачать

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

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

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

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

Кафедра ТОР

отчет

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

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

Тема: ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ

Студенты гр.

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

Апалина П.В.

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

202X

Цели работы

• Расчет дискретного преобразования Фурье (ДПФ) средствами MATLAB.

• Оценка с помощью прямого и обратного ДПФ полосы частот, в которой сосредоточена основная доля энергии сигнала.

• Наблюдение изменений результатов вычисления ДПФ, происходящих при дополнении сигнала нулевыми отсчетами.

• Оценка степени ускорения вычислений за счет алгоритмов быстрого преобразования Фурье (БПФ).

Индивидуальное задание

В лабораторной работе исследуется кусочно-линейный сигнал s(t), заданный параметрами Uk, Tk, k = 1…4 (рис. 1).

Рис. 1. Кусочно-линейный сигнал, исследуемый в работе

Параметры сигнала и используемая частота согласно варианту бригады №2 представлены в табл. 1.

Табл. 1. Параметры сигнала

U1, В

U2, В

U3, В

U4, В

T1, мс

T2, мс

Fд, кГц

4

4

8

0

6

10

3

Обработка данных

Код программы с подробными комментариями и полученные графики (рис. 2-7) приведем ниже.

%% Дискретное преобразование Фурье

close all;

U1 = 4; % сигнал из работы 1

U2 = 4;

U3 = 8;

U4 = 0;

T1 = 0.006;

T2 = 0.01;

Fd = 3000;

T = 1/Fd;

t1 = 0:T:T1;

t2 = T1:T:T2;

a1 = 0;

b1 = 4;

u1 = a1*t1 + b1

a2 = -U3/(T2-T1);

b2 = -a2*T2;

u2 = a2*t2 + b2;

u = [u1(1:end-1) u2];

t = [t1(1:end-1) t2];

ots = [0:30]; %вектор номеров отсчетов

% Построим график дискретного сигнала

figure(1);

stem(t, u, 'Linewidth', 1.5);

ax = gca;

ax.FontSize = 12;

Xlabel('t, с');

ylabel('U, В');

Рис. 2. График дискретного сигнала

Рис. 3. АЧХ и ФЧХ ДПФ по номерам отсчетов

%% Вычисление ДПФ и построение графика спектра дискретного сигнала

%Вычислим ДПФ для дискретного сигнала из индивидуального

%задания. Используя функцию stem, построим графики модуля и

%фазы спектральных отсчетов в одном графическом окне друг под другом (с

%помощью функции subplot).

y = fft(u);

%Здесь u — вектор отсчетов сигнала; y — вектор результатов вычисления ДПФ.

figure(2); %построим АЧХ и ФЧХ от номеров отсчетов

subplot(2,1,1);

stem(ots, abs(y), 'Linewidth', 1.5);

xlabel('k');

ylabel('А(k)');

ax = gca;

ax.FontSize = 12;

subplot(2,1,2);

stem(ots, angle(y), 'Linewidth', 1.5);

xlabel('k');

ylabel('Ф(k)');

ax = gca;

ax.FontSize = 12;

%% Оценка ширины спектра сигнала

%Используя обратное ДПФ, определим минимальное число низкочастотных

%гармонических составляющих сигнала, содержащих не менее 90% его энергии.

% Рассчитаем энергию исходного сигнала

E0 = 0;

for k = 1:length(u)

E0 = E0 + abs(u(k))^2;

end

%Создадим копию вектора результатов ДПФ под новым именем.

y2 = y;

%Обнулим в созданной копии результатов ДПФ те элементы, которые

%соответствуют гармоникам с номерами, превышающими некоторое пороговое

%значение Nmax.

Nmax = 1; % оставим столько гармоник слева и справа

for k = 1:length(y2) %обнулим гармоники слева и справа, слева должно быть

%на одну больше, т. к. нулевую гармонику не обнуляем никогда

if (Nmax + 1) < k && k < (length(y2) - Nmax + 1)

y2(k) = 0;

end

end

figure(3); %построим АЧХ и ФЧХ, чтобы увидеть обнуление гармоник на отсчетах

subplot(2,1,1);

stem(ots, abs(y2), 'Linewidth', 1.5);

xlabel('k');

ylabel('А(k)');

ax = gca;

ax.FontSize = 12;

subplot(2,1,2);

stem(ots, angle(y2), 'Linewidth', 1.5);

xlabel('k');

ylabel('Ф(k)');

ax = gca;

ax.FontSize = 12;

%% Вычисление обратного дпф и построение графика сигнала функцией stem

%Вычисление обратного ДПФ производится с помощью функции ifft:

u_obr = ifft(y2);

figure(4); %Построим график сигнала, полученного обратным ДПФ

stem(t, u_obr, 'Linewidth', 1.5);

ax = gca;

ax.FontSize = 12;

xlabel('T, с');

ylabel('U, В');

%% Вычисление энергии получившегося сигнала

% Она меньше, чем 90 % энергии исходного сигнала E0?

E1 = 0;

for k = 1:length(y2)

E1 = E1 + abs(y2(k))^2;

end

res = E1/E0;

% Опытным путем получили, что сохраняется более 90% энергии сигнала при

% Nmax от 1 (res = 0.9075 при Nmax = 1)

%Построим график полученного сигнала вместе с исходным в общих координатных осях.

figure(5);

plot(t, u_obr, 'Linewidth', 1.5);

hold on;

stem(t, u, 'Linewidth', 1.5);

ax = gca;

ax.FontSize = 12;

xlabel('T, с');

ylabel('U, В');

Рис. 4. АЧХ и ФЧХ ДПФ после обнуления N = 1 гармоник

Рис. 5. Восстановленный обратным преобразованием Фурье сигнал, переносящий не менее 90% энергии

Рис. 6. График восстановленного сигнала вместе с исходным в общих координатных осях