Differences

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

Link to this comparison view

ps:laboratoare:01 [2020/10/06 15:06]
darius.necula
ps:laboratoare:01 [2020/10/07 18:49] (current)
ionut.gorgos
Line 3: Line 3:
 Î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 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.
  
-Pentru acest laborator s-a avut ca referință tutorialul (acum am trecut la Octave) [[http://​uk.mathworks.com/​help/​pdf_doc/​matlab/​getstart.pdf?​s_tid=int_tut ​| de aici]]+Pentru acest laborator s-a 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]]
  
 Octave poate fi downloadat de aici: [[https://​www.gnu.org/​software/​octave/​download.html | Octave]] Octave poate fi downloadat de aici: [[https://​www.gnu.org/​software/​octave/​download.html | Octave]]
Line 138: Line 138:
  
 /* Make it hidden before lab, unhide afterwards */ /* Make it hidden before lab, unhide afterwards */
-<​hidden>​ 
-Un exemplu de cod este acesta: 
-<code matlab basic_dsp.m>​ 
-close all; 
-f1 = 1; 
-f2 = 2; 
-x = 0:0.01:1; 
-s1 = sin(2*pi*f1*x);​ 
-s2 = sin(2*pi*f2*x);​ 
-h1 = figure; 
-plot(x, [s1; s2]); 
-xlabel('​Time (s)'); 
-ylabel('​Amplitude'​);​ 
-title('​Two sinewaves'​);​ 
-legend('​1 Hz', '2 Hz'); 
-h2 = figure; 
-c = s1 + s2; 
-plot(x, c); 
-xlabel('​Time (s)'); 
-ylabel('​Amplitude'​);​ 
-title('​Sum of the two sinewaves'​);​ 
-print(h1, '​-dpng',​ '​sine1.png'​);​ 
-print(h2, '​-dpng',​ '​sine2.png'​);​ 
-</​code>​ 
-</​hidden>​ 
- 
  
-  ​ 
 12. O aplicație ușoară 12. O aplicație ușoară
  
Line 182: Line 155:
 Rețineți că o matrice imagine conține numai valori de la 0 la 255. Rețineți că o matrice imagine conține numai valori de la 0 la 255.
  
-<​hidden>​ 
-Un exemplu de cod este acesta: 
-<code matlab> 
-II = IR - R1*0.3 - R2*0.3; 
-image(II) 
-</​code>​ 
-</​hidden>​ 
  
 13. Column major 13. Column major
Line 194: Line 160:
 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.  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. 
  
-<​hidden>​ 
-<code matlab test_column_major>​ 
-clear all 
- 
-N = 1000; 
-A = rand(N); 
-B = rand(N); 
-C = zeros(N); 
- 
-tic  
-for i = 1:size(A,1) 
-    for j = 1:size(A,2) 
-        C(i,j) = A(i,j) * B(i,j); 
-    end 
-end 
-time_row = toc 
- 
-tic  
-for j = 1:size(A,2) 
-    for i = 1:size(A,1) 
-        C(i,j) = A(i,j) * B(i,j); 
-    end 
-end 
-time_column = toc 
- 
-tic 
-C = A .* B; 
-time_matrix_operation = toc 
- 
-</​code>​ 
-</​hidden>​ 
  
 <​hidden>​ <​hidden>​
Line 238: Line 173:
 Observație pentru asistenți: acest tip de zgomot se numeste salt and pepper. Studentii vor ajunge repede la soluția cu median filter: Observație pentru asistenți: acest tip de zgomot se numeste salt and pepper. Studentii vor ajunge repede la soluția cu median filter:
 https://​www.mathworks.com/​help/​images/​noise-removal.html. De recomandat ca punctarea sa se faca doar in cazul implementarilor proprii. https://​www.mathworks.com/​help/​images/​noise-removal.html. De recomandat ca punctarea sa se faca doar in cazul implementarilor proprii.
- 
- 
- 
- 
-<code matlab '​sinewaves.m'>​ 
-clear all 
-close all 
-% incarc imaginea, transform in gri 
-% redimensionez valoarea pixelilor in intervalul [0,1] 
-img = imread('​lab02-city-vision2.jpg'​);​ 
-gray = imresize(img,​0.2);​ 
-gray = double(gray(:,:,​1)) / 255; 
- 
-% calculez matrice de zgomot random uniform 
-noise = rand(size(gray));​ 
-th1 = 0.987; 
-th2 = 0.013; 
-% selectez pixelii care vor fii alterati 
-salt = double(noise > 0.987) ; 
-pepper = double(noise < 0.007); 
- 
-% adaug zgomot alb(salt) dand valori foarte mari unor pixeli 
-% adaug zgomot negru(pepper) dand valori foarte mici unor pixeli 
-noisy_img = noisy_img .* salt .* th1  + (1-salt) .* gray; 
-noisy_img = noisy_img .* pepper * th2 .* noise + (1-pepper) .* noisy_img; 
- 
-figure , imshow(noisy_img);​ 
-title('​Noisy Image'​) 
- 
-filtered_img = medfilt2(noisy_img);​ 
-figure , imshow(filtered_img);​ 
-title('​Filtered Image'​) 
- 
-save('​noisy_img',​ '​noisy_img'​) 
- 
-</​code>​ 
 </​hidden>​ </​hidden>​
- 
-<​hidden>​ 
-Intrebari individuale pentru studenti: 
-1. Cum creez un vector in octave? 
-   A: Folosesc paranteze drepte v = [1:3]; 
-2. Cum salvez o variabila intr-un fisier? 
-   A: save filename variabila 
-3. Cum inmultesc doua matrice element cu element? 
-   A: A .* B 
-4. Ce functie pot folosi pentru a afla dimensiunile unei matrice / nr. linii / nr. coloane? 
-   A: size(matrice) / size(matrice,​1) / size(matrice,​2) 
-</​hidden>​ 
- 
  
ps/laboratoare/01.1601986014.txt.gz · Last modified: 2020/10/06 15:06 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