Turinys
- Tęsia „Matlab“ konvoliuciją
- „Matlab“ kodas konvoliucijai
- Diskretioji „Matlab“ konvoliucija
- „Matlab“ kodas diskrečiai konvoliucijai
- Žiedinė konvoliucija „Matlab“
- „Matlab“ kodas žiedinei konvoliucijai
„Matlab®“ per kelias sekundes gali būti atliekami diskretiški, tęstiniai ir žiediniai sukrėtimai su sąlyga, kad gausite prieinamą kodą ir keletą kitų pagrindinių dalykų.
Šios pamokos tikslas:
- Parodykite būtinus kodo komponentus, naudojamus konvoliucijai „Matlab“ atlikti supaprastintai.
- Vizualizuokite rezultatus, braižydami susisukusių funkcijų grafikus.
Ši pamoka išdėstyta tokia seka:
- Tęsia konvoliuciją.
- Diskretioji konvekcija.
- Žiedinė konvoliucija.
Logika:
Paprasta kodavimo koncepcija turėtų būti:
1. Apibrėžkite dvi atskiras arba kontineusines funkcijas.
2. Sujunkite juos naudodami „Matlab“ funkciją „conv ()“
3.Rezultatus nubraižykite naudodami „subplot ()“.
Tęsia „Matlab“ konvoliuciją
Tai parodysime naudodamiesi dviem tęsiamomis funkcijomis:
- Pulso bangos forma. Žymima funkcija „square ()“. Tai yra sistemos įvestis x (t).
- Laikinas kondensatoriaus atsakas. Pažymima formos a * e lygtimi1 / RC * t. Tai galima laikyti sistemos impulsiniu atsaku h (t).
„Matlab“ kodas konvoliucijai
atspalvis = 0; tfinalas = 0,05; tstep = 0,0005; t = atspalvis: tstep: tfinal; x = 4 * kvadratas (500 * t, 50); // Čia naudokite pasirinktą funkciją. potvarkis (3, 1, 1); siužetas (t, x); h = 400 * exp ((-400 * t)); // Naudokite pasirinktą funkciją. potvarkis (3, 1, 2); sklypas (t, h); t2 = 2 * atspalvis: tstep: tfinal * 2; // Suderinta funkcija reikalauja, kad būtų visiškai nupieštas platesnis diapazonas. y = konv (x, h) * tžingsnis; potvarkis (3, 1, 3); diagrama (t2, y);
1–5 eilutės: Apibrėžkite laiko ašies verčių diapazoną.
7 eilutė: Kvadratinė banga inicijuojama naudojant „Matlab“ funkciją “kvadratas ()jo amplitudė yra 4, ω = 500 rad / s, o veikimo ciklas - 50%.
9 eilutė:Plotas () padalija išvesties langą, kad viename ekrane tilptų 3 siužetai, ty sukuriama 3 eilučių ir 1 stulpelio (-ių) lentelė ir paskutinis argumentas subplot () parenka 1-ąjį sklypą tolimesniam darbui.
10 eilutė: brėžiniai x (t).
12-15 eilutė: Apibrėžta impulsinė sistemos reakcija h (t). Plotas () parenka 2 grafiką ir jame braižo h (t).
18 eilutė: Gautai susuktai funkcijai nustatytas naujas diapazonas.
19–22 eilutė: x (t) galiausiai suvyniojamas su h (t) ir tada braižomas šiame naujame diapazone. * tstep buvo pridėtas, kad atitinkamai sureguliuotumėte x ir y ašis.
Diskretioji „Matlab“ konvoliucija
Diskrečiosios konvekcijos atlikimas matlab yra labai paprastas ir paprastas. Jums tereikia apibrėžti atskiras kiekvienos funkcijos reikšmes ir pritaikyti funkciją 'konv. ()abiejose šiose funkcijose.
„Matlab“ kodas diskrečiai konvoliucijai
a = -1; // Tai yra pradinė x (t) laiko vertė. b = 0; // H (t) pradinė laiko vertė. x = [2-1 1]; h = [3 2 1]; potvarkis (3, 1, 1); t = a: a + ilgis (x) -1; // tstep čia nereikalingas. kamienas (t, x); potvarkis (3, 1, 2); t = b: b + ilgis (h) -1; stiebas (t, h); y = konv (x, h); potvarkis (3, 1, 3); t = a + b: a + b + ilgis (y) -1; kamienas (t, y);
4-5 eilutė: Apibrėžkite atskiras x (t) ir h (t) reikšmes.
8, 12 ir 18 eilutės: Apibrėžkite laiko ašies diapazoną grafikuose, kurie vėliau bus braižomi naudojant kamienas () funkcija (jei braižyti nereikia, galite praleisti šiuos veiksmus).
Žiedinė konvoliucija „Matlab“
Apykaitinę konvoliuciją galima atlikti šiais veiksmais:
- Paimkite dviejų vektorių diskretiąją Furjė transformaciją.
- Padauginkite dvi transformacijas.
- Paimkite atvirkštinę diskretinę Furjė produkto transformaciją ir rezultatas yra dviejų vektorių žiedinė konvoliucija.
„Matlab“ kodas žiedinei konvoliucijai
// Apibrėžkite du apskritos konvekcijos vektorius x = [2 5 4 1]; y = [1 4 3]; // „Zeropad vectrs“ iki 4 + 3-1 xpad = [x nuliai (1, 6 ilgio (x))]; ypad = [y nuliai (1, 6 ilgio (y))]; // Padauginkite abiejų vektorių fft ir paimkite produkto idft ccirc = ifft (fft (xpad). * Fft (ypad)); // Dabar siužeto rezultato kamieno (ccirc, 'užpildytas') ylim ([0 35]) pavadinimas ('Xpad ir ypad žiedinė konvoliucija');