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

ЛР3 Бронников Корнилов

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

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

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

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

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

Кафедра ТОР

отчет

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

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

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

Вариант 29

Студенты гр. 0182

Корнилов А.М.

Бронников Д.Д.

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

Апалина П.В.

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

2023

Цели работы

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

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

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

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

  1. Расчет ДПФ

clear all;close all;

clc

u1 = 10; u2 = 5; u3 = 3; u4 = 6;T1 = 3; T2 = 9; F_d = 3;

t1 = 0:1/F_d:T1;

t2 = T1+1/F_d:1/F_d:T2;

a1 = (u2 - u1)/T1;

a2 = (u4 - u3)/(T2 - T1);b1 = u1;

b2 = u4 - a2 * T2;

s1 = a1 * t1 + b1;s2 = a2 * t2 + b2;

s = [s1 s2];

figure;plot(s);

xlabel('N, numbers');

ylabel('U, V');

grid on;figure;

stem (s);xlabel('N, numbers');

ylabel('U, V');grid on;

f = [];

N = length(s);

for i = 0:(N-1)

f_n = i/(N-1)*F_d;

f = [f f_n];

end

y = fft(s);

mody = abs(y); phy = angle(y);

figure; subplot(2,1,1);

stem (f, mody); xlabel('f, kHz');

ylabel('ampl, V'); grid on;

subplot(2,1,2); stem (f, phy);

xlabel('f, kHz'); ylabel('faz, rad'); grid on;

A = 0:(length(s)-1);

figure; subplot(2,1,1); stem (A, mody);

xlabel('N, numbers'); ylabel('ampl, V');

grid on; subplot(2,1,2);

stem (A, phy); xlabel('N, numbers');

ylabel('faz, rad'); grid on;

Рис. 1 — Сформированный дискретный сигнал

Рис. 2 — Зависимость модуля спектральных отсчетов от частоты

Рис. 3 — Зависимость фазы спектральных отсчетов от частоты

Рис. 4 — Зависимость модуля спектральных отсчетов от номеров отсчетов

Рис. 5 — Зависимость фазы спектральных отсчетов от номеров отсчетов

  1. Оценка ширины спектра сигнала и вычисление обратного ДПФ

E_0 = sum((abs(s)).^2);

copy = y;

Nmax = 0;

E_0x = 0;

while E_0x < 0.9*E_0

for i=1:length(s)

if i > Nmax+1

copy(i) = 0;

end

end

x = ifft(copy);

figure;

stem(x); xlabel('N, numbers');

ylabel('U, V'); grid on;

E_0x = sum((abs(x)).^2);

Nmax = Nmax + 1;

end

Nmax = Nmax - 1;

figure; stem (A,s); hold on

stem (A, x); xlabel('N, numbers');

ylabel('U, V'); grid on;

Рис. 6 — Графики исходного и восстановленного сигналов

Рассчитанное минимальное число низкочастотных гармонических составляющих Nmax, для которого сигнал после обратного БПФ содержит не менее 90 % энергии исходного сигнала (EБПФ = 885.94 > E = 979.55) равно 0. Значит, с такими параметрами сигнала как в задании, в нулевой гармонике содержится более 90% энергии сигнала.

Ширина спектра в герцаx составляет .

  1. Вычислите ДПФ для дополненного нулями сигнала

s0 = [s, zeros(1, length(s))];

f0 = [];

N1 = length(s0);

for i = 0:(N1-1)

f_n = i/(N1-1)*F_d;

f0 = [f0 f_n];

end

y0 = fft(s0);

mody0 = abs(y0);

phy0 = angle(y0);

figure; subplot(2,1,1);

stem (f0, mody0); xlabel('f, kHz'); ylabel('ampl, V'); grid on;

subplot(2,1,2); stem (f0, phy0); xlabel('f, kHz'); ylabel('faz, rad');

grid on;

Рис. 7 — Зависимость модуля спектральных отсчетов от частоты

Рис. 8 — Зависимость фазы спектральных отсчетов от частоты

Рис. 9 — Зависимость модуля спектральных отсчетов от номеров отсчетов

Рис. 10 — Зависимость фазы спектральных отсчетов от номеров отсчетов

  1. Измерение скорости расчетов при вычислении ДПФ

N = 64; % размер ДПФ

s_DPF = [s zeros(1, N-length(s))]; % дополнение сигнала нулями до длины N

D = dftmtx(N); % матрица ДПФ

y_DPF = zeros(1, N); % массив для результатов ДПФ

tic % старт таймера

for k = 1:1200 % цикл для измерения времени

y_DPF = s_DPF * D; % вычисление ДПФ по прямой формуле

end

toc % отображение измеренного времени

N = 8192; % размер ДПФ

y_BPF = zeros(1, N); % массив для результатов ДПФ

tic % старт таймера

for k = 1:180000 % цикл для измерения времени

y_BPF = fft(s_DPF, N); % вычисление БПФ

end

toc % отображение измеренного времени

Измеренные скорости работы для ДПФ по прямой формуле и с использованием БПФ сведены в таблицу:

Таблица 1. Сравнение алгоритмов ПФ

Параметр

N

64

128

256

512

1024

2048

4096

8192

ДПФ

Время, с

0,0043

0,0075

0,019

0,059

0,93

4,42

17,49

69,6

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

3,58

6,25

15,83

49,17

775

3683,3

14575

58000

БПФ

Время, с

0,28

0,32

0,47

0,64

0,9

2,4

4,8

8,88

Время однократного вычисления БПФ, мкс

1,56

1,78

2,61

3,56

5

13,33

26,67

49,33

Число повторений цикла прямого ДПФ: 1200

Число повторений цикла БПФ: 180000

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

N1 = [64 128 256 512 1024 2048 4096 8192];

time = [3.58 6.25 15.83 49.17 775 3683.3 14575 58000]*10^(-6);

time2 = [1.56 1.78 2.61 3.56 5 13.33 23.67 49.33]*10^(-6);

N2 = 64:8192;

k1 = 8.5*10^(-10);

aprox_DPF = k1*N2.^2;

figure; semilogy(log2(N2),(aprox_DPF),'r-'); hold on;

semilogy(log2(N1),(time),'b-*');

xlabel('log2(N)');

ylabel('Time, us');

legend('Теория','Эксперимент','Location','northwest');

grid on;

k2 = 0.5*10^(-9);

aprox_BPF = k2*N2.*log2(N2);

figure; semilogy(log2(N2),(aprox_BPF),'r-'); hold on;

semilogy(log2(N1),(time2),'b-*');

xlabel('log2(N)');

ylabel('Time, us');

legend('Теория','Эксперимент','Location','northwest');

grid on;

Рис. 11 – График экспериментальной и теоретической зависимостей для прямого ДПФ

Рис. 12 – График экспериментальной и теоретической зависимости для быстрого ДПФ

Подобранные коэффициенты при построении теоретических графиков получились: k1 = 8.5*10^(-10) с, k2 = 0.5*10^(-9) с.

Вывод

В ходе выполнения данной лабораторной работы были рассчитаны ДПФ для исходного и дополненного нулями сигналов. Частотная шкала ограничена сверху частотой дискретизации (числом отсчетов), которая не изменна для двух сигналов. Однако во втором сигнале число отсчетов в 2 раза больше, поэтому расстояние между отсчетами в графиках на Рис. 4 и Рис. 7 в 2 раза меньше, но зависимости одинаковые по форме.

Произведено обратное ДПФ для сигнала, содержащего минимальное число низкочастотных гармонических составляющих сигнала, содержащих не менее 90 % его энергии. Оказалось, что в нулевой гармонике содержится чуть больше 90%, и восстановленный сигнал представляет собой константу (с другими исходными данными могло быть иначе).

Сравнивая скорости работы для ДПФ по прямой формуле и с использованием БПФ, можно сделать вывод, что выигрыш в скорости огромен и увеличивается с ростом числа отсчётов сигнала (размерности матрицы ДПФ).