Differences

This shows you the differences between two versions of the page.

Link to this comparison view

ps:labs:01 [2020/10/12 18:12]
darius.necula
ps:labs:01 [2022/10/04 15:16] (current)
ionut.gorgos
Line 1: Line 1:
 ===== Laboratorul 01. ===== ===== Laboratorul 01. =====
  
-În acest laborator ne vom obișnui cu OCTAVE ​ș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 OCTAVE ​este o unealtă foarte folositoare pentru a face aceste operații.+Î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 s-avut ca referință tutorialul (acum am trecut la Octave) [[https://​web.archive.org/​web/​20180417185102/​http://​uk.mathworks.com/​help/​pdf_doc/​matlab/​getstart.pdf | de aici]]+Pentru a obține o licență MATLAB, urmați ghidul{{:ps:​labs:​ghid_matlab.pdf|}}
  
-Octave poate fi downloadat de aici: [[https://www.gnu.org/software/octave/download.html Octave]]+Pentru acest laborator s-a avut ca referință tutorialul:[[https://web.archive.org/web/20180417185102/http://uk.mathworks.com/​help/​pdf_doc/​matlab/​getstart.pdf ​de aici]]
  
 Urmărind capitolul 1 (Quick Start), haideți să facem următoarele exerciții. Urmărind capitolul 1 (Quick Start), haideți să facem următoarele exerciții.
Line 20: Line 20:
 2. Vectori 2. Vectori
  
-Semnalele pot fi reprezentate ca secvențe de valori, unde în OCTAVE ​se face, de obicei, prin vectori sau matrici. Să începem cu vectorii.+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: Pentru a genera un vector de valori date, putem scrie pur și simplu ceva de genul:
Line 27: Line 27:
   * Creați un vector cu 7 elemente de unu (folosind funcția '​ones'​),​ iar apoi multiplicați-l cu o constantă. Afișați rezultatul.   * Creați un vector cu 7 elemente de unu (folosind funcția '​ones'​),​ iar apoi multiplicați-l cu o constantă. Afișați rezultatul.
   * Creați un vector de 5 valori aleatoare folosind funcția '​rand'​. Introduceți în consolă 'help rand' pentru a găsi cum să o utilizați. ​   * Creați un vector de 5 valori aleatoare folosind funcția '​rand'​. Introduceți în consolă 'help rand' pentru a găsi cum să o utilizați. ​
-  * Indexarea în OCTAVE ​pornește de la 1, deci puteți selecta primul element din vector folosind comanda vec1(1). De asemenea, puteți indexa părți din vector: vec1(2:3) pentru a selecta un vector format din al doilea și al treilea element din vec1. vec1(end-1:​end) selectează ultimele 2 elemente din vec1.+  * Indexarea în MATLAB ​pornește de la 1, deci puteți selecta primul element din vector folosind comanda vec1(1). De asemenea, puteți indexa părți din vector: vec1(2:3) pentru a selecta un vector format din al doilea și al treilea element din vec1. vec1(end-1:​end) selectează ultimele 2 elemente din vec1.
  
 3. Matrici 3. Matrici
Line 59: Line 59:
 Verificați funcționalitatea funcțillor '​save'​ și '​load'​ (folosind 'help load', 'help save'​). Verificați funcționalitatea funcțillor '​save'​ și '​load'​ (folosind 'help load', 'help save'​).
  
-  * Salvați variabilele pe care le-ați creat, într-un fișiser.+  * Salvați variabilele pe care le-ați creat, într-un fișier.
  
   * Ștergeți toate variabilele folosind '​clear';​   * Ștergeți toate variabilele folosind '​clear';​
Line 88: Line 88:
 9. Funcții 9. Funcții
  
-La fel ca în majoritatea limbajelor de programare, o proprietată ​interesantă este abilitatea de a apela alte funcții.+La fel ca în majoritatea limbajelor de programare, o proprietate ​interesantă este abilitatea de a apela alte funcții.
  
   * Generați un vector aleator folosind '​rand'​ și găsiți maximul (folosiți funcția '​max'​).   * Generați un vector aleator folosind '​rand'​ și găsiți maximul (folosiți funcția '​max'​).
-  * Rețineți că OCTAVE ​a fost dezvoltat pentru a fi folosit pe matrici, deci există multe modalități de a manipula matricele.+  * Rețineți că MATLAB ​a fost dezvoltat pentru a fi folosit pe matrici, deci există multe modalități de a manipula matricele.
   * Calculați suma pătratelor elementelor dintr-un vector.   * Calculați suma pătratelor elementelor dintr-un vector.
   * Puteți parcurge vectorul folosind instrucțiunea '​for'​.   * Puteți parcurge vectorul folosind instrucțiunea '​for'​.
Line 108: Line 108:
 10. Grafice 10. Grafice
  
-Graficele sunt unele dintre cele mai tari lucruri în OCTAVE, deoarece acestea ne permit să vizualizăm datele noastre.+Graficele sunt unele dintre cele mai tari lucruri în MATLAB, deoarece acestea ne permit să vizualizăm datele noastre.
  
-  * Folosiți funcția '​sin'​ pentru a genera o sinusoidă de frecvență 1 Hz peste 1 secundă (astfel încât ar trebui să obțineți o perioadă completă). Pentru asta trebuie să generați intervalul de timp peste [0 ... 1] în pași foarte mici (e.g. 0.01) și apoi să apelați funcția sin(2*pi*f*t) peste această secvență (unde f este frecvența, t este intervalul de timp, iar pi este numărul 3.1415...) pentru a obține sinusoida ca o secvență.+  * Folosiți funcția '​sin'​ pentru a genera o sinusoidă de frecvență 1 Hz peste 1 secundă (astfel încât ar trebui să obțineți o perioadă completă). Pentru asta trebuie să generați intervalul de timp peste [0 ... 1] în pași foarte mici (e.g. 0.01) și apoi să apelați funcția sin(2*pi*f*t) peste această secvență (unde f este frecvența, t este intervalul de timp, iar pi este numărul 3.1415...) pentru a obține sinusoida ca o secvență. ​Observație:​ În MATLAB NU trebuie să declarați variabila //pi// !
   * Verificați funcția '​plot'​ folosind fie 'help plot', sau chiar mai bine 'doc plot'.   * Verificați funcția '​plot'​ folosind fie 'help plot', sau chiar mai bine 'doc plot'.
   * Plotați sinusoida pe care ați făcut-o mai devreme folosind funcția '​plot'​.   * Plotați sinusoida pe care ați făcut-o mai devreme folosind funcția '​plot'​.
Line 120: Line 120:
   * Adăugați o legendă pentru a clarifica care sunt semnalele.   * Adăugați o legendă pentru a clarifica care sunt semnalele.
  
-Aici este un exemplu cum ar trebui să arate: {{:ps:laboratoare:​sine1.png?​direct&​200|Figura 1}}+Aici este un exemplu cum ar trebui să arate: {{:ps:labs:​sine1.png?​direct&​200|Figura 1}}
  
 11. Câteva exerciții simple de procesare de semnal 11. Câteva exerciții simple de procesare de semnal
  
-Cel mai bine este să vă faceți programele ​OCTAVE ​î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.+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.
  
   * Creați un script nou pe care îl numiți '​basic_dsp.m',​ în care veți scrie comenzile pentru următoarele operații.   * Creați un script nou pe care îl numiți '​basic_dsp.m',​ în care veți scrie comenzile pentru următoarele operații.
Line 132: Line 132:
   * Afișați aceste trei semnale și verificați diferențele. Hint: folosiți '​figure',​ înaintea fiecărei comenzi '​plot'​ pentru a genera trei grafice diferite sau afișați-le pe toate în același grafic (sau în două grafice, unul pentru sinusoida inițială și altul pentru sinusoida rezultată).   * Afișați aceste trei semnale și verificați diferențele. Hint: folosiți '​figure',​ înaintea fiecărei comenzi '​plot'​ pentru a genera trei grafice diferite sau afișați-le pe toate în același grafic (sau în două grafice, unul pentru sinusoida inițială și altul pentru sinusoida rezultată).
  
-Ar trebui să onțineți ceva de genul: +Ar trebui să obțineți ceva de genul: 
-{{:ps:laboratoare:​sine2.png?​direct&​200|Figura 2}}+{{:ps:labs:​sine2.png?​direct&​200|Figura 2}}
  
  
Line 141: Line 141:
 12. O aplicație ușoară 12. O aplicație ușoară
  
-În acest fișier {{:ps:laboratoare:​data.mat|data.mat}} aveți trei imagini, reprezentate ca matrici tridimensionale (o matrice per culoare - R, G, B).+În acest fișier {{:ps:labs:​data.mat|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: 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 IR = Img_initial * 0.3 + R1 * 0.3 + R2 * 0.3
Line 158: Line 158:
 13. Column major 13. Column major
  
-OCTAVE ​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 = 1000) 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. +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 = 1000) 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. 
  
  
 <​hidden>​ <​hidden>​
-14. BONUS: In fișierul următor aveți o imagine ({{:ps:laboratoare:​noisy_img.mat|noisy_img.mat}}) care a fost alterată cu zgomot, valorile unor pixeli devenind foarte mari,+14. BONUS: In fișierul următor aveți o imagine ({{:ps:labs:​noisy_img.mat|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ă. Imaginea e reprezentată ca o matrice cu valori in [0,1] și o vom afișa cu functia imshow(noise_img).  și ale altora foarte mici. Important este ca pixelii cu zgomot apar destul de rar. Încercați să refaceți imaginea originală. Imaginea e reprezentată ca o matrice cu valori in [0,1] și o vom afișa cu functia imshow(noise_img).
  
ps/labs/01.1602515567.txt.gz · Last modified: 2020/10/12 18:12 by darius.necula
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0