Главная страница
Навигация по странице:

  • Основные теоретические сведения

  • Свойства ДПФ.

  • Линейность.

  • Задержка.

  • Симметрия.

  • Круговая свертка

  • Равенство Парсеваля. Дискретный

  • Измерение скорости расчетов при вычислении ДПФ по теоретической формуле и быстрого алгоритма.

  • Вывод

  • Цос 3 лаба. 3_7106_ЗлобинаНИ (3). Дискретное преобразование Фурье


    Скачать 0.57 Mb.
    НазваниеДискретное преобразование Фурье
    АнкорЦос 3 лаба
    Дата02.06.2020
    Размер0.57 Mb.
    Формат файлаdocx
    Имя файла3_7106_ЗлобинаНИ (3).docx
    ТипОтчет
    #127440

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

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

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

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

    Кафедра ТОР

    отчет

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

    по дисциплине «ЦОС»

    Тема: «Дискретное преобразование Фурье»

    Студентка гр. 7106




    Злобина Н.И.

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




    Климентьев В.П.


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

    2020

    Цели работы:

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

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

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

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

    Дискретное преобразование Фурье — это разновидность преобразования Фурье, специально предназначенная для анализа дискретных сигналов конечной длительности. При этом данное преобразование определено для периодически продолженного сигнала конечной длительности x(k), k = 0, …, N−1:

    x(k + N) = x(k) для любого k . (1)

    Поскольку сигнал (1) является дискретным, его спектр должен быть периодическим с периодом 2π/T, где T — период дискретизации. Так как этот сигнал является также и периодическим, его спектр должен быть дискретным с расстоянием между гармониками, равным 2π/(NT). Далее, если не оговорено иное, предполагается, что период дискретизации равен 1 с. Прямое и обратное ДПФ рассчитываются по следующим формулам:
    (2)

    Свойства ДПФ.

    В целом свойства ДПФ аналогичны свойствам непрерывного преобразования Фурье, однако дискретный характер анализируемого сигнала привносит некоторую специфику. Линейность. ДПФ, согласно определению (2), является линейной комбинацией отсчетов последовательности, поэтому оно подчиняется принципу суперпозиции:



    Задержка. При задержке сигнала на ∆k отсчетов амплитудный спектр не меняется, а фазовый спектр приобретает дополнительное слагаемое, линейно зависящее от номера гармоники и от значения ∆k:



    Симметрия. ДПФ вещественного сигнала обладает свойством симметрии:



    Круговая свертка. Круговой свертке периодических последовательностей соответствует произведение их спектров:



    Равенство Парсеваля. Дискретный аналог равенства Парсеваля записывается следующим образом:



    Листинг:

    %Исходные параметры

    U = [0 9 9 -8]; %

    k = [4.5 -4.25]; %

    b = [0 17.5];

    T1=2;

    T2=6;

    Fd = 6; % Частота дискретизации, Гц

    Td = 1/Fd; % Интервал дискретизации

    t=0:Td:T1;

    x(1:13)=k(1)*t(1:13);

    t=0:Td:T2;

    x(14:37)=k(2)*t(14:37)+b(2);

    x = [x zeros(1, length(x))];
    %---Расчёт ДПФ---

    figure

    subplot(2, 1, 1);

    spectrum = fft(x); % Вычисление ДПФ

    f = (-37:1:37);

    stem(f,abs([spectrum(38:end) spectrum(1:38)])); % АС

    title('Амплитудный спектр сигнала')

    xlabel('Отсчеты, k');

    ylabel('В*с');

    grid on

    subplot(2, 1, 2);

    stem(f,angle([spectrum(37:end) spectrum(1:37)])); % ФС

    title('Фазовый спектр сигнала')

    xlabel('Осчеты, k');

    ylabel('w, рад');
    %---Вычисляем энергию спектра исходного сигнала---

    Energy = 0;

    for k = 1:length(x) % Итеративное вычисление энергии

    temp = abs(x(k))^2;

    Energy = Energy + temp;

    end

    copy_spectrum = spectrum;

    k = length(copy_spectrum) - ((length(copy_spectrum)-2)/2);

    m = k;

    N = 3; % Экспериментально подобранное значение при котором E = 91.3626%

    for i = 0:((length(copy_spectrum)-2)/2) - N % В этом цикле обнуляем гармоники, которые больше, чем N

    copy_spectrum(k) = 0;

    copy_spectrum(m) = 0;

    k = k + 1;

    m = m - 1;

    end

    figure

    stem(f, abs([copy_spectrum(38:end) copy_spectrum(1:38)])); % АС

    title('Амплитудный спектр сигнала после обнуления гармоник')

    grid on

    xlabel('Отсчеты, k');

    ylabel('В*с');

    x_inv = ifft(copy_spectrum);
    %---График исходного сигнала---

    figure

    subplot(2,1,1);

    plot(x(1:37));

    hold on;

    stem(x(1:37));

    title('Исходный сигнал');

    xlabel('Осчеты, k');

    ylabel('s(t), B');

    %---График восстановленного сигнала---

    subplot(2,1,2);

    stem(x_inv(1:37));

    hold on;

    stem(x(1:37));

    title('Исходный и восстановленный сигнал')

    xlabel('Отсчеты, k');

    ylabel('s(t), В');

    legend('Восстановленный с','Исходный с');
    %--------

    Energy_inv = 0;

    for k = 1:length(x) % Итеративное

    temp = abs(x_inv(k))^2; % вычисление

    Energy_inv = Energy_inv + temp; % энергии

    end

    disp( [num2str((Energy_inv/Energy)*100) , '%'] )
    %-----

    x_copy = [x zeros(1,length(x))]; % Дополняем нулями сигнал
    %---Расчёт ДПФ---

    figure

    subplot(2, 1, 1);

    spectrum_x_copy = fft(x_copy); % Вычисление ДПФ дополненного сигнала

    f = (-74:1:74); % Ось отсчётов для графика

    stem(f,abs([spectrum_x_copy(75:end) spectrum_x_copy(1:75)])); %АC

    title('Амплитудный спектр дополненного нулями сигнала')

    xlabel('Отсчеты, k');

    ylabel('В*с');

    subplot(2, 1, 2);

    stem(f,angle([spectrum_x_copy(75:end) spectrum_x_copy(1:75)]));% ФС

    title('Фазовый спектр дополненного нулями сигнала')

    xlabel('Отсчеты, k');

    ylabel('w, рад');
    %---Измерение скорости расчетов при вычислении ДПФ---

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

    % дополнение сигнала нулями до длины N

    x_test = [x zeros(1, N-length(x))];

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

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

    time_array = zeros(1,3);

    for iterations = 1:3

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

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

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

    end

    time_array(iterations) = toc;% сохранение измеренного времени в массиве

    end

    % Вывод усредненного результата

    disp( [num2str((sum(time_array)*1000)/5) ' мкс.'])
    %---Измерение скорости с использованием быстрого алгоритма---

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

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

    time_array = zeros(1, 6);

    for iterations = 1:6

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

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

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

    end

    time_array(iterations) = toc;

    end

    % Вывод усредненного результата

    disp( [num2str((sum(time_array)*10)/10) 'мкс.'])

    Количество гармоник Nmax= 3. При таком количестве гармоник, энергия сигнала равна 91.3626%. Ширина спектра f=Nmax* Fд/N=3*6000/37 =486.48 Гц.






    Измерение скорости расчетов при вычислении ДПФ по теоретической формуле и быстрого алгоритма.
    K=700


    Параметр

    N

    64

    128

    256

    512

    1024

    2048

    4096

    8192

    Время выполнения цикла, с

    0.004

    0.0152

    0.0838

    0.3822

    1.5612

    8.4549

    62.0290

    244.2199

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

    2.8

    10.6

    58.7

    267.6

    1052.2

    5918.5

    43420.3

    170953.9


    К=90000


    Параметр

    N

    64

    128

    256

    512

    1024

    2048

    4096

    8192

    Время выполнения цикла, с

    0.175

    0.1756

    0.2706

    0.3752

    0.7199

    2.19

    4.2792

    7.3627

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

    1.7

    1,8

    2.7

    3,8

    7.2

    21.9

    42.8

    73.6


    Значение k1 = 0.00136 мкс/ед^2

    Значение k2 = 0.00156 мкс/ед^2
    Вывод: В ходе выполнения лабораторной работы мы познакомились с методом дискретного преобразования Фурье. Получили АС и ФС нашего сигнала с помощью быстрого преобразования Фурье. Вычислили скорость вычисления спектра с помощью прямого и быстрого метода расчёта ДПФ. Выяснили, что, используя количество отсчётов равного степени двойки можно на порядок увеличить скорость преобразования ДПФ (За счёт использования алгоритма Кули-Тьюки).



    Причиной растекания спектра является именно периодическое продолжение анализируемого сигнала. Спектр одиночного фрагмента дискретной синусоиды является периодической непрерывной функцией частоты. Эта функция имеет лепестковую структуру. Однако дискретный ряд частот , на которых вычисляется ДПФ, может быть по-разному расположен относительно лепестков спектральной функции.

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

    Таким образом, дополнение сигнала нулями позволяет более подробно рассмотреть структуру спектра непериодической последовательности отсчетов.

    Td=10^-4;

    N=400;

    t=0:Td:N*Td;

    s=sin(500*t*2*pi)+sin(525*t*2*pi);

    subplot (2,2,1);

    stem(t,s);

    y=fft(s, N);

    Mod_s=abs(y);

    subplot(2,2,2);

    stem(Mod_s);

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

    subplot(2,2,3);

    stem(s1);

    s1=fft(s1);

    Mod_s1=abs(s1);

    subplot(2,2,4);

    stem(Mod_s1);



    написать администратору сайта