Міністерство освіти Республіки Білорусь
Білоруський державний університет інформатики і радіоелектроніки
Кафедра Електронних обчислювальних засобів
Звіт з лабораторної роботи
"Дискретне перетворення Фур'є"
Виконала:
Студентка гр. 610701
Липко Ю.А.
Перевірив: Родіонов М. М.
Мінськ 2009
1. Мета роботи
Програмування дискретного перетворення Фур'є в пакеті Matlab. Вивчення властивостей ДПФ.
2 Виконання завдань.
Завдання 1-2
Розробіть функцію DFT, яка обчислює ДПФ від вхідного вектора, не використовуючи функцію Matlab FFT, і рісующую графіки дійсної та уявної частин вхідного вектора і результату перетворення, а також амплітудний спектр.
clear all;
close all;
clc;
n = 0:99;
k = (2 * pi / length (n)) .* n
s = (n> = 0) & (n <= 9);
figure (1);
subplot (221);
stem (n, real (s), 'x');
title ('Re (s (n ))');
subplot (222);
stem (n, imag ((s)), 'x');
title ('Im (s (n ))');
subplot (223);
stem (k, abs (dft (s)), 'x');
xlabel ('\ omega');
title ('| S (k )|');
subplot (224);
stem (k, abs (dft (s)), 'x');
title ('| S (k) | cherez fft');
xlabel ('\ omega');
Малюнок 1 - Реальна й уявна частина вхідного вектора, амплітудний спектр.
Завдання 3
Дослідіть властивості симетрії ДПФ при наступних вхідних сигналах: дійсному; уявний; дійсному парному; уявний парному; дійсному непарній; дійсному симетричному парному. Довжину вхідного вектора оберіть у відповідності з варіантом 2: N = 35.
clear all;
%% 3 zadanie
N = 35;
n = 0:2 * pi / N: 2 * pi;
figure;
subplot (311);
x = sin (n) + cos (n);% дійсний вхідний сигнал
plot (n, x, 'x');
title ('real signal');
xlabel ('n');
ylabel ('Re (x)');
subplot (312);
plot (n, real (fft (x)));
title ('real part of real signal');
xlabel ('n');
ylabel ('Re (x)');
subplot (313);
plot (n, imag (fft (x)));
title ('image part of real signal')
xlabel ('n');
ylabel ('Im (x)');
Рисунок 2 - Real, image частина дійсного вхідного сигналу
figure;
subplot (311);
x = j * (sin (n) + cos (n));% уявний вхідний сигнал
plot (n, imag (x), 'x');
title ('image signal')
xlabel ('n');
ylabel ('Im (x)');
subplot (312);
plot (n, real (fft (x)));
title ('real part of image signal');
xlabel ('n');
ylabel ('re of Im (x)');
subplot (313);
plot (n, imag (fft (x)));
title ('image part of image signal');
xlabel ('n');
ylabel ('Im of Im (x)');
Рисунок 3 - Real, image частина уявного вхідного сигналу
figure;
subplot (311);
x = cos (n);% дійсний парний сигнал
plot (n, x, 'x');
title ('real even signal');
xlabel ('n');
ylabel ('Re (s)');
subplot (312);
plot (n, real (fft (x)));
title ('real part of real even signal');
xlabel ('n');
ylabel ('Re of Re (x)');
subplot (313);
plot (n, imag (fft (x)));
title ('Image part of real even signal');
xlabel ('n');
ylabel ('Im of Re (s)');
Рисунок 4 - Real, image частина дійсного парного вхідного сигналу
figure;
subplot (311);
x = j * cos (n);% уявний парний сигнал
plot (n, imag (x), 'x')
title ('image even signal');
xlabel ('n');
ylabel ('Even Im (x)');
subplot (312);
plot (n, real (fft (x)));
title ('real part of image even signal');
xlabel ('n');
ylabel ('Re of Even Im (x)');
subplot (313);
plot (n, imag (fft (x)));
title ('Image part of image even signal');
xlabel ('n');
ylabel ('Im of Even Im (x)');
Малюнок 5 - Real, image частина уявного парного вхідного сигналу
figure;
subplot (311);
x = sin (n);% дійсний непарний сигнал
plot (n, x, 'x');
title ('real odd signal')
xlabel ('n');
ylabel ('Re odd (x)');
subplot (312);
plot (n, real (fft (x)));
title ('real part of real odd signal');
xlabel ('n');
ylabel ('Re of Re (x)');
subplot (313);
plot (n, imag (fft (x)));
title ('image part of real odd signal')
xlabel ('n');
ylabel ('Im of Re (s)');
Малюнок 6 - Real, image частина уявного непарного вхідного сигналу
figure;
subplot (311);
n =-N / 2: N / 2;
x = n. ^ 2;% дійсний симетричний сигнал
plot (n, x, 'x');
title ('real symmetrical signal');
xlabel ('n');
ylabel ('Re (x)');
subplot (312);
plot (n, real (fft (x)));
title ('real part of real symmetrical signal');
xlabel ('n');
ylabel ('Re of Re (x)');
subplot (313);
plot (n, imag (fft (x)));
title ('Image part of real symmetrical signal');
xlabel ('n');
ylabel ('Im Of Re (x)');
Малюнок 7 - Real, image частина дійсного симетричного вхідного сигналу
Завдання 4
Розробіть функцію, що дозволяє з допомогою ДПФ формувати вектор, що містить ціле число періодів заданої функції. Довжину вихідного вектора, число періодів і функцію оберіть у відповідності з варіантом 2: функція = - cos (x), довжина 90, число періодів 4.
function [x] = cosinus (leng, period);
% Генерація функції-cos (x) довжиною leng і числом періодів period
X = zeros (1, leng);% инициализируем нулями наш Фур'є образ
X (period +1) = (leng-1) / 2;%
X (leng-period + 1) = (leng-1) / 2;
x = ifft (X);
figure;
Period = 4;
LengV = 90;
stem (cosinus (LengV, Period));
title ('Function-cos (x)');
Рисунок 8 - Перетворення Фур'є функції-cos (x)
Завдання 5
Розробіть функцію, яка обчислює ДПФ для двох дійсних векторів однієї довжини за допомогою одноразового виклику функції Matlab FFT. Продемонструйте її роботу.
%% 5 zadanie
N = 40;
n = 0: N -1;
k = (2 * pi / length (n)) .* n
x1 = cos (k);
x2 = sin (k);
x = real (x1) + j * real (x2);
y = fft (x);
y (N + 1) = y (1);
for k = 1: N +1
re1 (k) = 0.5 * (real (y (k)) + real (y (N - k + 2)));
im1 (k) = 0.5 * (imag (y (k)) - imag (y (N - k + 2)));
re2 (k) = 0.5 * (imag (y (k)) + imag (y (N - k + 2)));
im2 (k) = 0.5 * (real (y (N - k + 2)) - real (y (k)));
end;
y1 = re1 + j * im1;
y2 = re2 + j * im2;
subplot (221);
stem (0: N, real (y1));
title ('real y1');
subplot (222);
stem (0: N, imag (y1));
title ('imag y1');
subplot (223);
stem (0: N, real (y2));
title ('real y2');
subplot (224);
stem (0: N, imag (y2));
title ('imag y2');
Рисунок 9 - ДПФ для двох дійсних векторів х1 і х2
Висновок по роботі
При виконанні лабораторної роботи ми ознайомились з дискретним перетворенням Фур'є, його властивостями і реалізацією. У ході роботи були досліджені властивості ДПФ при різних вхідних сигналах, застосовано зворотне перетворення Фур'є при генерації періодичної функції косинуса, а також показана можливість обчислення ДПФ двох дійсних векторів однакової довжини, за допомогою одноразового виклику функції ДПФ.