This is an old revision of the document!
În acest laborator ne vom obișnui cu MATLAB și vom face câteva procesări de semnal simple. Majoritatea tehnicilor de procesare de semnal pot fi executate ca operații pe vectori și matrici, deci MATLAB este o unealtă foarte folositoare pentru a face aceste operații.
Pentru acest laborator vom avea ca referință, tutorialul de aici
Urmărind capitolul 1 (Quick Start), haideți să facem următoarele exerciții.
1. Obișnuiți-vă cu mediul de lucru: calea folder-ului (folder path), spațiul de lucru (workspace), istoria, editarea script-ului, consola.
2. Vectori
Semnalele pot fi reprezentate ca secvențe de valori, unde în MATLAB se face, de obicei, prin vectori sau matrici. Să începem cu vectorii.
Pentru a genera un vector de valori date, putem scrie pur și simplu ceva de genul:
3. Matrici
4. Transpusa
Transpusa unei matrici poate fi obținută prin folosirea operatorului `'`.
5. Alte modalități pentru a crea vectori și matrici
Creați o secvență de 10 elemente, pornind de la 5.
6. Salvarea și încărcarea variabilelor
Verificați funcționalitatea funcțillor 'save' și 'load' (folosind 'help load', 'help save').
7. Șiruri de caractere și afișaj
Putem crea într-un mod ușor șiruri de caractere folosind ceva de genul s = 'Hello'.
8. Operații matematice
Operațiile matematice simple pot fi făcute foarte rapid. Puteți să adunați, înmulțiți, ridica la putere sau să inversați matrici: A+B, A*B, A^2, A^-1 sau inv(A). Dacă vreți o operație matematică pentru a fi aplicată element cu element, puteți folosi punctul '.', înainte de operație, de exemplu: A .* B pentru înmulțirea element cu element a fiecărui element din A cu elementul corespunzător din B. Alte funcții, cum ar fi 'sin' pot fi aplicate element cu element pe o matrice: sin(A) este o matrice cu elementele sin($a_{ij}$), unde $a_{ij}$ sunt elementele din A.
9. Funcții
La fel ca în majoritatea limbajelor de programare, o proprietată interesantă este abilitatea de a apela alte funcții.
x = [1; 2; 3; 4; 5] s = 0; for i = 1 : length(x) s = s + x(i) * x(i); end
s = sum(x .^ 2)
s = x' * x
x' * x calculează ceea ce se numește produs scalar dintre doi vectori (înmulțirea dintre un vector linie și un vector coloană). Aveți grijă la ordinea operației, pentru că x * x' (vector coloană înmulțit cu vector linie) ne dă o matrice.
10. Grafice
Graficele sunt unele dintre cele mai tari lucruri în MATLAB, deoarece acestea ne permit să vizualizăm datele noastre.
Aici este un exemplu cum ar trebui să arate:
11. Câteva exerciții simple de procesare de semnal
Cel mai bine este să vă faceți programele MATLAB în script-uri, astfel încât să le puteți reutiliza mai târziu. În acest fel puteți, de asemenea, să vă creați funcții proprii. Pentru acum, haideți să creăm doar niște script-uri.
După ce aveți câteva comenzi în script îl puteți executa pentru a vedea ce obțineți sau puteți executa doar o parte din el (fie prin selectarea liniilor de interes, comentarea altora, folosind '%', sau folosind secțiuni, via '%%'). Toate lucrurile de mai jos ar trebui să se găsească în script-ul vostru.
Ar trebui să onțineți ceva de genul:
12. O aplicație ușoară
În acest fișier data.mat aveți trei imagini, reprezentate ca matrici tridimensionale (o matrice per culoare - R, G, B). Matricile reprezintă o imagine Img_initial care a fost distorsionată prin adăugarea unui zgomot (matricele R1 și R2), prin formula: IR = Img_initial * 0.3 + R1 * 0.3 + R2 * 0.3
Task-ul vostru este să încercați să reconstruiți matricea originală a imaginii și să o afișați. Pentru asta trebuie să faceți pașii următori:
Rețineți că o matrice imagine conține numai valori de la 0 la 255.
13. Column major
MATLAB stochează datele în ordine pe coloane (column major). Pentru a testa asta încercați să înmulțiți element cu element două matrici mari (N = 5000) folosind 2 for-uri. Parcurgeți matricea pe rânduri, iar apoi pe coloane. Pentru a măsura timpul puneți funcția 'tic' înainte, iar funcția 'toc' după blocul de cod pe care doriți să îl măsurați. De asemenea, calculați înmulțirea folosind operatorul '.*'. Observați diferențele de timp.
14. BONUS: In fișierul următor aveți o imagine (noisy_img.mat) care a fost alterată cu zgomot, valorile unor pixeli devenind foarte mari, și ale altora foarte mici. Important este ca pixelii cu zgomot apar destul de rar. Încercați să refaceți imaginea originală. Pentru a afișa imaginea folosiți functia imshow(noise_img).