Differences

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

Link to this comparison view

ps:laboratoare:01 [2020/10/07 05:55]
ionut.gorgos
ps:laboratoare:01 [2020/10/07 18:49] (current)
ionut.gorgos
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) 
-5. De la cat incepe indexarea in Octave? 
-   A: De la 1 
-6. Cum pot calcula suma elementelor unui vector? 
-   A: folosind functia sum sau adunand element cu element :) 
-7. Ce face . inaintea unei operatii? 
-   A: Aplica operatia element cu element 
-8. Cum transformi o matrice de 3x3 intr-un vector 1x9? 
-   A: matrice(:​)'​ 
-9. 
-</​hidden>​ 
- 
  
ps/laboratoare/01.1602039346.txt.gz · Last modified: 2020/10/07 05:55 by ionut.gorgos
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