```html ``` Jednog sam dana shvatio da je sam softver postao mehanički. Razvio sam ukus za jednostavnost i problemi su postali manje nalik iskustvima učenja, a pretvorili su se u mehaničke vježbe koje su više ličile na zamoran posao nego na istinsko istraživanje. Shvatio sam da sam uvijek radio u apstraktnom. Sigurno sam skretao sa puta. Stekao sam više sertifikata iz sajber bezbjednosti/pentesting-a, i sigurno je to bilo zanimljivo. Ali, na kraju nije zadovoljilo tu potrebu. Shvatio sam da moram početi dodirivati fizički svijet. Interakciju s fizičkim pojavama. Dakle, postavio sam sebi cilj da počnem graditi ELI (elektromagnetni interfejs za pretragu). Počnite sa RF, DSP, jednačinama, šumom, Raspberry Pi-jevima sa SDR-ovima. To je strma planina na vrhu, a ja sam na dnu duboke jame. Ovi članci služe kao način da metaboliziram i pokušam objasniti koncepte koje naučim na svom putovanju. Jer, ako mogu objasniti ono što naučim, veća je šansa da će mi ostati u sjećanju. Knjiga koju trenutno koristim je "Understand Digital Signal Processing" Richarda Lyonsa. Dobra je knjiga i uživam u njoj. Pokušat ću ići poglavlje po poglavlje kako bih objasnio koncepte i ono što naučim. Ovo više postoji kao medij da bih bio siguran u svoje znanje na svom putu učenja. U ovoj seriji ću kodirati ono što je potrebno pomoću umetnutih kodnih blokova, a kada bude napredno, obezbijedit ću repozitorijum. Kodiram u Rustu. S tim, počnimo. Diskretni nizovi i notacija : nezavisna vremenska varijabla koja je kvantizovana tako da je vrijednost signala poznata samo u diskretnim trenucima. diskretni vremenski signal Dakle, šta je ? Pa, jednostavno možemo reći da je to nešto što je podijeljeno na pojedinačne komade umjesto da je kontinuirano. diskretno Dakle, je samo kontinuirani signal definisan u određenom trenutku. diskretni vremenski signal Šta je sa ? Prilično zaokruživanje mjerenja na najbližu vrijednost koju vaš sistem može izmjeriti. kvantizovano Dakle, sastavljeno, je samo uklapanje dijelova kontinuiranog signala u mjesta gdje ga vaš sistem može izmjeriti. Kao i većina akademske terminologije, to je vrlo fensi zvučeći termin za prilično jednostavnu ideju. diskretni vremenski signal Pogledajmo to vizuelno: Kontinuirana linija je analogna, teče, nema kraj. Tačke i linije predstavljaju diskretne dijelove te linije koje sistem može mjeriti i razumjeti. Zašto to trebamo raditi? Pa, računari moraju uzorkovati u redovnim intervalima, ts sekundi (s označava uzorkovanje, a t predstavlja period uzorkovanja). Kako izgleda ova vrsta jednačine na papiru? Razložimo ovo: - vrijednost kontinuiranog signala izmjerena u vremenu ( je broj uzorka) x[n] n n - frekvencija f0 - frekvencija uzorkovanja fs Vrlo je jednostavno. Dakle, pretvorimo ovo u kod (rust) da bismo naglasili poentu: 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); } Notacija je zaista barijera. Frekvencijski domen Iznad, kontinuirana analogna linija i diskretne tačke živjele su u vremenskom domenu. Sada bismo trebali istražiti . frekvencijski domen Pogledajmo reprezentaciju: Razdvojimo ove domene jasno: Vremenski domen: ? šta signal radi tokom vremena Frekvencijski domen: koje frekvencije postoje unutar signala i koliko su jake? U ovom trenutku bismo trebali razlikovati amplitudu i magnitudu: Amplituda: koliko je varijabla daleko i u kojem smjeru od nule Magnituda koliko je varijabla daleko od nule Razlika je u tome što amplituda može biti negativna ili pozitivna, a magnituda uvijek pozitivna. Grafovi frekvencijskog domena su izuzetno korisni jer nam jasno govore šta postoji i koliko je to . moćno Blok dijagrami Blok dijagram je jednostavan vizuelni način opisivanja kako signal prolazi kroz sistem. Svaki blok predstavlja operaciju koja se izvodi na signalu, a strelice pokazuju kako signal teče od jednog koraka do sljedećeg. DSP blok obično uključuje tri stvari: signali (podaci koji prolaze) blokovi (primijenjene operacije) strelica (smjer kojim se signal kreće) Reprezentacija Želim napomenuti da ćete u tipičnom bloku za sabiranje vidjeti sljedeće: Taj simbol Σ (sigma) znači 'suma' u matematičkoj notaciji. Izgleda zastrašujuće više nego što jeste, pa predstavimo ovo u kodu: 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); } Vrlo jednostavno. Opet, barijera su simboli. Jednom kada je u kodu, zapravo je vrlo jednostavno. Diskretni linearni vremenski nepromjenljivi sistemi Definisali smo diskretno gore, pa zaronimo u linearno: Skaliranje radi onako kako biste očekivali skaliranje ulaza skalira izlaz u istoj meri. Dodavanje ulaza dodaje izlaze kombinovani ulazi = kombinovani izlazi na isti način. Vizuelizirajmo diskretni linearni signal Vremenski nepromjenljivi sistemi Vremenski nepromjenljivi sistem je onaj kod kojeg kašnjenje/pomak na ulazu uzrokuje ekvivalentno kašnjenje na izlazu. Da bismo prikazali koncept, ispod je vizuelna reprezentacija diskretnog linearnog vremenski nepromjenljivog sistema Diskretni linearni vremenski nepromjenljivi sistemi su važni jer se ponašaju predvidljivo. Budući da su linearni, signali se mogu skalirati/kombinovati bez promjene načina na koji ih sistem obrađuje. Vremenska nepromjenljivost znači da sistem može reagovati na isti način, bez obzira na vrijeme kada se signal pojavi. Ova svojstva omogućavaju razumijevanje složenih signala kao kombinacije jednostavnijih signala. Ovo olakšava analizu i manipulaciju alatima poput filtriranja i frekvencijske analize. S tim u vezi, sistemi za obradu signala često pokazuju . To znači da redoslijed određenih operacija ne mijenja rezultat. komutativno svojstvo : sabiranje dva signala daje isti izlaz bez obzira koji je signal prvi sabran. Iako se čini vrlo jednostavno, inženjerima omogućava da preuređuju dijelove sistema za obradu signala bez promjene rezultata. Kako sistem postaje složeniji, sposobnost preuređivanja operacija postaje korisna za pojednostavljenje analize i efikasnu implementaciju. Primjer Impulsni odziv Veoma moćna ideja u DSP-u je da se LTI (linearni vremenski nepromjenljivi) sistem može u potpunosti opisati odzivom. Da bismo ga bolje definisali, impuls je vrlo kratak šiljak koji se koristi za ispitivanje kako sistem funkcioniše. impulsnim Ako sistemu dovedemo impuls i vidimo njegov izlaz, dobijamo . Jednom kada ga dobijemo, možemo odrediti kako će sistem reagovati na svaki ulazni signal. Odzivi sistema na pojedinačne impulse mogu se zbrajati kako bi se dobio konačni izlaz. Matematička operacija koja izvodi ovaj proces je . impulsni odziv konvolucija Primjeri konvolucije u stvarnom svijetu 1. Akustika prostorija Kada audio inženjer želi razumjeti kako određena prostorija utječe na zvuk, generira oštar impuls (pomislite na pucanje balona, pljesak rukama, pištolj za start ako se usuđuju). Taj oslobađanje ili impuls sadrži energiju u širokom spektru frekvencija. Mikrofoni po prostoriji snimaju, a oštar impuls otkriva obrasce odjeka, eha i frekvencijsku korelaciju. Moderna softverska oprema za akustiku često koristi ovaj impuls za simulaciju zvuka prostorije. 2. Mašinski inženjeri Mašinski inženjeri imaju proces koji se naziva . Ako žele informacije o tome kako mašina ili struktura vibrira, udaraju je instrumentiranim čekićem kako bi isporučili oštar impuls. Priloženi senzori na mašini ili strukturi mjere vibracije od impulsa. Impulsne vibracije otkrivaju prirodnu frekvenciju i karakteristike prigušenja sistema, što inženjeru govori kako će sistem djelovati pod brojnim radnim uvjetima. modalno testiranje 3. Električni inženjeri Električni inženjeri takođe izvode impulsni test. Sa analognim kolima, vrlo kratki naponski šiljci se primjenjuju na filter ili pojačalo gdje se izlaz mjeri tokom vremena. Rezultirajući talasni oblik iz ovog impulsa, EE mogu odrediti kako sistem obrađuje impulse i koje frekvencije pojačava. Ovo završava prvo poglavlje učenja i objašnjavanja. Puno je toga, ali polako postaje lakše. Kada sam to radio, shvatio sam da zaista trebam cijeniti male pobjede. Mali klikovi razumijevanja. U učenju ovoga nema brzih pobjeda, i zaista je potrebno strpljenje. Iako zahtijeva mnogo truda, pravljenje ovih članaka je odličan način za mene da metaboliziram znanje iz poglavlja i možda ga podijelim sa ljudima koji su znatiželjni. Sumiranje Ovo nije bilo cijelo prvo poglavlje, samo koncepti koje sam smatrao važnim. Ja sam veliki početnik u ovome, tako da ako imate ispravke, slobodno komentarišite i ja ću izvršiti ispravke u članku. Mnogo ovoga je pokušaj da učvrstim svoje razumijevanje javnim pisanjem kako bih imao motivaciju da ne izgledam previše glupo. Samo malo glupo. Nastavit ću pisati kroz poglavlja knjige jer mi to koristi. Bilo bi super ako bi ovo nekome bilo korisno. Reći ću da su u ovom procesu male pobjede ključne. Proces je spor, ali ti mali klikovi razumijevanja su mala nagrada dok se penjem uzbrdo. Sve je ovo samo intrinzična motivacija za primijenjeno znanje, za stjecanje više vještina, za bolje razumijevanje svijeta. Na kraju krajeva, ponekad je to najtrajnija motivacija.