Differences

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

Link to this comparison view

ps:labs_python_gpt:01 [2025/09/21 21:31]
andrei.gavriliu
ps:labs_python_gpt:01 [2025/09/21 22:11] (current)
andrei.gavriliu
Line 4: Line 4:
  
 Laboratoarele se pot face utilizând **Google Colab** (care ne oferă un notebook Python în browser în care putem rula cod fără a ne mai preocupa de setup), sau **Pycharm** (care este un IDE dedicat pentru Python). Laboratoarele se pot face utilizând **Google Colab** (care ne oferă un notebook Python în browser în care putem rula cod fără a ne mai preocupa de setup), sau **Pycharm** (care este un IDE dedicat pentru Python).
- 
-De asemenea, încurajăm folosirea modelelor de AI precum ChatGPT, Google Gemini sau GitHub Copilot, dar într-un mod constructiv rezolvării laboratoarelor. Utilizarea lor eficientă își dorește să ofere studentului părți din soluție sau idei, atunci când acesta se află în impas și nu soluția completă a laboratorului 
  
 <note important>​Vom folosi versiunea **[[https://​www.python.org/​downloads/​ | Python 3.11]]**</​note>​ <note important>​Vom folosi versiunea **[[https://​www.python.org/​downloads/​ | Python 3.11]]**</​note>​
  
-[[https://​colab.research.google.com | Google Colab]] 
  
-[[https://www.jetbrains.com/pycharm/​download | Download Pycharm]] - folosiți versiunea Community care este gratuită+ 
 +De asemenea, încurajăm folosirea modelelor de AI precum ChatGPT, Google Gemini sau GitHub Copilot, dar într-un mod constructiv rezolvării laboratoarelor. Utilizarea lor eficientă își dorește să ofere studentului părți din soluție sau idei, atunci când acesta se află în impas și nu soluția completă a laboratorului. 
 + 
 +<note tip>​**Task:** Generați și afișati o sinusoidă de frecvență 1 Hz peste 1 secundă.<​/note> 
 + 
 +<note warning>​**Exemplul unui prompt pentru o abordare ineficientă:​** 
 +  * Generați și afișati o sinusoidă de frecvență 1 Hz peste 1 secundă. 
 +</note> 
 + 
 +<note tip>​**Exemplul unui prompt pentru o abordare eficientă:​**  
 +  * Cum poți defini frecvența?,​ De ce este relevantă pentru o sinusoidă?​ 
 +  * Ce funcție din Python pot folosi pentru a genera o sinusoidă?​ 
 +  * Ce argumente primește?​ 
 +  * Cum pot afișa sinusoida pe ecran? 
 +</​note>​ 
  
 1. Obișnuiți-vă cu mediul de lucru: spațiul de lucru (workspace),​ editarea scriptului, consola. 1. Obișnuiți-vă cu mediul de lucru: spațiul de lucru (workspace),​ editarea scriptului, consola.
Line 17: Line 29:
   * scrieți a = 2   * scrieți a = 2
   * scrieți b = 3   * scrieți b = 3
-  * scrieți print(a+b) +  * afișați suma (a + b) 
-  * scrieți c=a+b +  * atribuiți-i lui suma celor două variabile anterior definite 
-  * scrieți print() +  * afișați c 
-  * scrieți print(a*b) +  * afișați a*b 
-  * <​nowiki>​scrieți print(a**b)</​nowiki>​+  * <​nowiki>​afișați (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 biblioteci. 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.
Line 36: Line 48:
     * vec1 = [1, 2, 3, 4]  # Notați parantezele drepte '​['​ și '​]'​ necesare pentru a include valori.     * vec1 = [1, 2, 3, 4]  # Notați parantezele drepte '​['​ și '​]'​ necesare pentru a include valori.
     * sau putem folosi functia '//​array//'​ din numpy: vec2 = np.array([1,​ 2, 3, 4])      * sau putem folosi functia '//​array//'​ din numpy: vec2 = np.array([1,​ 2, 3, 4]) 
-  * Creați un vector cu 7 elemente de unu (folosind ​funcția ​'//​np.ones//'​), iar apoi multiplicați-l cu o constantă. Afișați rezultatul. +  * Creați un vector cu 7 elemente de unu (verificați documentația numpy pentru ​funcția ​corespunzătoare sau ChatGPT), iar apoi multiplicați-l cu o constantă. Afișați rezultatul. 
-  * Creați un vector de 5 valori aleatoare folosind ​modulul '//​np.random//'​.+  * Creați un vector de 5 valori aleatoare folosind ​un modul corespunzător din numpy.
   * Indexarea în Python pornește de la 0, deci puteți selecta primul element din vector folosind comanda vec1[0].   * Indexarea în Python pornește de la 0, deci puteți selecta primul element din vector folosind comanda vec1[0].
   * 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.
Line 49: Line 61:
 În continuare ne vom folosi de **numpy.array** pentru a crea și a manipula matrice(2D array) sau putem folosi o clasă deprecated, **numpy.matrix**. În continuare ne vom folosi de **numpy.array** pentru a crea și a 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 (asemănător cu vectorul cu valori ​random ​definit anterior). Apoi creați o matrice cu elemente de unu de aceeași dimensiune. Acum adunați cele două matrici și afișați rezultatul.
  
 <​hidden>​ <​hidden>​
Line 62: Line 74:
 4. Transpusa 4. Transpusa
  
-Transpusa unei matrice poate fi obținută ​prin aplicarea ​funcției transpose pe o matrice: '//numpy.transpose//'​.+Transpusa unei matrice poate fi obținută ​tot cu ajutorul ​funcțiilor din numpy.
  
   * Transpuneți matricea pe care ați creat-o mai devreme.   * Transpuneți matricea pe care ați creat-o mai devreme.
-  * Creați un vector coloană cu elemente de unu, folosind funcția '//​np.ones//' ​și modificând parametrul shape cu un număr de elemente mai mare decât unu pentru prima dimensiune. Printați acest vector.+  * Creați un vector coloană cu elemente de unu, ca la al doilea exercițiu și modificând parametrul shape cu un număr de elemente mai mare decât unu pentru prima dimensiune. Printați acest vector.
   * Acum transpuneți acest vector și printați-l din nou. Care este diferența dintre afișări?   * Acum transpuneți acest vector și printați-l din nou. Care este diferența dintre afișări?
  
Line 81: Line 93:
 Creați o secvență de 10 elemente, pornind de la 5. Creați o secvență de 10 elemente, pornind de la 5.
  
-  * Putem face incrementul diferit de 1, folosind ceva de genul range(1, 10, 3). Încercați și vedeți rezultatul. De asemenea, ​putețfolosi ​funcția ​'//​numpy.linspace//' pentru a crea puncte egal distanțate.+  * Putem face incrementul diferit de 1, folosind ceva de genul range(1, 10, 3). Încercați și vedeți rezultatul. De asemenea, ​numpy oferă și funcția linspace.
  
   * Găsiți ce funcție puteți folosi pentru a determina lungimea și dimensiunea vectorilor și matricelor.   * Găsiți ce funcție puteți folosi pentru a determina lungimea și dimensiunea vectorilor și matricelor.
Line 93: Line 105:
  
   * Creați o variabilă care să conțină șirul de caractere '​Signal processing'​.   * Creați o variabilă care să conțină șirul de caractere '​Signal processing'​.
-  * Folosiți funcția '​print'​ pentru a afișa ​acest șir.+  * Afișați acest șir.
   * Afișați un șir care conține 'Lab of ', concatenat cu șirul precedent.   * Afișați un șir care conține 'Lab of ', concatenat cu șirul precedent.
   * Acum folosiți //fstring// pentru a afișa un șir de caractere, urmat de o cifră aleasă de voi.   * Acum folosiți //fstring// pentru a afișa un șir de caractere, urmat de o cifră aleasă de voi.
Line 105: Line 117:
 <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>​ <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// !+  * Folosind biblioteca numpy, generați 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// !
   * Plotați sinusoida pe care ați făcut-o mai devreme folosind funcția '//​plt.plot//'​.   * Plotați sinusoida pe care ați făcut-o mai devreme folosind funcția '//​plt.plot//'​.
   * Schimbați culoarea liniei sinusoidei.   * Schimbați culoarea liniei sinusoidei.
Line 134: Line 146:
 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: 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:
  
-  * dezarhivați imaginile și încărcați-le în mediul vostru de lucru 
   * încărcați matricele (puteți folosi funția '//​imread//'​ din modulul '//​matplotlib.image//'​)   * încărcați matricele (puteți folosi funția '//​imread//'​ din modulul '//​matplotlib.image//'​)
-  * afișați cele trei imagini date (matrice) ​pentru a le vizualiza, folosind funcția ​'//​imshow//' ​din '//matplotlib.pyplot//',​ e.g. '//​plt.imshow(R1)//'​.+  * afișați cele trei imagini date (matrice) ​asemenea graficelor, folosind funcția ​corespunzătoare ​din matplotlib
   * scădeți cumva matricele 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
ps/labs_python_gpt/01.1758479488.txt.gz · Last modified: 2025/09/21 21:31 by andrei.gavriliu
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