Egy nap rájöttem, hogy a szoftver önmagában mechanikussá vált. Megízleltem az egyszerűséget, és a problémák kevésbé kezdtek tanulási tapasztalatok lenni, sokkal inkább mechanikai gyakorlatokká váltak, amelyek inkább elfoglaltságnak tűntek, mint valódi felfedezésnek. Rájöttem, hogy mindig az absztraktban dolgoztam. Persze, letértem az útról. Szereztem több kiberbiztonsági/pentesting tanúsítványt, és persze érdekes volt. De végül nem segített a viszkető érzésen. Rájöttem, hogy el kell kezdenem megérinteni a fizikai világot. Fizikai jelenségekkel kell kölcsönhatásba lépnem. Tehát elkezdtem építeni az ELI-t (elektromágneses lekérdező interfész). Kezdve RF-fel, DSP-vel, egyenletekkel, zajjal, Raspberry Pi-kel SDR-ekkel. Ez egy meredek hegy a csúcson, és én egy mély gödör alján vagyok. Ezek a cikkek arra szolgálnak, hogy metabolizáljam és megpróbáljam elmagyarázni azokat a fogalmakat, amelyeket utazásom során megtanulok. Mert ha el tudom magyarázni, amit megtanultam, nagyobb eséllyel marad meg. A könyv, amiből jelenleg dolgozom, Richard Lyons "Understand Digital Signal Processing" című könyve. Jó könyv, és élvezem. Megpróbálom fejezetről fejezetre elmagyarázni a fogalmakat és azt, amit tanulok. Ez inkább egy médium arra, hogy áthúzzam a t-ket és belőjem az i-ket a tanulási utamon. Ezzel a sorozattal beírom, amire szükség van, beágyazott kódrészletekkel, vagy ha fejlett, adok egy repót. Rust-ban kódolok. Ezzel, kezdjük is. Diszkrét sorozatok és jelölések : egy független időváltozó, amely kvantált, így egy jel értéke csak diszkrét pillanatokban ismert. diszkrét idejű jel Tehát, mi a ? Nos, egyszerűen fogalmazva az, hogy darabokra van osztva, ahelyett, hogy folyamatos lenne. diszkrét Tehát egy csak egy folyamatos jel, amelyet egy adott pillanatban határoznak meg. diszkrét idejű jel Mi a helyzet a -tal? Lényegében egy mérés lekerekítése a legközelebbi értékre, amelyet a rendszer mérni tud. kvantált Tehát együttvéve egy csak egy folyamatos jel darabjait illeszti be olyan helyekre, ahol a rendszer mérni tudja. Mint sok tudományos terminológia, ez egy nagyon elegánsan hangzó kifejezés egy meglehetősen egyszerű ötletre. diszkrét idejű jel Nézzük meg vizualizálva: A folyamatos vonal analóg, hullámzó, nincs vége vagy megállása. A pontok és vonalak a vonal diszkrét részeit képviselik, amelyeket egy rendszer mérni és megérteni tud. Miért van erre szükségünk? Nos, a számítógépeknek rendszeres időközönként kell mintát venniük, ts másodpercenként (az s a mintavételezésre utal, a t pedig a mintavett időszakot jelenti). Hogyan néz ki egy ilyen egyenlet papíron? Bontsuk le: - a folyamatos jel értéke az időpillanatban ( a mintavett szám) x[n] n n - a frekvencia f0 - mintavételi frekvencia fs Nagyon egyenes. Tehát, alakítsuk át kódba (Rust) a pont kedvéért: use std::f64::consts::PI; fn main() { let f0 = 2.0; let fs = 12.0; let n_samples = 100; let mut signal = Vec::with_capacity(n_samples); for n in 0..n_samples { let n = n as f64; let sample = (2.0 * PI * f0 * n / fs).sin(); signal.push(sample); } println!("{:?}", signal); } A jelölés valóban akadály. Frekvenciatartomány Fentebb a folyamatos analóg vonal és a diszkrét pontok az időtartományban éltek. Most pedig vizsgáljuk meg a . frekvenciatartományt Nézzünk meg egy ábrázolást: Választjuk szét tisztán ezeket a tartományokat: időtartomány: mit csinál egy jel az idő múlásával? frekvenciatartomány: milyen frekvenciák léteznek egy jelben, és milyen erősek? Ezen a ponton meg kell különböztetnünk az amplitúdót és a nagyságrendet: amplitúdó: milyen messze és milyen irányban van egy változó nullától nagyságrend milyen messze van egy változó nullától A különbség az, hogy az amplitúdó lehet negatív vagy pozitív, míg a nagyságrend mindig pozitív. A frekvenciatartománybeli grafikonok rendkívül hasznosak, mert egyértelműen megmondják, mi létezik és milyen az. erős Blokkvázlatok A blokkvázlat egy egyszerű vizuális módja annak leírására, hogyan mozog egy jel egy rendszeren keresztül. Minden blokk egy jelre végzett műveletet képvisel, és a nyilak mutatják, hogyan áramlik a jel az egyik lépésről a másikra. A DSP blokk általában három dolgot tartalmaz: jelek (áramló adatok) blokkok (alkalmazott műveletek) nyilak (az a jel iránya, amelyik mozog) Ábrázolás Szeretném megjegyezni, hogy a tipikus összeadó blokkban a következőket fogja látni: Az a Σ szimbólum (szigma) matematikailag 'összeget' jelent. Ijesztőbbnek tűnik, mint amilyen, tehát ábrázoljuk ezt kódban: fn main() { let x1 = vec![1.0, 2.0, 3.0, 4.0]; let x2 = vec![0.5, 1.0, 1.5, 2.0]; let x3 = vec![2.0, 2.0, 2.0, 2.0]; let mut y = Vec::with_capacity(x1.len()); for n in 0..x1.len() { let y_n = x1[n] + x2[n] + x3[n]; y.push(y_n); } println!("y = {:?}", y); } Nagyon egyenes. Ismét, az akadály a szimbólumok. Amint kódban van, valójában nagyon egyszerű. Diszkrét lineáris időinvariáns rendszerek Meghatároztuk a diszkrétet fentebb, tehát ugorjunk bele a lineárisba: A skálázás úgy működik, ahogy várná a bemenet skálázása azonos mértékben skálázza a kimenetet. A bemenetek összeadása kimeneteket ad az egyesített bemenetek ugyanúgy egyesített kimeneteket eredményeznek. Vizualizáljuk a diszkrét lineáris jelet Időinvariáns rendszerek Az időinvariáns rendszer olyan, ahol a bemeneten lévő késleltetés/eltolás azonos késleltetést okoz a kimeneten. A fogalom bemutatására alább egy vizuális ábrázolás látható egy diszkrét lineáris időinvariáns rendszerről A diszkrét lineáris időinvariáns rendszerek fontosak, mert kiszámíthatóan viselkednek. Lineáris lévén a jeleket skálázni/kombinálni lehet anélkül, hogy megváltozna, hogyan dolgozza fel őket a rendszer. Az időinvariancia azt jelenti, hogy egy rendszer ugyanúgy tud reagálni, függetlenül attól, hogy mikor jelenik meg a jel. Ezek a tulajdonságok lehetővé teszik összetett jelek megértését egyszerűbb jelek kombinációjaként. Ez megkönnyíti az elemzést és a manipulációt olyan eszközökkel, mint a szűrés és a frekvenciaelemzés. Ezzel a jel feldolgozó rendszerek gyakran mutatják a . Ez azt jelenti, hogy bizonyos műveletek sorrendje nem változtatja meg az eredményt. kommutatív tulajdonságot : két jel összeadása ugyanazt az eredményt adja, függetlenül attól, hogy melyik jelet adjuk hozzá először. Bár nagyon egyszerűnek tűnik, lehetővé teszi a mérnökök számára, hogy átrendezzék a jel feldolgozó rendszer részeit anélkül, hogy megváltoztatnák az eredményt. Ahogy egy rendszer összetettsége nő, a műveletek átrendezésének képessége hasznossá válik az elemzés egyszerűsítéséhez és a hatékony implementációkhoz. Példa Impulzusválasz A DSP-ben egy nagyon hatékony ötlet, hogy egy LTI (lineáris időinvariáns) rendszert egy válasz írhat le teljesen. Hogy jobban meghatározzuk, egy impulzus egy nagyon rövid tüske, amelyet a rendszer viselkedésének megvizsgálására használnak. impulzus Ha egy impulzust táplálunk egy rendszerbe, és megnézzük a kimenetét, kapunk egy . Miután ezt megszereztük, meghatározhatjuk, hogyan fog reagálni egy rendszer minden bemeneti jelre. Az egyes impulzusokra adott rendszerválaszokat össze lehet adni, hogy végső kimenetet kapjunk. Az ezt a folyamatot végző matematikai művelet a . impulzusválaszt konvolúció Valódi konvolúciós példák 1. Helyiségakusztika Amikor egy hangmérnök meg akarja érteni, hogyan befolyásol egy adott helyiség a hangot, egy éles impulzust generál (gondoljon egy lufi kipukkantására, tapsra, rajtpisztolyra, ha van bátorsága). Ez a kiadás vagy impulzus az energia széles frekvenciatartományát tartalmazza. A helyiségben lévő mikrofonok rögzítik, és az éles impulzus feltárja a visszhangot, az echo mintákat és a frekvenciakorrelációt. A modern akusztikai szoftverek gyakran használják ezt az impulzust a helyiség hangzásának szimulálására. 2. Gépészmérnökök A gépészmérnököknek van egy folyamata, az úgynevezett . Ha információt akarnak arról, hogyan rezeg egy gép vagy szerkezet, egy műszeres kalapáccsal ütik meg, hogy éles impulzust adjanak. A gépre vagy szerkezetre rögzített érzékelők mérik az impulzusrezgéseket. Az impulzusrezgések feltárják a rendszer természetes frekvenciáját és csillapítási jellemzőit, amelyek megmondják a mérnöknek, hogyan fog viselkedni egy rendszer számos működési körülmény között. módtani vizsgálat 3. Villamosmérnökök A villamosmérnökök is végeznek impulzusvizsgálatot. Analóg áramkörökkel nagyon rövid feszültségimpulzusokat alkalmaznak egy szűrőn vagy erősítőn, ahol a kimenetet az idő múlásával mérik. Az ebből az impulzusból származó hullámforma alapján az EE-k meg tudják határozni, hogyan dolgozza fel a rendszer az impulzusokat, és mely frekvenciákat erősít. Ez zárja az első fejezet tanulását és magyarázatát. Sok minden van benne, de lassan könnyebb lesz. Ezt csinálva rájöttem, hogy igazán értékelnem kell a kis győzelmeket. A megértés kis kattanásait. Ebben a tanulásban nincsenek gyors győzelmek, és igazán türelemre van szükség. Bár sok erőfeszítést igényel, ezeknek a cikkeknek az elkészítése csodálatos módja annak, hogy metabolizáljam a fejezet tudását, és talán megosszam azokkal, akik kíváncsiak. Összegzés Ez nem az első fejezet egésze volt, csak az általam fontosnak tartott fogalmak. Nagyon kezdő vagyok ebben, tehát ha vannak korrekcióid, teljesen szabadon kommentelhetsz, és én kijavítom a cikket. Sok minden arra szolgál, hogy megerősítsem saját megértésemet azáltal, hogy nyilvánosan írok, így motivációm van arra, hogy ne tűnjek túl bolondnak. Csak egy kicsit bolondnak. Folytatom a könyv fejezetein való átírást, mert magamnak hasznosnak találom. Jó lenne, ha valaki hasznosnak találná ezt is. Mondhatom, hogy ebben a folyamatban a kis győzelmek a kulcsok. A folyamat lassú, de azok a kis megértési kattanások a kis jutalom, miközben felfelé kapaszkodom. Mindez csak egy intrinzik motiváció az alkalmazott tudáshoz, több készség megszerzéséhez, a világ jobb megértéséhez. A nap végén néha ez a leghosszabb távú motiváció.