Контрольная работа по предмету "Информатика, программирование"


Дискретное преобразование Фурье

Министерство образования Республики Беларусь


Белорусский государственный университет информатики и радиоэлектроники


Кафедра Электронных вычислительных средств


Отчет по лабораторной работе


"Дискретное преобразование Фурье"


Выполнила:


Студентка гр. 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



Вывод по работе


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



Не сдавайте скачаную работу преподавателю!
Данную контрольную работу Вы можете использовать для выполнения своих заданий.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :