ЛР3 Бронников Корнилов
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра ТОР
отчет
по лабораторной работе №3
по дисциплине «Цифровая обработка сигналов»
Тема: ДИСКРЕТНОЕ ПРЕОБРАЗОВАНИЕ ФУРЬЕ
Вариант 29
Студенты гр. 0182 |
|
Корнилов А.М. Бронников Д.Д. |
Преподаватель |
|
Апалина П.В. |
Санкт-Петербург
2023
Цели работы
Расчет дискретного преобразования Фурье (ДПФ) средствами MATLAB.
Оценка с помощью прямого и обратного ДПФ полосы частот, в которой сосредоточена основная доля энергии сигнала.
Наблюдение изменений результатов вычисления ДПФ, происходящих при дополнении сигнала нулевыми отсчетами.
Оценка степени ускорения вычислений за счет алгоритмов быстрого преобразования Фурье (БПФ).
Расчет ДПФ
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 — Зависимость фазы спектральных отсчетов от номеров отсчетов
Оценка ширины спектра сигнала и вычисление обратного ДПФ
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 составляет
.
Вычислите ДПФ для дополненного нулями сигнала
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 — Зависимость фазы спектральных отсчетов от номеров отсчетов
Измерение скорости расчетов при вычислении ДПФ
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%, и восстановленный сигнал представляет собой константу (с другими исходными данными могло быть иначе).
Сравнивая скорости работы для ДПФ по прямой формуле и с использованием БПФ, можно сделать вывод, что выигрыш в скорости огромен и увеличивается с ростом числа отсчётов сигнала (размерности матрицы ДПФ).
