Professional Documents
Culture Documents
КН-403 Кочут ОЦОС ЛР 2
КН-403 Кочут ОЦОС ЛР 2
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
«ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Інститут ІКНІ
Кафедра автоматизовані системи управління
ЛАБОРАТОРНА РОБОТА №2
З курсу «Основи цифрової обробки сигналів»
«Перетворення Фур’є і його застосування у ЦОС»
Виконав:
Кочут Максим
гр. КН-403
Прийняв:
Опотяк Ю.В.
Львів-2022
Лабораторна робота №2
Перетворення Фур’є і його застосування у ЦОС
Мета: ознайомитись з генерацією і обробкою сигналів у частотній
області з використанням пакету MATLAB; навчитись генерувати сигнали,
створювати їх графіки; відпрацювати принципи використання прямого і
зворотного перетворення Фур’є у пакеті MATLAB на рівні, достатньому для
практичного використання; провести моделювання і проаналізувати результати
виконання у пакеті MATLAB.
Теоретичні відомості
MATLAB – пакет прикладних програм символьної математики, статистики,
оптимізації, аналізу і синтезу та обробки сигналів, зображень тощо. Для виконання
лабораторних можна використовувати безкоштовну он-лайн версію пакету від розробника
MathWorks, яка знаходиться за посиланням https://matlab.mathworks.com/. Перед
використанням достатньо зареєструватися, використовуючи адресу власної електронної
пошти.
Спектральний аналіз – це один із методів обробки сигналів, який дозволяє оцінити
частотний склад сигналу.
Математичною основою спектрального аналізу є ряд Фур’є та перетворення Фур’є,
що пов’язують відображення сигналу в часовій та частотній області.
Будь-який дійсний, безперервний, періодичний сигнал, заданий на інтервалі можна
подати рядом Фур’є.
Інформація про процеси і сигнали може передаватися функціями часу x(t ) або
частотним спектром X ( f ) . Зв'язок між X ( f ) і x(t ) визначається перетворенням Фур'є
∞
X(f )=∫−∞ x(t) e − j2π ft
dt (1)
Вираз (1) дозволяє визначити частотний склад практично будь-якого сигналу x(t ) ,
використовуваного на практиці, і відкриває широкі можливості для аналізу сигналів та ЦОС.
З появою цифрової техніки, широке поширення набуло дискретне перетворення Фур'є
n=0 . (2)
Існує і зворотне перетворення Фур'є. Перехід від дискретного спектру до часових
відліків описується наступною формулою:
N−1
1
x(n)=
N
∑ X (n) e
j 2 π nm/N
n=0 . (3)
Вираз (3) визначає зворотне дискретне перетворення Фур'є (ЗДПФ) і відрізняється від
виразу (2) (ДПФ) лише знаком у показнику комплексної експоненти і наявністю множника
1/N . У розміщенні множника 1/N немає повної єдності. У більшості джерел (у тому числі і
в пакеті MatLab) множник фігурує у формулі ЗДПФ. Водночас є роботи, в яких цей множник
стоїть у формулі прямого ДПФ. Існують пакети програм, в яких використовується множник
1/ √ N , який стоїть перед визначеннями підсумовування у формі прямого і зворотного
ДПФ.
Рівняння (2) – це основний запис ДПФ в технічній літературі. Однак для реалізації
ДПФ, особливо на початковому етапі, доцільно перейти до тригонометричної форми ДПФ
N −1
X (m)= ∑ x (n)[cos (2 π nm/N − j sin 2 π nm/ N ).
n=0 (4)
Перехід від (2) до (4) здійснено на підставі тотожності Ейлера
e− jφ =cos φ− jsin φ
.
Вираз (4) дозволяє комплексну експоненту у (2) представити у вигляді дійсної та
уявної частини, де:
X (m) – m -й компонент ДПФ, тобто X (0) , X (1) , X (2) і т.д.
m – індекс ДПФ в частотній області, m = 0,1,2,3,4 ...., N-1.
Завдання 2
Виконати фільтрацію сигналу з Завдання 1 у частотній області з використанням
перетворень Фур’є. Рівень шуму наведено у табл.1.
Завдання 3
Згенерувати сигнал типу меандр з параметрами варіантів у табл. 2. Виконати його
перетворення у частотну область. В отриманому спектрі відкинути усі гармоніки, вище
заданих у табл. 2. Здійснити перетворення у часову область. Пояснити отримані результати.
У звіті навести текст скрипту MatLab та скріншоти отриманих графіків, а саме: вхідного
сигналу, його спектру, спектру сигналу після відкидання гармонік, вихідного сигналу після
обробки.
Частота, Амплітуда, Кількість Кількість
Частота дискретизації,
№ Початкова фаза відліків, гармонік,
Fs
F1, A1, Ph1 N G
9 400, 0.3, 0 4000 200 4
Виконання завдання
Завдання 1-2
t = (0:N-1)/Fs;
signal = (A1*sin(F1*t+Ph1))+(A2*sin(F2*t+Ph2));
freq=(0:N/2-1)*Fs/N;
% Spectrum
spectrum = fft(signal, N); spectrum_norm = getSpectrum(signal, N);
subplot(2, 1, 2);
bar(freq,abs(spectrum_norm(1:N/2)));
title('Спектр вхідного сигналу'); xlabel('Частота'); ylabel('Амплітуда');
% -- Фільтрація --
filter = 1000; lim = filter*N/Fs;
filtered_spectrum = spectrum;
for i=lim:N/2
filtered_spectrum(i)=0;
filtered_spectrum(N-i)=0;
end
% Нормалізація
for i=1:N
spectrum_norm(i)=2*filtered_spectrum(i)/N;
end
spectrum_norm(1)=spectrum_norm(1)/2;
sf2 = ifft(spectrum_norm);
subplot(2, 2, 2); plot(t, sf2(:, 1));
grid on; title("Сигнал після фільтрації"); xlabel("Час"); ylabel("Амплітуда");
Завдання 3
t = (0:N-1)/Fs;
freq=(0:N/2-1)*Fs/N;
% Створення графіків
figure("Name", "Завдання 3 (Графіки створив студент групи Кочут Максим (гр.КН-403)");
subplot(4,1,1);
plot(t, meandr);
grid on; title("Згенерований сигнал типу маендр"); xlabel("Час"); ylabel("Амплітуда");
subplot(4,1,2);
bar(freq,abs(spectrum(1:N/2)));
grid on; title("Спектр згенерованого сигналу"); xlabel("Частота"); ylabel("Амплітуда");
for i=filtering_harm:N
filtered_spectrum(i)=0;
end
% Відфільтрований спектр
subplot(4,1,3);
bar(freq,abs(filtered_spectrum(1:N/2)));
grid on; title("Спектр сигналу після фільтрації гармонік"); xlabel("Частота");
ylabel("Амплітуда");
spectrum_norm = spectrum;
% Нормалізація
for i=1:N
spectrum_norm(i)=2*filtered_spectrum(i)/N;
end
spectrum_norm(1)=spectrum_norm(1)/2;
sf2 = ifft(spectrum_norm);
subplot(4, 1, 4);
plot(t, sf2(:, 1));
grid on; title("Згенерований сигнал після фільтрації гармонік"); xlabel("Час");
ylabel("Амплітуда");