Differences

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

Link to this comparison view

ps:labs_python:01 [2023/10/03 20:47]
darius.necula
ps:labs_python:01 [2023/10/04 09:21] (current)
ionut.gorgos
Line 21: Line 21:
   * <​nowiki>​scrieți print(a**b)</​nowiki>​   * <​nowiki>​scrieți print(a**b)</​nowiki>​
  
-Pentru procesarea semnalelor ne vom folosi de bibliotecile **scipy** și **numpy**. Aceastea ne vor ajuta să aplicăm o mulțime de operații matematice vectoriale. Putem defini elementele pe care le folosim cel mai des, precum vectorii și matricele, folosindu-ne de aceaste ​librării.+Pentru procesarea semnalelor ne vom folosi de bibliotecile **scipy** și **numpy**. Aceastea ne vor ajuta să aplicăm o mulțime de operații matematice vectoriale. Putem defini elementele pe care le folosim cel mai des, precum vectorii și matricele, folosindu-ne de aceaste ​biblioteci.
 <​note>​Va trebui să importați bibliotecile de care aveți nevoie pentru a le folosi <​note>​Va trebui să importați bibliotecile de care aveți nevoie pentru a le folosi
   import numpy as np   import numpy as np
Line 39: Line 39:
   * De asemenea, puteți indexa părți din vector: vec1[1:3] pentru a selecta un vector format din al doilea și al treilea element din vec1.   * De asemenea, puteți indexa părți din vector: vec1[1:3] pentru a selecta un vector format din al doilea și al treilea element din vec1.
   * vec1[-2:] selectează ultimele 2 elemente din vec1.   * vec1[-2:] selectează ultimele 2 elemente din vec1.
 +<​note>​Pentru a beneficia de performanță și de operațiile matematice din $numpy$, vom încerca să folosim mereu numpy arrays.</​note>​
 3. Matrice 3. Matrice
 <​note>​În Python, putem implementa o matrice ca o listă de liste. Putem trata fiecare element ca o linie a matricei. <​note>​În Python, putem implementa o matrice ca o listă de liste. Putem trata fiecare element ca o linie a matricei.
Line 45: Line 45:
 Spre exemplu, <​nowiki>​X = [[1, 2], [4, 5], [3, 6]]</​nowiki>​ va reprezenta o matrice de 3 pe 2 (3 linii și 2 coloane). Prima linie poate fi selectată ca X[0], iar primul element de pe prima linie poate fi selectat ca X[0][0]. Spre exemplu, <​nowiki>​X = [[1, 2], [4, 5], [3, 6]]</​nowiki>​ va reprezenta o matrice de 3 pe 2 (3 linii și 2 coloane). Prima linie poate fi selectată ca X[0], iar primul element de pe prima linie poate fi selectat ca X[0][0].
  
-În continuare ne vom folosi de **numpy.matrix** pentru a crea și manipula matrice.+În continuare ne vom folosi de **numpy.array** pentru a crea și manipula matrice(2D array) sau putem folosi o clasă deprecated, **numpy.matrix**.
 </​note>​ </​note>​
   * Creați o matrice de 5x4 de numere aleatoare (e.g. folosind '//​np.random//'​ ca mai înainte). Apoi creați o matrice cu elemente de unu de aceeași dimensiune. Acum adunați cele două matrici și afișați rezultatul.   * Creați o matrice de 5x4 de numere aleatoare (e.g. folosind '//​np.random//'​ ca mai înainte). Apoi creați o matrice cu elemente de unu de aceeași dimensiune. Acum adunați cele două matrici și afișați rezultatul.
Line 60: Line 60:
 4. Transpusa 4. Transpusa
  
-Transpusa unei matrice poate fi obținută prin aplicarea funcției transpose pe o matrice: '//​numpy.matrix.transpose//'​.+Transpusa unei matrice poate fi obținută prin aplicarea funcției transpose pe o matrice: '//​numpy.transpose//'​.
  
   * Transpuneți matricea pe care ați creat-o mai devreme.   * Transpuneți matricea pe care ați creat-o mai devreme.
Line 98: Line 98:
  
 În laboratoarele care vor urma va trebui să generăm grafice cu ajutorul cărora vom vizualiza datele noastre. În laboratoarele care vor urma va trebui să generăm grafice cu ajutorul cărora vom vizualiza datele noastre.
-<​note>​Vom folosi matplotlib pentru a genera grafice așa că importați această ​librărie+<​note>​Vom folosi matplotlib pentru a genera grafice așa că importați această ​bibliotecă
   import matplotlib.pyplot as plt    import matplotlib.pyplot as plt 
 </​note>​ </​note>​
 +<note important>​Dacă primiți eroare la afișare pe Windows, instalați [[https://​learn.microsoft.com/​en-us/​cpp/​windows/​latest-supported-vc-redist?​view=msvc-170#​visual-studio-2015-2017-2019-and-2022|Microsoft Visual C++ Redistributable]]</​note>​
  
   * 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. 100 de puncte) ș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:​ Folosiți //​numpy.pi//​ pentru variabila //pi// !   * 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. 100 de puncte) ș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:​ Folosiți //​numpy.pi//​ pentru variabila //pi// !
Line 125: Line 126:
 9. O aplicație ușoară 9. O aplicație ușoară
  
-În acestă arhivă {{:​ps:​labs_python:​data.zip|data.zip}} aveți trei imagini, reprezentate ca matrici ​tridimensionale (o matrice per culoare - R, G, B).+În acestă arhivă {{:​ps:​labs_python:​data.zip|data.zip}} aveți trei imagini, reprezentate ca matrice ​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 132: Line 133:
  
   * dezarhivați imaginile și încărcați-le în mediul vostru de lucru   * dezarhivați imaginile și încărcați-le în mediul vostru de lucru
-  * încărcați ​matricile ​(puteți folosi funția '//​imread//'​ din biblioteca ​'//​matplotlib.image//'​) +  * încărcați ​matricele ​(puteți folosi funția '//​imread//'​ din modulul ​'//​matplotlib.image//'​) 
-  * afișați cele trei imagini date (matrici) pentru a le vizualiza, folosind funcția '//​imshow//'​ din '//​matplotlib.pyplot//',​ e.g. '//​plt.imshow(R1)//'​. +  * afișați cele trei imagini date (matrice) pentru a le vizualiza, folosind funcția '//​imshow//'​ din '//​matplotlib.pyplot//',​ e.g. '//​plt.imshow(R1)//'​. 
-  * scădeți cumva matricile ​de zgomot+  * scădeți cumva matricele ​de zgomot
   * afișați imaginea după ce ați eliminat zgomotul   * afișați imaginea după ce ați eliminat zgomotul
  
Line 142: Line 143:
  
 În numpy se foloseste convenția de row-major, deci este indicat să se parcurgă întâi dimensiunea cea mai din dreapta (în cazul matricelor, dimensiunea liniilor). De asemenea, mereu când este posibil, este indicat să se folosească operații vectoriale. În numpy se foloseste convenția de row-major, deci este indicat să se parcurgă întâi dimensiunea cea mai din dreapta (în cazul matricelor, dimensiunea liniilor). De asemenea, mereu când este posibil, este indicat să se folosească operații vectoriale.
 +<note important>​
 +În mod default operatorul '​*'​ va face înmulțire element cu element.
 +Pentru înmulțire de matrici trebuie să folosim funcția '​numpy.dot'​ sau operatorul '​@'​.
 +</​note>​
  
 <code python> <code python>
ps/labs_python/01.1696355230.txt.gz · Last modified: 2023/10/03 20:47 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