Министерство образования и науки РФ
Новосибирский Государственный Технический Университет
Кафедра Систем Сбора и Обработки Данных
Дисциплина «Теория и обработка сигналов», 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)
где X – N-точечный вектор ДПФ, 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
Комментарии:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.