Matematika

Scilab FFT HOGYAN

Scilab FFT HOGYAN
A Scilab nagyszerű eszköz számos felhasználásra mind a tudományos, mind a mérnöki munkában. Ez a cikk az FFT, a Fast Fourier Transform speciális esetét ismerteti.

Először tisztázzuk, mi a gyors Fourier Transform, és miért akarja használni. A matematika a frekvenciákról szól. A Fourier-transzform egy olyan módszer, amellyel kisebb hullámokat lehet kiemelni egy komplex hullámban. Ez összetettnek hangzott; amikor zenét hallgat, sokféle hangot hall az énekestől, hangszerektől és így tovább. Emberként gyakran hallhatjuk a gitárt önmagában, de megpróbáljuk a technológiával kiemelni egy felvételen, és bajba kerül. A modern technológia meg tudja csinálni, köszönhetően az évek során kifejlesztett Fourier-alapegyenletek különböző megtestesítőinek. A Fourier sorozat modern felhasználási területei a kép- és videotömörítés, a GPS és az MRI szkennelés. Mindez közelíti a forrást, és a Fourier-sorokat használja a memória megtakarításához és a gyorsabb eredmények eléréséhez.

Jean-Baptiste, Joseph Fourier matematikus valójában megpróbálta megoldani a hőegyenletet, hogy lehetővé tegye annak kiszámítását, hogy a hő hogyan terjed a szilárd anyagban. Amivel előállt, ennél sokkal hasznosabb volt, bár módszereit később hivatalosabb verzióvá fejlesztették. Az egyenleteket ma már számos területen alkalmazzák.

Egy adott frekvencia kiemeléséhez egy komplex jelben használhat néhány számítást, a Fast Fourier transzformálást. Ennek matematikai megalapozása némi gyakorlatot igényel. A Khan Akadémia jó hely a matematika elsajátításához.

Ha elemeznie kell bármely hullámot, akkor szinuszfüggvényekkel közelítheti a teljes hullámot, és megkapja az összes külön jelet a vegyes hullámból. Vagy fordítva, összetett hullámot készíthet több szinusz hullámból. Ez a matematika alapgondolata.

A Fourier-transzformációk jobb megértéséhez jó gyakorlat az, ha magad írod meg őket. A Scilab-ban van egy egyszerű programozási nyelv, amelyet a matematikára helyezünk.
A Fourier-transzformációkra szükséges különféle feladatok a transzformációs együtthatók megkeresésével kezdődnek. Ennek oka, hogy ezt használják a képek tömörítésére és sok más folyamatra.

Amikor megtanulja a sorozat alapjait, az első dolog az együtthatók. Az egyenletek a következők:

Az ezek megoldására szolgáló kód meglehetősen egyszerű, egy funkcióval kezdődik. Ez a funkció apró darabokban valósítja meg a Fourier-transzformációt.
Funkció definiálásához használja a nyilvánvaló 'function' konstrukciót. Az alábbiakban egy négyzet alakú hullám négyes sorozata látható:

függvény y =fz)
y = 4 * bűn (t) / 1 *% pi + 4 * bűn (3 * t) / 3 *% pi + 4 * bűn (5 * t) / 5 *% pi + 4 * bűn (7 * t) / 7 *% pi
+ 4 * bűn (9 * t) / 9 *% pi
végműködés

Ahhoz, hogy a hullám még szögletesebb legyen, végül is közelítésről van szó, folyamatosan növelnie kell a kifejezések számát. Amikor egy minta, mondjuk egy rajzfilm újrateremtésére törekszik, a Fourier-transzformációt nagyon hasonló módon használja. Csak végtelennek kell tekintenie az időszakot.

Egyszerű igaz? Nos, nem az alapvető matematikai ismeretek nélkül. Próbáljon ki magának néhány példát a scilab használatával.

Ez a példa a lehető legegyszerűbb jelkombinációt mutatja be; két különböző frekvenciájú jel.

// Válasszon mintaméretet
 
N = 100;
 
// Állítsa be a sorrendet, ezzel létrehozza a tömböt
 
n = 0: N-1;
 
// Hozza létre a jelek frekvenciáját
 
w1 =% pi / 4
 
w2 =% pi / 8
 
// Hajtsa végre a mintavételezett jeleket
 
s1 = cos (w1 * n); // A jel első komponense
 
s2 = cos (w2 * n); // A jel második komponense
 
// Kombinálja a kettőt egy jelbe
// Ebben az esetben egyszerű tiszta jelet adunk.
 
f = s1 + s2;
 
// Itt van a kapott jel átalakításra kész.
 
ábra (0);
telek (f);
 
// Ennek a jelnek a Fourier-transzformációjának csak az alkatrészek frekvenciáját kell mutatnia.
 
F = fft (f);
 
F_abs = abs (F);
 
1.ábra);
ábra (n, F_abs);
 
2. ábra);
telek (F);

Használja a fenti példát az átalakítás működésének gyakorlására. Győződjön meg róla, hogy különböző módon szűrte-e.

Tipp: használd a Scilab konzolt, hogy megnézhesd, mit tartalmaznak a változók a program egyes lépésein, így láthatod azt is, hogy az 'F' képzelt tartalommal rendelkezik. Próbálja meg más módon megváltoztatni az äfä-t, hogy pontosabb eredményt kapjon.

Az iparban a Fourier transzformációk leggyakoribb alkalmazása a jel elemzése. A zajos jelből származó frekvenciák kiszűréséhez el kell kezdeni egy jel előállításával vagy importálásával.  A következő kódrészlet két frekvencia, 50 és 70 Hz vegyes jelet hoz létre. A kódban a „grand” használatát is láthatja, ez a scilab véletlenszerű hívása. Ezeket a véletlenszerű értékeket azért adjuk hozzá, hogy a jel egy kicsit zajosabb legyen, közelebb kerüljön a valósághoz.

minta_ráta = 1000;
t = 0: 1 / minta_ráta: 0.6;
N = méret (t, '*'); // minták száma
s = sin (2 *% pi * 50 * t) + sin (2 *% pi * 70 * t +% pi / 4) + grand (1, N, 'nor', 0,1);
Most ábrázolhatja a 's' -t a 't' függvényében, és láthatja, hogy a grafikon rendetlenül néz ki.
>> cselekmény (t, s);

Itt az ideje kipróbálni a legegyszerűbb Fourier transzformációt, az y-t az s Fourier transzformációjává tenni.

y = fft (s);

fft

Ha az „y” -t a „t” függvényében ábrázolja, akkor kissé szimmetrikus mintát kap 0 és 0 között.6. A két tüske az, amit keresünk, de most látjuk őket az idő tartományában. Valójában az történt, hogy az eredmény még mindig tartalmazta a képzeletbeli értékeket. A frekvenciatartomány két frekvenciájának megtalálásához további műveletekre van szükségünk, hogy csak a valós számokat találjuk meg. És akkor veszi az eredmények abszolút értékét. A grafikon egyértelműen rámutat az eredeti frekvenciákra.

Itt van a kód:

// s valós, tehát az fft válasz konjugált szimmetrikus, és csak az elsőt tartjuk meg
N / 2 pont
f = mintaérték * (0: (N / 2)) / N; // társított frekvenciavektor
n = méret (f, '*')
clf ()
cselekmény (f, absy (1: n)))

Ez a Fourier-transzformáció leggyakoribb alkalmazása. Ennek a rendszernek a segítségével bármilyen frekvencia megtalálható egy összetett, zajos jelben. Az egyenleteket ma számos iparágban széles körben használják.
A Scilab fft2 funkciója a gyors Fourier transzformáció kétdimenziós változata.

A gyakorlás egyik nagyszerű módja a DTMF-hangok kiválasztása, egy gombnyomás létrehozása és a scilab számára a helyes billentyű kitalálása.

Maga a Scilab demói tartalmaznak egy hangfájl kirakatot, tanulmányozza azt.

Ha mélyebbre akarsz ásni, íme néhány link a további olvasáshoz.

Haladó irodalom:

https: // cnx.org / content / [email protected] / FFTs-in-Practice # uid8 megvalósítása

Volfrám…

http: // bemutatók.volfrám.com / ComplexAndRealPlanesOfDiscreteFourierTransforms /

Megvalósítás más nyelveken:

https: // www.nayuki.io / page / hogyan kell megvalósítani a diszkrét-Fourier-transzformációt

A téma megfelelő érzéséhez:

https: // jobb magyarázat.com / articles / interaktív útmutató a Fourier-transzformációhoz /

A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...
Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...