|
|
Line 84: |
Line 84: |
| | | | | |
| {| width='100%' style='background-color:#ddd;' | | {| width='100%' style='background-color:#ddd;' |
− | |<big>'''Matlab un Octave'''</big> | + | |<big>'''Lineāras sistēmas un signālu klasifikācija'''</big> |
| |} | | |} |
| | | |
| | | |
− | Svarīgāko Octave komandu apskats (komandu pilna bāze, ar kurām var konstruēt signālapstrādes algoritmus). Praktiskais darbs ar Octave.
| + | Signālu klasifikācija un galvenie parametri (vidējā vērtība, vidējā kvadrātiskā vērtība, SNR, enerģija, jauda, min un max vērtība, dinamiskais diapazons u.c.). |
| + | |
| + | Apskatam sitēmas f(x)=2*x, g(x)=x+5 un m(x)=x*x. Pārbaudam vai tās ir lineāras sistēmas. |
| | | |
− | * M-valoda darbam ar OCTAVE datu apstrādes sistēmām. Linux instalēšana: <code>sudo apt install octave</code>
| + | '''Reading/Reference''': |
− | * Octave grafiskā redaktora palaišana Ubuntu terminālī: <code>octave</code> vai <code>octave-cli</code>
| + | [http://www.dspguide.com/CH5.PDF DSPGuide 5. nodaļa] |
| | | |
| | | | | |
Line 98: |
Line 100: |
| |- | | |- |
| | | | | |
− |
| |
| ==== 24.02.20 ==== | | ==== 24.02.20 ==== |
| | | | | |
| {| width='100%' style='background-color:#ddd;' | | {| width='100%' style='background-color:#ddd;' |
− | |<big>'''Lineāras sistēmas un signālu klasifikācija'''</big> | + | |<big>'''Konvolūcija '''</big> |
| |} | | |} |
| | | |
| | | |
− | Signālu klasifikācija un galvenie parametri (vidējā vērtība, vidējā kvadrātiskā vērtība, SNR, enerģija, jauda, min un max vērtība, dinamiskais diapazons u.c.) [http://failiem.lv/g/fjtyjrs Slaidi].
| + | Konvolūcija un tās īpašības |
| | | |
| '''Reading/Reference''': | | '''Reading/Reference''': |
− | [http://www.dspguide.com/CH5.PDF DSPGuide 5. nodaļa] | + | * [http://www.dspguide.com/CH6.PDF 6.nodaļa] |
| + | * [http://www.dspguide.com/CH7.PDF 7.nodaļa] |
| | | |
| | | | | |
Line 118: |
Line 120: |
| | | | | |
| {| width='100%' style='background-color:#ddd;' | | {| width='100%' style='background-color:#ddd;' |
− | |<big>'''Konvolūcija '''</big> | + | |<big>'''Matlab un Octave'''</big> |
| |} | | |} |
| | | |
| | | |
− | Konvolūcija un tās īpašības
| + | Svarīgāko Octave komandu apskats (komandu pilna bāze, ar kurām var konstruēt signālapstrādes algoritmus). Praktiskais darbs ar Octave. |
| | | |
− | '''Reading/Reference''':
| + | * M-valoda darbam ar OCTAVE datu apstrādes sistēmām: sudo apt install octave |
− | * [http://www.dspguide.com/CH6.PDF 6.nodaļa] | + | * Octave grafiskā redaktora palaišana Ubuntu terminālī: <code>octave</code> vai <code>octave-cli</code> |
− | * [http://www.dspguide.com/CH7.PDF 7.nodaļa] | |
| | | |
| | | | | |
Line 291: |
Line 292: |
| |- | | |- |
| |} | | |} |
− |
| |
− | == Signāli ==
| |
− | * '''S-1''': [http://failiem.lv/u/flhglcy 1. audio wav fails]
| |
− | * '''S-2''': [http://failiem.lv/u/ikzoaqi 2. audio wav fails]
| |
− | * '''S-3''': [http://failiem.lv/u/pidnxjt 3. audio wav fails]
| |
− | * '''S-4''': [http://failiem.lv/g/lhnxysu bilde]
| |
− | * '''S-5''': [https://failiem.lv/u/jzr664nu bilde 2]
| |
− |
| |
− | == Prakstiskie uzdevumi ==
| |
− | ====MD1====
| |
− | Ģenerēt nejaušus gadījuma skaitļus (vismaz 80000) un izveidot tiem histogrammu (gadījuma procesa empīrisko varbūtību sadalījumu) grafikus gadījumos, kad
| |
− | # pastāv viens gadījuma skaitļu avots (to Octave simulē rand() funkcija),
| |
− | # gadījuma process ir summa no 2 gadījuma skaitļu avotiem,
| |
− | # gadījuma process ir summa no 4 gadījuma skaitļu avotiem.
| |
− |
| |
− | Iesūtīt prasītos histogrammu grafikus gadījuma skaitļu avotiem un secinājumus pdf dokumentā.
| |
− |
| |
− | Vēlamā programmēšanas vide: Octave.
| |
− | Iepazīties ar Octave funkciju rand().
| |
− |
| |
− | ====MD2====
| |
− | Veikt neliela audio faila (dažas sekundes) konvolūciju ar
| |
− | * gausa funkciju,
| |
− | * moving average filtru MAF (kad MAF koeficientu skaits N = 5 un N = 30).
| |
− | Uzrakstīt secinājumus un iesniegt kā PDF failu.
| |
− |
| |
− | ====MD3====
| |
− |
| |
− | ====Uzdevumi treniņam====
| |
− | * '''Uzd-2''': Izveidot simulatorus: (A) Monētas krišanai pa sazarotu celiņu (tas sakrīt ar šādu [http://www.cut-the-knot.org/Curriculum/Combinatorics/PascalTriangle2.gif varbūtību trīsstūri] ar 5 pakāpēm), kur varbūtība monētai aiziet pa kreiso zaru un pa labo zaru: 1)0.5, 0.5 un 2) 0.3 un 0.7. Secinājumi. (B) Objekta X diskrētai random walk, kur varbūtība iet vienu diskrēto lielumu uz priekšu vai atpakaļ ir 0.5 un 0.5, varbūtība iet vienu diskrēto lielumu pa kreisi, pa labi ir 0.5 un 0.5, attēlot grafiski šādas random walk realizācijas, kad gājienu skaits N=10, 100, 1000. Secinājumi.
| |
− | * '''Uzd-3''': Audio faila konvolūcija ar gausa funkciju, moving average filtru MAF (kad MAF koeficientu skaits N = 5 un N = 30), secinājumi.
| |
− | * '''Uzd-4''': DFT matricu formā, kods, ilustratīvs piemērs, secinājumi.
| |
− | * '''Uzd-5''': Implementēt Kalmana filtru Octave vidē. Ģenerēt testa signālu ar troksni. Filtrēt to ar Kalmana filtru. Mainīt Kalman Gain un veikt secinājumus.
| |
− | * '''Uzd-6''': Ģenerēt testa signālu y:
| |
− | ** N=1000;
| |
− | ** sigmau=1.8;
| |
− | ** x=linspace(0,1,N)*.5;
| |
− | ** y=x+sigmau*randn(1,N);
| |
− | ** Izmantojot signālu y, atdalīt no tā troksni, izmantojot (a) Moving Average, (b) Gausa un (c) Kalmana filtrus. Salīdzināt visu filtru rezultātus, izmantojot vidējās kvadrātiskās kļūdas kritēriju (ja tiek izmantots cits kritērijs, tad pamatot tā izvēli). Izdarīt secinājumus.
| |
− | * '''Uzd-7''': Izveidot ADC (analog-to-digital signālu pārveidotājs) Octave modeli. Ieejas analogais testa signāls [http://failiem.lv/g/lhnxysu šāds]. Grafiski attēlot ADC ieejas un izejas signālus vienā attēlā pie parametriem: (a) diskretizācijas frekvence (sampling frequency) Fs = 5 Hz un 4 bitu kvantēšana (ADC kvantēšanas diapazons ir -2 līdz 2 ), (b) Fs = 25 Hz, 10 bitu kvantēšana. Iesūtīt grafikus, aprakstu un secinājumus pdf dokumentā.
| |
− | * '''Uzd-8''': 1) Doti punkti x=[1 2 3 4 5 6 7] un y=[0.341627 0.662821 0.534425 0.270544 0.026933 0.937675 0.183618], izrēķināt/interpolēt punktu vērtības starp šiem punktiem, 2) veikt filtrāciju ar dažādām impulsa reakcijām h[n], kad tā ir 1, [-1 1], Gausa funkcija.
| |
− | * '''Uzd-9''': Izmantojot Octave, konstruēt algoritmu, kas izgriež pauzes runas signālam.
| |
− | * '''Uzd-10''': Izmantojot Octave, konstruēt algoritmu, kas atrod cilvēku sejas attēlā.
| |
− | * '''Uzd-11''': Izmantojot Octave: 1) ielasīt audio failu S-1, 2) pārrēķināt signāla nolases tā, lai tas būtu kvantēts visā signāla diapazonā ar 4 bitiem, 3) saglabāt un atskaņot jauniegūto signālu.
| |
− | * '''Uzd-12''': Izmantojot Octave: 1) izveidot attēlu, kurā redzams jūsu vārda pirmais burts, 2) no iepriekšējā attēla izveidot jaunu, kam fonā būtu cits attēls S-4.
| |
− | * '''Uzd-13''': Izveidot programmu, kas sintezē sinusoīdas signālu ar parametriem: Amplitūda 1.2, Frekvence 5 Hz, Fāze pi/4. Attēlot to uz ekrāna laikā periodā [0 1] (sek.)
| |
− | * '''Uzd-14''': Izmantojot Octave, izveidot Short-time DFT jeb spektrogrammu runas signālam.
| |
− | * '''Uzd-15''': Signālu S-1 pārdiskretizēt ar 0.8 no esošās diskretizācijas frekvences. Abus signālus attēlot grafiski.
| |
− | * '''Uzd-16''': Veikt signālu filtrāciju frekvenču apgabalā. Ar joslas filtru no S-1 izfiltrēt frekvenču apgabalu 0.1 Fs līdz 0.4 Fs (kur Fs ir S-1 diskretizācijas frekvence). Orģinālo signālu un filtrēto signālu attēlot: 1) frekvenču apgabalā, 2) laika apgabalā.
| |
− | * '''Uzd-17''': Implementēt konvolūciju Octave vidē.
| |
− | * '''Uzd-18''': Mainīt iepriekš ģenerētā signāla amplitūdu tā, lai signāla enerģija laika periodā [0 1] (sek.) būtu 1 un tad 1.2 (Normēt signālu pēc tā enerģijas). Attēlot normētos signālus uz ekrāna.
| |
− | * '''Uzd-19''': OCTAVE piemērs:
| |
− | ** Fs = 11025; % Definējam diskretizācijas frekvenci
| |
− | ** y = wavrecord(5*Fs, Fs, 'double'); % Ierakstam 5 sekundes skaņas
| |
− | ** Fa = 11025; % Definējam ieraksta atskaņošanas frekvenci
| |
− | ** sound(y/max(y),Fa); % Atskaņojam ierakstīto
| |
− | ** plot(y); % Attēlojam signālu grafiski
| |
− | ** Klausīties ierakstu pie vairākām Fa vērtībām. Izdarīt secinājumus!
| |
− | * '''Uzd-20''': Izrēķināt sinusa funkcijas jaudu pie dažādām signāla diskretizācijas frekvencēm fs laika intervālā [0 1 sek.]. Sinusa amplitūda 1.45, frekvence 4 Hz un fāze pi/2. Izdarīt secinājumus.
| |
− | * '''Uzd-21''': Vai pēc diskretizācijas iespējams precīzi noteikt nepārtraukta signāla maksimālo vērtību, izmantojot tikai signāla diskrētās vērtības un papildus tās neapstrādājot? Pamatot atbildi.
| |
− | * '''Uzd-22''': Ģenerēt attēlu (100x120), kas sastāv tikai no melniem vai baltiem pikseļiem. Melnā pikseļa parādīšanās varbūtība 0.7, bet baltā 0.3 Izvadīt attēlu uz datora ekrāna.
| |
− | * '''Uzd-23''': Ielādēt attēlu (jebkādu) OCTAVE vidē. Izvadīt to uz datora ekrāna. Veikt tam 2D konvolūciju ar sekojošām impulsa reakcijām: h1=[ 0 0 0; 0 1 0; 0 0 0 ] un h2=[ 1 1 1; 1 0 1; 1 1 1 ]. Rezultātus izvadīt uz datora ekrāna
| |
− | * '''Uzd-24''': Doti dati: X ass [0 1 2 3 4 5 6 7], Y ass [0 0.6700 3.9237 11.0340 22.9788 40.5927 64.6190 95.7359]. Izrēķināt vērtības pie sekojošām X vērtībām, pieņemot, ka punkti pieder funkcijai, kas ir nepārtraukta: X ass [0 1.3000 2.6000 3.9000 5.2000 6.5000], Y ass = ???
| |
− | * '''Uzd-25''': Izpildīt Octave kodu: C( : , : , 1 )=[1 0]; C( : , : , 2 )=[1 0]; C( : , : , 3 )=[1 0]; image( C ) un veikt attēla C filtrāciju ar Gausa filtru.
| |
− |
| |
− | == Kursa materiāli ==
| |
− | * [http://www.dspguide.com/ DSP Guide] gramata tiešsaistē
| |
− | * [http://failiem.lv/u/suipzqt Kompleksie skaitļi DSP]
| |
− | * [http://failiem.lv/u/njjfvyx Kalmana filtrs]
| |
− | <!-- * [http://failiem.lv/down.php?i=xigtwaj&n=dft.m DFT] -->
| |
− |
| |
− | * [http://folk.ntnu.no/joern/itgk/refcard-a4.pdf Octave reference card]
| |
− |
| |
− | == Papildus resursi ==
| |
− |
| |
− | ==== Furjē transformācija ====
| |
− | * [https://youtu.be/ykNtIbtCR-8 Ievada video]
| |
− | * [https://youtu.be/spUNpyF58BY Furjē transformācijas vizualizācija]
| |
− | * [https://youtu.be/1JnayXHhjlg lekcija par Inverso FT (1.daļa)]
| |
− | * [https://youtu.be/kKu6JDqNma8 lekcija par FT (2.daļa)]
| |
− |
| |
− | * [https://youtu.be/XtypWS8HZco Ievads FFT, The Cooley-Tukey Algorithm]
| |
− |
| |
− | ==== Citi resursi ====
| |
− | * [https://ptolemy.berkeley.edu/eecs20/weekly.html Signals and Systems] - kurss Berkeley universitātē
| |
− | * [https://dspillustrations.com/pages/index.html Learning DSP illustrated]
| |
− | * [https://brilliant.org/wiki/linear-time-invariant-systems/ Lineāras laika invariantas sistēmas] @Brilliant wiki
| |
− | * [https://youtu.be/zMkXxI63_Og Laika invariantas sistēmas] - videolekcija ar pierādījumu piemēriem.
| |