Изучение дискретного преобразования Фурье и его свойств. Вариант 2

Страницы работы

Содержание работы

     Министерство образования и науки РФ

Новосибирский Государственный Технический Университет

Кафедра Систем Сбора и Обработки Данных



Дисциплина  «Теория  и  обработка  сигналов»,     5 - й семестр

Отчет

ПО ЛАБОРАТОРНОЙ  РАБОТЕ  № 4

«ДИСКРЕТНОЕ И БЫСТРОЕ ПРЕОБРАЗОВАНИЯ ФУРЬЕ»

Факультет: АВТ

Группа: АТ-33

Вариант: 2

Студент: Швецов А. В.                  Преподаватель: доц. Щетинин Ю.И.

Новосибирск, 2005


Цель работы:Изучение дискретного преобразования Фурье и его свойств, алгоритмов быстрого преобразования Фурье. Приобретение практических навыков вычисления и использования дискретного преобразования Фурье в среде Matlab.

2.  Использование  функции dftsum() для вычисления ДПФ следующих сигналов

а)   для  N = 10.

б)  x(n) = 1 для N = 10,

в)  x(n) = cos(2πn/10) для  N = 10.

Листинг файл-функции dftsum.m

function X=dftsum(x)    % определение функции dftsum(x)

N=length(x);            % вычисление количества точек, для  исходного сигнала  x

for n=0:N-1

    for k=0:N-1

       R(k+1)=x(k+1).*exp(-2*j*pi.*n.*k./N);        % формула для вычисления ДПФ

    end

    X(n+1)=sum(R);

end

Листинг Script-файла p2.m

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

T=10;

t= -T/2:T/2-1;         %определение временного интервала для пункта А и Б

%для единичного импульса

for i=1:1:10           %определение сигнала

    if  t(i)==0,

        d1(i)=1;

    else

        d1(i)=0;

    end

end

y=dftsum(d1);  % вычисление  ДПФ

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

figure(1)

subplot(211)

stem(t,d1)

title('Сигнал')

subplot(212), stem(t, abs(y)),title('Амплитудный спектр')

%для единично-ступенчатый сигнал

d2=1+t*0;               %определение сигнала

y=dftsum(d2); y=fftshift(y);        % вычисление и сдвиг ДПФ

      %Построение графиков сигнала и его спектров

figure(2),

subplot(211), stem(t,d2)

subplot(212), stem(t, abs(y)),title('Амплитудный спектр')

%для косинуса

t=0:9

d3=cos(2*pi*t/10);      %определение сигнала

y=dftsum(d3); y1p=fftshift(y);      % вычисление и сдвиг ДПФ

      % Построение графиков сигнала и его спектров

figure(3),

subplot(211), stem(t, d3)

subplot(212), stem(t, abs(y1p)),title('Амплитудный спектр')


Рис.1.  График

 и его амплитудный спектр для N=10

Рис.2.  График x(n) = 1 и его амплитудный спектр для N=10

Рис.3.  График функции x(n) = cos(2πn/10) и ее амплитудный спектр для N=10.

Комментарии:

·  функция dftsum() вычисляет по следующему выражению

·  Из рисунков 1 и 2 видно, что чем уже импульс, тем шире спектр и наоборот.


3.  Использование функции idftsum(X) для вычисления обратного ДПФ  вышеприведенных сигналов.

Листинг функции idftsum(X) (фаил idftsum.m)

function Y=idftsum(x);% определение функции idftsum(x)

N=length(x);                  % вычисление размера вектора  x

for n=0:N-1;

   for k=0:N-1;

      Yk(k+1)=x(k+1)*exp(j*2*pi*k*n./N); % формула для вычисления ОДПФ

end

   Y(n+1)=abs(sum(Yk)/N);

end

Листинг Script-файла р3.т

%Построение графиков сигналов, их амплитудных спектров и ОДПФ

T=10;

t=-T/2:T/2-1;                 %определение временного интервала для пункта А и Б

%для единичного импульса

for i=1:1:10                  %определение сигнала

    if  t(i)==0,

        d1(i)=1;

    else

        d1(i)=0;

    end

end

y=dftsum(d1);                   %вычисление  ДПФ

x=idftsum(y)                    %вычисление  ОДПФ

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

figure(1)

subplot(311), stem(t,d1), title('Сигнал')

subplot(312), stem(t,abs(y)),title('Амплитудный спектр')

subplot(313), stem(t, x), title ('ОДПФ сигнала')

%для единичной функции

d2=1+t*0;                       %определение сигнала

y=dftsum(d2); y=fftshift(y);    %вычисление и сдвиг ДПФ

x=idftsum(y)                    %вычисление  ОДПФ

        %Построение графиков сигнала и его спектров

figure(2),

subplot(311), stem(t,d2), title('Сигнал')

subplot(312), stem(t,abs(y)),title('Амплитудный спектр')

subplot(313), stem(t, x), title ('ОДПФ сигнала')

%для косинуса

t=0:9

d3=cos(2*pi*t/10);              %определение сигнала

y=dftsum(d3); y=fftshift(y);    % вычисление и сдвиг ДПФ

x=idftsum(y)                    % вычисление  ОДПФ

        %Построение графиков сигнала и его спектров

figure(3),

subplot(311), stem(t, d3), title('Сигнал')

subplot(312), stem(t, abs(y)),title('Амплитудный спектр')

subplot(313), stem(t, x), title ('ОДПФ сигнала')

Рис.4.  График сигнала, его амплитудного спектра и его ОДПФ.

Рис5.  График сигнала, его амплитудного спектра и его ОДПФ.

Рис6.  График сигнала, его амплитудного спектра и его ОДПФ.

Комментарии:

·  Функция idftsum(X), для вычисления обратного (инверсного) ДПФ, основана на следующей формуле:

                       ,                  (2)

где XN-точечный вектор ДПФ, x – вектор сигнала во временной области.

·  Из графиков (рис.4, рис.5, рис.6 ) видно, что функция idftsum абсолютно точно переводит сигнал из частотной области во временную.


4.  Вычисление с помощью функции dftsum(x)  ДПФ случайной последовательности  длиной 503 точки.

Листинг Script-файла файл р4.т

%Вычисление с помощью функции dftsum(x) ДПФ случайной

%последовательности  длиной 503 точки.

%Определение времени вычисления ДПФ.

t=0:0.001:0.502;

% Формирование случайной последовательности

x=2*randn(size(t));

t1=cputime;       % Начало времени вычисления ДПФ

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

t2=cputime - t1   % Конец времени вычисления

% Построение графиков во временной и частотной области

subplot(211), plot(t,x)

axis([0 0.502 -10 10])

subplot(212), plot(abs(y))

axis([0 502 0 150])

Рис.7.  График случайного распределения и его амплитудный спектр

Время вычисления составило:

t2 =

    0.7210 с 


5.  Вычисление ДПФ случайной последовательности длиной 503 точки с помощью встроенной в Matlab функции fft(). Определение времени вычисления  ДПФ.

Листинг Script-файла p5.m

%Вычисление ДПФ случайной последовательности длиной 503 точки с помощью

%встроенной в Matlab функции fft().

%Определение времени вычисления  ДПФ.

t=0:0.001:0.502;

% Формирование случайной последовательности

x=2*randn(size(t));

t1=cputime;     % Начало времени вычисления ДПФ

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

t2=cputime - t1 % Конец времени вычисления

% Построение графиков во временной и частотной области

subplot(211), plot(t,x)

axis([0 0.502 -10 10])

subplot(212), plot(abs(y))

axis([0 502 0 150])

Рис.8.  График случайного распределения и его амплитудный спектр.

Время вычисления составило:

t2 =

0.01999999999998

Комментарии:

Похожие материалы

Информация о работе