Sisältö
- Jatkaa muuntamista Matlabissa
- Matlab-koodi muunnokselle
- Diskreetti muunnos Matlabissa
- Matlab-koodi erilliselle muunnokselle
- Pyöreä konvoluutio Matlabissa
- Matlab-koodi pyöreälle konversiolle
Diskreetti-, jatko- ja ympyräkonvoluutio voidaan suorittaa sekunneissa Matlabissa® edellyttäen, että saat käsillä olevan koodin ja muutamia muita perusasioita.
Tämän opetusohjelman tarkoituksena on:
- Osoita tarvittavat koodin komponentit, joita käytetään konvoluution suorittamiseen Matlabissa yksinkertaistetulla tavalla.
- Visualisoi tulokset piirtämällä kaaviot sekoitetuista funktioista.
Tämä opetusohjelma on järjestetty seuraavassa järjestyksessä:
- Jatkaa kääntymistä.
- Diskreetti konvoluutio.
- Pyöreä konvoluutio.
Logiikka:
Koodauksen yksinkertaisen käsitteen tulisi olla:
1. Määritä kaksi erillistä tai kontineusfunktiota.
2. Kutsu ne Matlab-funktiolla 'conv ()'
3.Piirrä tulokset käyttämällä 'subplot ()'.
Jatkaa muuntamista Matlabissa
Osoitamme tämän käyttämällä kahta jatkuvaa toimintoa:
- Pulssiaaltomuoto. Merkitään neliö () -toiminnolla. Tämä on järjestelmän tulo x (t).
- Kondensaattorin ohimenevä vaste. Merkitään muodon a * e yhtälöllä1 / RC * t. Tätä voidaan pitää järjestelmän impulssivasteena h (t).
Matlab-koodi muunnokselle
sävy = 0; tfinaali = 0,05; tstep = 0,0005; t = sävy: tstep: tfinal; x = 4 * neliö (500 * t, 50); // Käytä tässä valitsemaasi toimintoa. alikaavio (3, 1, 1); käyrä (t, x); h = 400 * exp ((-400 * t)); // Käytä valitsemaasi toimintoa. alikaavio (3, 1, 2); käyrä (t, h); t2 = 2 * sävy: tstep: tfinal * 2; // Konvoluutiotoiminto vaatii laajemman alueen piirtämisen kokonaan. y = konv (x, h) * taskel; alikaavio (3, 1, 3); käyrä (t2, y);
Rivi 1-5: Määritä aika-akselin arvoalue.
Rivi 7: Neliöaalto alustetaan käyttämällä Matlab-toimintoa 'neliö()'sen amplitudi on 4, ω = 500 rad / s ja käyttöjakso 50%.
Rivi 9:Sivujuoni() osioi lähtöikkunan siten, että siihen mahtuu 3 kuvaajaa yhdelle näytölle, eli se luo taulukon, jossa on 3 riviä ja 1 sarake (t) ja sitten viimeinen argumentti sivujuoni() valitsee ensimmäisen juonen jatkokäyttöä varten.
Rivi 10: käyrät x (t).
Rivi 12-15: Järjestelmän impulssivaste h (t) on määritelty. Sivujuoni() valitsee toisen kuvaajan ja piirtää siihen h (t).
Rivi 18: Tuloksena olevalle sekoitetulle toiminnolle on määritetty uusi alue.
Rivi 19-22: x (t) sekoitetaan lopulta h (t): n kanssa ja piirretään sitten tälle uudelle alueelle. * t-vaihe lisättiin säätämään x- ja y-akselit vastaavasti.
Diskreetti muunnos Matlabissa
Erillisen konvoluution suorittaminen matlabissa on hyvin yksinkertaista ja suoraviivaista. Sinun tarvitsee vain määritellä kunkin funktion diskreetit arvot ja sitten käyttää funktiota 'konv. ()molemmissa toiminnoissa.
Matlab-koodi erilliselle muunnokselle
a = -1; // Tämä on x: n (t) ajan alkuarvo. b = 0; // Ajan aloitusarvo h (t): lle. x = [2-1 1]; h = [3 2 1]; alikaavio (3, 1, 1); t = a: a + pituus (x) -1; // tstepia ei vaadita tässä. varsi (t, x); alikaavio (3, 1, 2); t = b: b + pituus (h) -1; varsi (t, h); y = konv (x, h); alikaavio (3, 1, 3); t = a + b: a + b + pituus (y) -1; varsi (t, y);
Rivi 4-5: Määritä erilliset arvot x (t): lle ja h (t): lle.
Rivit 8, 12 ja 18: Määritä aika-akselin alue kaavioissa, jotka myöhemmin piirretään varsi() toiminto (jos piirtämistä ei vaadita, voit jättää nämä vaiheet pois).
Pyöreä konvoluutio Matlabissa
Pyöreä konvoluutio voidaan suorittaa seuraavissa vaiheissa:
- Ota kahden vektorin diskreetti Fourier-muunnos.
- Kerro nämä kaksi muunnosta.
- Ota tuotteen käänteinen diskreetti Fourier-muunnos ja tuloksena on kahden vektorin pyöreä konvoluutio.
Matlab-koodi pyöreälle konversiolle
// Määritä kaksi vektoria pyöreälle konvoluutiolle x = [2 5 4 1]; y = [1 4 3]; // Zeropad vectrs ylöspäin 4 + 3-1 xpad = [x nollaa (1, 6 pituus (x))]; ypad = [y nollat (1, 6-pituus (y))]; // Kerro molempien vektoreiden ffts ja ota idft tuote ccirc = ifft (fft (xpad). * Fft (ypad)); // Nyt piirrä tuloksen varren (ccirc, 'täytetty') ylim ([0 35]) otsikko ('Xpadin ja ypadin pyöreä konvoluutio');