Практическо приложение на преобразуването на Фурие за анализ на сигнали. Въведение за начинаещи

Вярвам, че всичко в общи линиизнаят за съществуването на такъв прекрасен математически инструмент като преобразуването на Фурие. В университетите обаче по някаква причина се преподава толкова зле, че относително малко хора разбират как работи тази трансформация и как трябва да се използва правилно. Междувременно математиката на тази трансформация е изненадващо красива, проста и елегантна. Каня всички да научат малко повече за преобразуването на Фурие и свързаната тема за това как аналоговите сигнали могат да бъдат ефективно преобразувани в цифрови за изчислителна обработка.

Без да използвам сложни формули и matlab, ще се опитам да отговоря на следните въпроси:

  • FT, DTF, DTFT - какви са разликите и как привидно напълно различни формули дават толкова концептуално сходни резултати?
  • Как да интерпретирате правилно резултатите от бързата трансформация на Фурие (FFT).
  • Какво да направите, ако е даден сигнал от 179 проби и FFT изисква последователност с дължина, равна на степен две като вход
  • Защо, когато се опитвате да получите спектъра на синусоида с помощта на Фурие, вместо очакваната единична „пръчка“, на графиката излиза странно извиване и какво може да се направи по въпроса
  • Защо аналоговите филтри се поставят преди ADC и след DAC
  • Възможно ли е да се цифровизира ADC сигнал с честота, по-висока от половината от честотата на дискретизация (училищният отговор е неправилен, верният отговор е възможен)
  • Как цифровата последователност възстановява оригиналния сигнал

Ще изхождам от предположението, че читателят разбира какво е интеграл, комплексно число (както и неговия модул и аргумент), конволюция на функции, плюс поне „на пръсти“ си представя какво е делта функцията на Дирак. Не знам - няма значение, прочетете горните връзки. Под „произведение на функции“ в този текст винаги ще имам предвид „точково умножение“

Вероятно трябва да започнем с факта, че обичайното преобразуване на Фурие е нещо, което, както може би се досещате от името, трансформира една функция в друга, тоест присвоява на всяка функция на реална променлива x (t) нейния спектър или изображение на Фурие y (w):

Ако дадем аналогии, тогава пример за трансформация, подобна по значение, може да бъде например диференциация, която превръща функция в нейна производна. Това означава, че преобразуването на Фурие всъщност е същата операция като вземането на производната и често се обозначава по подобен начин, начертавайки триъгълна „шапка“ върху функцията. Само за разлика от диференцирането, което може да се дефинира и за реални числа, преобразуването на Фурие винаги „работи“ с по-общи комплексни числа. Поради това постоянно възникват проблеми с показването на резултатите от тази трансформация, тъй като комплексните числа се определят не от една, а от две координати на графика, работеща с реални числа. Най-удобният начин, като правило, е да представите комплексни числа като модул и аргумент и да ги начертаете отделно като две отделни графики:

Графиката на аргумента на комплексна стойност често се нарича в този случай „фазов спектър“, а графиката на модула често се нарича „амплитуден спектър“. Амплитудният спектър, като правило, е от много по-голям интерес и затова "фазовата" част от спектъра често се пропуска. В тази статия ще се съсредоточим и върху „амплитудните“ неща, но не бива да забравяме за съществуването на липсващата фазова част от графиката. Освен това, вместо обичайния модул на комплексна стойност, често се чертае нейният логаритъм по 10. Резултатът е логаритмична графика, стойностите на която се показват в децибели (dB).

Моля, имайте предвид, че не много отрицателни числалогаритмична графика (-20 dB или по-малко) в същото време съответства на почти нула числана обикновена диаграма. Следователно дългите и широки „опашки“ от различни спектри на такива графики, когато се показват в „обикновени“ координати, като правило, практически изчезват. Удобството на такова на пръв поглед странно представяне произтича от факта, че преобразуванията на Фурие на различни функции често трябва да се умножават една с друга. При такова поточково умножение на изображения на Фурие с комплексни стойности техните фазови спектри се добавят и техните амплитудни спектри се умножават. Първият е лесен за изпълнение, докато вторият е сравнително труден. Логаритмите на амплитудата обаче се добавят при умножаване на амплитудите, така че графиките на логаритмичната амплитуда могат, подобно на фазовите графики, просто да се добавят точка по точка. Освен това в практическите задачи често е по-удобно да се работи не с "амплитудата" на сигнала, а с неговата "мощност" (квадрата на амплитудата). На логаритмичната скала и двете графики (както амплитудата, така и мощността) изглеждат идентични и се различават само по коефициента - всички стойности на графиката на мощността са точно два пъти по-големи от скалата на амплитудата. Съответно, за да начертаете честотното разпределение на мощността (в децибели), не можете да квадратирате нищо, а да изчислите десетичния логаритъм и да го умножите по 20.

Скучно ли ти е? Чакайте, още малко, със скучната част от статията, обясняваща как се интерпретират графики, скоро ще приключим :). Но преди това, едно много важно нещо, което трябва да разберете е, че въпреки че всички диаграми на спектъра по-горе са начертани за някои ограничени диапазони от стойности (по-специално положителни числа), всички тези графики всъщност продължават в плюс и минус безкрайност. Графиките просто изобразяват някаква „най-смислена“ част от графиката, която обикновено се отразява огледално отрицателни стойностипараметър и често се повтаря периодично с някаква стъпка, ако го разглеждаме в по-голям мащаб.

След като решихме какво е начертано на графиките, нека се върнем към самото преобразуване на Фурие и неговите свойства. Има няколко различни начиникак да дефинираме тази трансформация, различаваща се в малки детайли (различни нормализации). Например в нашите университети по някаква причина често използват нормализирането на преобразуването на Фурие, което определя спектъра по отношение на ъгловата честота (радиани в секунда). Ще използвам по-удобна западна формулировка, която определя спектъра по отношение на обичайната честота (херц). Директното и обратното преобразуване на Фурие в този случай се определят от формулите вляво и някои от свойствата на това преобразуване, от които се нуждаем, са списък от седем елемента вдясно:

Първото от тези свойства е линейността. Ако вземем някаква линейна комбинация от функции, тогава преобразуването на Фурие на тази комбинация ще бъде същата линейна комбинация от образите на Фурие на тези функции. Това свойство ви позволява да намалите сложни функциии техните преобразувания на Фурие към по-прости. Например преобразуването на Фурие на синусоидална функция с честота f и амплитуда a е комбинация от две делта функции, разположени в точки f и -f и с коефициент a/2:

Ако вземем функция, състояща се от сбора на набор от синусоиди с различни честоти, тогава, съгласно свойството за линейност, преобразуването на Фурие на тази функция ще се състои от съответния набор от делта функции. Това ни позволява да дадем наивна, но визуална интерпретация на спектъра според принципа „ако в спектъра на функция честотата f съответства на амплитудата a, тогава оригиналната функция може да бъде представена като сума от синусоиди, една от които ще е синусоида с честота f и амплитуда 2a”. Строго погледнато, това тълкуване е неправилно, тъй като делта функция и точка на графика са напълно различни неща, но както ще видим по-нататък, за дискретните преобразувания на Фурие няма да е толкова далеч от истината.

Второто свойство на преобразуването на Фурие е независимостта на амплитудния спектър от времевото изместване на сигнала. Ако преместим функцията наляво или надясно по оста x, тогава ще се промени само нейният фазов спектър.

Третото свойство - разтягане (компресия) на оригиналната функция по времевата ос (x) пропорционално компресира (разтяга) нейното преобразуване на Фурие по честотната скала (w). По-специално, спектърът на сигнал с ограничена продължителност винаги е безкрайно широк и обратно, спектърът с ограничена ширина винаги съответства на сигнал с неограничена продължителност.

Четвъртото и петото свойство са може би най-полезните от всички. Те позволяват да се сведе конволюцията на функциите до поточковото умножение на техните преобразувания на Фурие и обратното - поточковото умножение на функциите до свиването на техните преобразувания на Фурие. Малко по-нататък ще покажа колко е удобно.

Шестото свойство говори за симетрията на изображенията на Фурие. По-специално, от това свойство следва, че в преобразуването на Фурие на функция с реална стойност (т.е. всеки „реален“ сигнал), амплитудният спектър винаги е дори функция, а фазовият спектър (ако е намален до диапазона -pi...pi) е нечетен. Поради тази причина отрицателната част от спектъра почти никога не се рисува върху графиките на спектъра - за сигнали с реална стойност тя не предоставя никаква нова информация (но, повтарям, също не е нула).

И накрая, последното, седмо свойство, казва, че преобразуването на Фурие запазва „енергията“ на сигнала. Има смисъл само за сигнали с ограничена продължителност, чиято енергия е ограничена, и казва, че спектърът на такива сигнали в безкрайността бързо се доближава до нула. Именно поради това свойство, като правило, на графиките на спектъра се изобразява само „основната“ част от сигнала, която носи лъвския дял от енергията - останалата част от графиката просто клони към нула (но, отново , не е нула).

Въоръжени с тези 7 свойства, нека да разгледаме математиката на "дигитализиране" на сигнал, за да преведем непрекъснат сигнал в поредица от цифри. За да направим това, трябва да вземем функция, известна като „гребен на Дирак“:

Гребенът на Дирак е просто периодична последователност от единица делта функции, започваща от нула и продължаваща със стъпка T. За да се цифровизират сигналите, T се избира възможно най-малко, T<<1. Фурье-образ этой функции - тоже гребенка Дирака, только с гораздо большим шагом 1/T и несколько меньшим коэффициентом (1/T). С математической точки зрения, дискретизация сигнала по времени - это просто поточечное умножение исходного сигнала на гребенку Дирака. Значение 1/T при этом называют частотой дискретизации:

Вместо непрекъсната функция, след такова умножение се получава поредица от делта импулси с определена височина. В този случай, съгласно свойство 5 на преобразуването на Фурие, спектърът на резултантния дискретен сигнал е конволюцията на оригиналния спектър със съответния гребен на Дирак. Лесно е да се разбере, че въз основа на свойствата на конволюцията спектърът на оригиналния сигнал е, така да се каже, „копиран“ безкраен брой пъти по честотната ос със стъпка 1/T и след това се сумира .

Обърнете внимание, че ако оригиналният спектър имаше крайна ширина и ние използвахме достатъчно висока честота на дискретизация, тогава копията на оригиналния спектър няма да се припокриват и следователно няма да се добавят едно към друго. Лесно е да се разбере, че ще бъде лесно да се възстанови оригиналният спектър от такъв „сгънат“ спектър - ще бъде достатъчно просто да се вземе компонентът на спектъра в областта на нула, „отрязвайки“ допълнителните копия, които отиват до безкрайност. Най-простият начин да направите това е да умножите спектъра по правоъгълна функция, равна на T в диапазона -1/2T...1/2T и нула извън този диапазон. Подобно преобразуване на Фурие съответства на функцията sinc (Tx) и съгласно свойство 4, такова умножение е еквивалентно на свиване на оригиналната последователност от делта функции с функцията sinc (Tx)



Тоест, използвайки преобразуването на Фурие, получихме начин лесно да възстановим оригиналния сигнал от времево-семплиран, което работи при условие, че използваме семплираща честота, която е поне два пъти (поради наличието на отрицателни честоти в спектъра ) максималната честота, присъстваща в оригиналния сигнал. Този резултат е широко известен и се нарича теорема на Котелников / Шанън-Найкуист. Въпреки това, както е лесно да се види сега (разбирайки доказателството), този резултат, противно на широко разпространеното погрешно схващане, определя достатъчно, но не необходимоусловие за възстановяване на оригиналния сигнал. Всичко, от което се нуждаем, е да се уверим, че частта от спектъра, която ни интересува след вземане на проби от сигнала, не се припокрива една с друга и ако сигналът е достатъчно теснолентов (има малка „ширина“ на ненулевата част на спектър), тогава този резултат често може да бъде постигнат дори при честота на дискретизация, много по-ниска от два пъти максималната честота на сигнала. Тази техника се нарича „подсемплиране“ (подсемплиране, лентово семплиране) и се използва доста широко при обработката на всички видове радиосигнали. Например, ако вземем FM радио, работещо в честотната лента от 88 до 108 MHz, тогава за цифровизирането му може да се използва ADC с честота само 43,5 MHz вместо 216 MHz, приети от теоремата на Котелников. В този случай обаче ви трябва качествен АЦП и добър филтър.

Отбелязвам, че „дублирането“ на високи честоти с честоти от по-нисък ред (алиасинг) е пряко свойство на вземането на проби от сигнала, което необратимо „разваля“ резултата. Следователно, ако по принцип в сигнала могат да присъстват честоти от висок порядък (т.е. почти винаги), пред ADC се поставя аналогов филтър, който "отрязва" всичко излишно директно в оригиналния сигнал (тъй като ще бъде твърде късно да направите това след вземане на проби). Характеристиките на тези филтри, като аналогови устройства, не са идеални, така че някои сигнални „повреди“ все още възникват и на практика следва, че най-високите честоти в спектъра обикновено са ненадеждни. За да се смекчи този проблем, не е необичайно да се семплира сигналът със свръхсемплирана честота, докато аналоговият входен филтър се настройва на по-ниска честотна лента и се използва само долната част от теоретично наличния честотен диапазон на ADC.

Друго често срещано погрешно схващане, между другото, е, когато сигналът на изхода на DAC се изчертава на „стъпки“. „Стъпките“ съответстват на конволюцията на семплирана последователност от сигнали с правоъгълна функция с ширина T и височина 1:

При такава трансформация спектърът на сигнала се умножава по преобразуването на Фурие на тази правоъгълна функция и за подобна правоъгълна функция отново е sinc(w), толкова по-силно се „разтяга“, колкото по-малка е ширината на съответния правоъгълник. Спектърът на семплирания сигнал с подобен "DAC" се умножава точково по този спектър. В този случай ненужните високи честоти с „допълнителни копия“ на спектъра не са напълно отрязани, а горната част на „полезната“ част от спектъра, напротив, е отслабена.

На практика, разбира се, никой не прави това. Има много различни подходи за изграждане на DAC, но дори и в DAC с най-сходен тип претегляне, напротив, правоъгълните импулси в DAC се избират възможно най-кратки (доближаващи се до реална последователност от делта функции), за да се избегне ненужното потискане от полезната част от спектъра. „Допълнителните“ честоти в получения широколентов сигнал почти винаги се заглушават чрез преминаване на сигнала през аналогов нискочестотен филтър, така че няма „цифрови стъпки“ нито „вътре“ в преобразувателя, нито освен това на неговия изход.

Нека обаче се върнем към трансформацията на Фурие. Преобразуването на Фурие, описано по-горе, приложено към предварително взета поредица от сигнали, се нарича дискретно времево преобразуване на Фурие (DTFT). Спектърът, получен чрез такава трансформация, винаги е 1/T-периодичен, така че DTFT спектърът е напълно определен от неговите стойности в сегмента )