Дискретное преобразование Фурье
Дискретное преобразование Фурье
2 Министерство образования Республики Беларусь Белорусский государственный университет информатики и радиоэлектроники Кафедра Электронных вычислительных средств Отчет по лабораторной работе "Дискретное преобразование Фурье" Выполнила: Студентка гр. 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 Вывод по работе При выполнении лабораторной работы мы ознакомились с дискретным преобразованием Фурье, его свойствами и реализацией. В ходе работы были исследованы свойства ДПФ при различных входных сигналах, применено обратное преобразование Фурье при генерации периодической функции косинуса, а также показана возможность вычисления ДПФ двух действительных векторов одинаковой длинны , с помощью однократного вызова функции ДПФ.
|