Scilab fft howto

Scilab fft howto
Scilab to świetne narzędzie do wielu zastosowań zarówno w pracy naukowej, jak i inżynierskiej. W tym artykule obejmie specjalny przypadek FFT, Fast Transformacja Fouriera.

Najpierw wyjaśnijmy, czym jest szybka transformacja Fouriera i dlaczego chcesz z niej korzystać. Matematyka dotyczy częstotliwości. Transformacja Fouriera jest metodą wyciągnięcia mniejszych fal w złożonej fali. To brzmiało złożone; Kiedy słuchasz muzyki, słyszysz wiele różnych nut od piosenkarza, instrumentów i tak dalej. Jako ludzie często sam słyszymy gitarę, ale staramy się wyróżnić ją technologią w nagraniu i wpadniesz w kłopoty. Współczesna technologia może to zrobić, dzięki różnym wcieleniu podstawowych równań Fouriera, które zostały opracowane przez lata. Nowoczesne zastosowania serii Fouriera to kompresja obrazu i wideo, skany GPS i MRI. Wszystko to stanowi przybliżenie źródła i używają serii Fouriera, aby zapisać pamięć i uzyskać szybsze wyniki.

Matematyk Jean-Baptiste Joseph Fourier faktycznie próbował rozwiązać równanie cieplne, aby umożliwić obliczenie, w jaki sposób ciepło propaguje się w materii stałej. To, co wymyślił, było o wiele bardziej przydatne, Evershough jego metody zostały później ulepszone do bardziej formalnej wersji. Równania są teraz używane w szerokim zakresie pól.

Aby wyróżnić określoną częstotliwość w złożonym sygnale. Matematyczne fundament tego wymaga praktyki. Khan Academy to miłe miejsce do nauki matematyki.

Kiedy musisz przeanalizować wszelkie fale, możesz użyć funkcji sinuso. Lub odwrotnie, możesz zrobić złożoną falę z kilku fal sinusoidalnych. To jest podstawowa idea matematyki.

Aby zrozumieć, że twoje Fouriera przekształca się lepiej, dobrą praktyką jest napisanie ich samodzielnie. W Scilab masz prosty język programowania zaprojektowany z naciskiem na matematykę.
Różne zadania, których potrzebujesz, transformacje Fouriera zaczynają się od znalezienia współczynników transformacji. Powodem jest to, że jest to używane do kompresji zdjęć i wielu innych procesów.

Kiedy uczysz się podstaw serii, pierwszą rzeczą, jaka jest używa. Równania są takie:

Kod ich rozwiązania jest dość prosty, zaczyna się od funkcji. Ta funkcja implementuje transforma Fouriera w małych kawałkach.
Aby zdefiniować funkcję, używasz oczywistej konstrukcji „funkcji”. Poniżej znajduje się seria Fouriera dla fali kwadratowej:

funkcja y =F(z)
y = 4*sin (t)/1*%pi + 4*sin (3*t)/3*%pi + 4*sin (5*t)/5*%pi + 4*sin (7*t) /7*%PI
+ 4*sin (9*t)/9*%pi
funkcja końcowa

Aby fala była jeszcze bardziej kwadratowa, w końcu jest to przybliżenie, musisz nadal zwiększać liczbę terminów. Kiedy chcesz odtworzyć wzór, powiedz kreskówkę, używasz transformacji Fouriera w bardzo podobny sposób. Musisz tylko uznać ten okres za nieskończone.

Proste prawo? Cóż, nie bez podstawowej wiedzy matematycznej. Wypróbuj kilka przykładów, używając Scilab.

Ten przykład pokazuje najprostszą możliwą kombinację sygnału; dwa sygnały o różnej częstotliwości.

// Wybierz rozmiar próbki
N = 100;
// Ustaw sekwencję, to tworzy tablicę
n = 0: n-1;
// Utwórz częstotliwość sygnałów
W1 = %PI/4
W2 = %PI/8
// wykonaj pobliskie sygnały
s1 = cos (w1*n); // Pierwszy składnik sygnału
s2 = cos (w2*n); // drugi składnik sygnału
// Połącz dwa w jeden sygnał
// W tym przypadku tworzymy prosty czysty sygnał.
f = s1 + s2;
// Oto wynikowy sygnał gotowy do transformacji.
Rysunek (0);
fabuła (f);
// Transforma Fouriera tego sygnału powinna pokazywać tylko częstotliwość komponentów.
F = fft (f);
F_abs = abs (f);
Rysunek (1);
wykres (n, f_abs);
Rysunek 2);
fabuła (f);

Użyj powyższego przykładu, aby ćwiczyć, jak działa transformacja. Upewnij się, że zmieniłeś go na filtrowanie na różne sposoby.

Wskazówka polega na użyciu konsoli scilab, aby zobaczyć, co zawierają zmienne na każdym etapie programu, w ten sposób można również zobaczyć, że „F” ma wyobrażoną zawartość. Spróbuj zmienić äfä w inny sposób, aby uzyskać bardziej prawidłowy wynik.

W przemyśle najczęstszym zastosowaniem transformacji Fouriera jest analiza sygnału. Aby odfiltrować częstotliwości z hałaśliwego sygnału, musisz zacząć od tworzenia lub importowania sygnału. Poniższy fragment kodu tworzy mieszany sygnał dwóch częstotliwości, 50 i 70 Hz. W kodzie można również zobaczyć użycie „Grand”, jest to scylab wywołanie losowe. Te losowe wartości są dodawane, aby sygnał był nieco bardziej hałaśliwy, bliżej rzeczywistości.

próbka_rate = 1000;
t = 0: 1/próbka_rate: 0.6;
N = rozmiar (t, '*'); //Liczba przykładów
S = sin (2*%pi*50*t)+sin (2*%pi*70*t+%pi/4)+grand (1, n, „nor”, ​​0,1);
Teraz możesz wykreślić „s” jako funkcję „t” i zobaczyć, że wykres wygląda nieuporządkowane.
>> fabuła (t, s);

Tutaj nadszedł czas, aby wypróbować najprostsze transformacje Fouriera, uczynić „Y” Transforma Fouriera.

y = fft (s);

fft

Jeśli wykreślisz „y” jako funkcję „t”, otrzymasz nieco symetryczny wzór od 0 do 0.6. Dwa kolce są tym, czego szukamy, ale teraz je widzimy w dziedzinie czasu. To, co się naprawdę wydarzyło, było to, że wynik nadal zawierał wyimaginowane wartości. Aby znaleźć dwie częstotliwości w dziedzinie częstotliwości, potrzebujemy więcej operacji, znajdź tylko liczby rzeczywiste. A następnie bierzesz wartość bezwzględną wyników. Wykres wyraźnie wskazuje oryginalne częstotliwości.

Oto kod:

// s jest prawdziwe, więc odpowiedź FFT jest symetryczna koniugatowa i zachowujemy tylko pierwszą
N/2 punkty
f = próbka_rate*(0: (N/2))/n; // powiązany wektor częstotliwości
n = rozmiar (f, „*”)
clf ()
Wykres (F, Absy (1: N)))

Jest to najczęstsze zastosowanie transformacji Fouriera. Korzystając z tego systemu, możesz znaleźć dowolną częstotliwość w złożonym, hałaśliwy sygnał. Równania są dziś szeroko stosowane w wielu branżach.
Funkcja FFT2 Scilab jest dwuwymiarową wersją szybkiej transformacji Fouriera.

Jednym świetnym sposobem na ćwiczenie jest wybór tonów DTMF, utworzenie jednego przycisku naciśnij i scylab wymyśl prawidłowy klucz.

Dane w samym scylab zawiera prezentację plików dźwiękowych, przestudiuj.

Jeśli chcesz zagłębić się głębiej, oto kilka linków do dalszego czytania.

Literatura zaawansowana:

https: // cnx.ORG/Treść/ulxtqbn7@15/Implementing-Ffts-in-Practice#UID8

Wolfram…

http: // demonstracje.wolfram.com/ComplexandRealplaneSofDishretefourTransforms/

Implementacja w innych językach:

https: // www.Nayuki.IO/strona/instruktaż-implement-discrete-fourier-transform

Aby uzyskać właściwe wyczucie tematu:

https: // lepiej wyjaśniony.com/artykuły/an-interaktywne-guide-to-fourier-transform/