Fișiere de tip Script, Function și CallBack - uicontrol.

Σχετικά έγγραφα
Metode iterative pentru probleme neliniare - contractii

(a) se numeşte derivata parţială a funcţiei f în raport cu variabila x i în punctul a.

5. FUNCŢII IMPLICITE. EXTREME CONDIŢIONATE.

Metode de interpolare bazate pe diferenţe divizate

Componente şi Circuite Electronice Pasive. Laborator 4. Măsurarea parametrilor mărimilor electrice

V.7. Condiţii necesare de optimalitate cazul funcţiilor diferenţiabile

Curs 10 Funcţii reale de mai multe variabile reale. Limite şi continuitate.

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor X) functia f 1

Analiza în curent continuu a schemelor electronice Eugenie Posdărăscu - DCE SEM 1 electronica.geniu.ro

Functii definitie, proprietati, grafic, functii elementare A. Definitii, proprietatile functiilor

Curs 14 Funcţii implicite. Facultatea de Hidrotehnică Universitatea Tehnică "Gh. Asachi"

DISTANŢA DINTRE DOUĂ DREPTE NECOPLANARE

5.4. MULTIPLEXOARE A 0 A 1 A 2

MARCAREA REZISTOARELOR

Sisteme diferenţiale liniare de ordinul 1

Laborator 6. Integrarea ecuaţiilor diferenţiale

a n (ζ z 0 ) n. n=1 se numeste partea principala iar seria a n (z z 0 ) n se numeste partea

Planul determinat de normală şi un punct Ecuaţia generală Plane paralele Unghi diedru Planul determinat de 3 puncte necoliniare

Seminariile Capitolul X. Integrale Curbilinii: Serii Laurent şi Teorema Reziduurilor

Integrala nedefinită (primitive)

Teme de implementare in Matlab pentru Laboratorul de Metode Numerice

Curs 4 Serii de numere reale

Asupra unei inegalităţi date la barajul OBMJ 2006

III. Serii absolut convergente. Serii semiconvergente. ii) semiconvergentă dacă este convergentă iar seria modulelor divergentă.

Aplicaţii ale principiului I al termodinamicii la gazul ideal

5.5. REZOLVAREA CIRCUITELOR CU TRANZISTOARE BIPOLARE


riptografie şi Securitate

COLEGIUL NATIONAL CONSTANTIN CARABELLA TARGOVISTE. CONCURSUL JUDETEAN DE MATEMATICA CEZAR IVANESCU Editia a VI-a 26 februarie 2005.

Componente şi Circuite Electronice Pasive. Laborator 3. Divizorul de tensiune. Divizorul de curent

Subiecte Clasa a VIII-a

Curs 1 Şiruri de numere reale

Conice. Lect. dr. Constantin-Cosmin Todea. U.T. Cluj-Napoca

Laborator 11. Mulţimi Julia. Temă

SEMINAR 14. Funcţii de mai multe variabile (continuare) ( = 1 z(x,y) x = 0. x = f. x + f. y = f. = x. = 1 y. y = x ( y = = 0

R R, f ( x) = x 7x+ 6. Determinați distanța dintre punctele de. B=, unde x și y sunt numere reale.


Definiţia generală Cazul 1. Elipsa şi hiperbola Cercul Cazul 2. Parabola Reprezentari parametrice ale conicelor Tangente la conice

2.2.1 Măsurători asupra semnalelor digitale

Seminar 5 Analiza stabilității sistemelor liniare

2. Circuite logice 2.4. Decodoare. Multiplexoare. Copyright Paul GASNER

Ecuaţia generală Probleme de tangenţă Sfera prin 4 puncte necoplanare. Elipsoidul Hiperboloizi Paraboloizi Conul Cilindrul. 1 Sfera.

TEMA 9: FUNCȚII DE MAI MULTE VARIABILE. Obiective:

Subiecte Clasa a VII-a

1.7. AMPLIFICATOARE DE PUTERE ÎN CLASA A ŞI AB

Criptosisteme cu cheie publică III

BARAJ DE JUNIORI,,Euclid Cipru, 28 mai 2012 (barajul 3)

Ecuatii trigonometrice

a. 11 % b. 12 % c. 13 % d. 14 %

Fig Impedanţa condensatoarelor electrolitice SMD cu Al cu electrolit semiuscat în funcţie de frecvenţă [36].

prin egalizarea histogramei

Algebra si Geometrie Seminar 9

Zgomotul se poate suprapune informaţiei utile în două moduri: g(x, y) = f(x, y) n(x, y) (6.2)

Functii Breviar teoretic 8 ianuarie ianuarie 2011

MATLAB Un prim pas spre cercetare. Cătălina Neghină Alina Sultana Mihai Neghină

SERII NUMERICE. Definiţia 3.1. Fie (a n ) n n0 (n 0 IN) un şir de numere reale şi (s n ) n n0

VII.2. PROBLEME REZOLVATE

Exemple de probleme rezolvate pentru cursurile DEEA Tranzistoare bipolare cu joncţiuni

Electronică anul II PROBLEME

RĂSPUNS Modulul de rezistenţă este o caracteristică geometrică a secţiunii transversale, scrisă faţă de una dintre axele de inerţie principale:,

2.1 Sfera. (EGS) ecuaţie care poartă denumirea de ecuaţia generală asferei. (EGS) reprezintă osferă cu centrul în punctul. 2 + p 2

Ovidiu Gabriel Avădănei, Florin Mihai Tufescu,

4. Măsurarea tensiunilor şi a curenţilor electrici. Voltmetre electronice analogice

Examen AG. Student:... Grupa:... ianuarie 2011

CIRCUITE LOGICE CU TB

* K. toate K. circuitului. portile. Considerând această sumă pentru toate rezistoarele 2. = sl I K I K. toate rez. Pentru o bobină: U * toate I K K 1

V O. = v I v stabilizator

Capitolul 14. Asamblari prin pene

T R A I A N ( ) Trigonometrie. \ kπ; k. este periodică (perioada principală T * =π ), impară, nemărginită.


Εμπορική αλληλογραφία Ηλεκτρονική Αλληλογραφία

Ecuatii exponentiale. Ecuatia ce contine variabila necunoscuta la exponentul puterii se numeste ecuatie exponentiala. a x = b, (1)

Curve Fitting Tool. Bibliotecă de modele de regresii cu puncte iniţiale optimizate şi parametri de rezolvare

Foarte formal, destinatarul ocupă o funcţie care trebuie folosită în locul numelui

Transformări de frecvenţă

Transformata Laplace

2. Sisteme de forţe concurente...1 Cuprins...1 Introducere Aspecte teoretice Aplicaţii rezolvate...3

Laborator 1: INTRODUCERE ÎN ALGORITMI. Întocmit de: Claudia Pârloagă. Îndrumător: Asist. Drd. Gabriel Danciu

Codificatorul SN74148 este un codificator zecimal-bcd de trei biţi (fig ). Figura Codificatorul integrat SN74148

Profesor Blaga Mirela-Gabriela DREAPTA

Capitolul 4 PROPRIETĂŢI TOPOLOGICE ŞI DE NUMĂRARE ALE LUI R. 4.1 Proprietăţi topologice ale lui R Puncte de acumulare

Capitolul 4. Integrale improprii Integrale cu limite de integrare infinite

Examen AG. Student:... Grupa: ianuarie 2016

Tratarea numerică a semnalelor

Proiectarea filtrelor prin metoda pierderilor de inserţie

Tranzistoare bipolare şi cu efect de câmp

wscopul lucrării: prezentarea modului de realizare şi de determinare a valorilor parametrilor generatoarelor de semnal.

III. Reprezentarea informaţiei în sistemele de calcul

Orice izometrie f : (X, d 1 ) (Y, d 2 ) este un homeomorfism. (Y = f(x)).

Sisteme liniare - metode directe

EDITURA PARALELA 45 MATEMATICĂ DE EXCELENŢĂ. Clasa a X-a Ediţia a II-a, revizuită. pentru concursuri, olimpiade şi centre de excelenţă

2. Circuite logice 2.5. Sumatoare şi multiplicatoare. Copyright Paul GASNER

6 n=1. cos 2n. 6 n=1. n=1. este CONV (fiind seria armonică pentru α = 6 > 1), rezultă

z a + c 0 + c 1 (z a)

Concurs MATE-INFO UBB, 1 aprilie 2017 Proba scrisă la MATEMATICĂ

Curs Programarea Calculatoarelor si Limbaje de Programare PRELEGEREA 1 ETAPELE REZOLVĂRII UNEI PROBLEME CU AJUTORUL UNUI SISTEM DE CALCUL

1. PROPRIETĂȚILE FLUIDELOR

LUCRAREA NR. 1 STUDIUL SURSELOR DE CURENT

LUCRAREA 1 INTRODUCERE ÎN MATLAB

Problema a II - a (10 puncte) Diferite circuite electrice

Transcript:

Fișiere de tip Script, Function și CallBack - uicontrol. Obiectivele lucrării de laborator: - Prezentarea și descrierea fișierelor Script și Function - Prezentarea și implementarea parametrului Callback uicontrol, uimenu - Realizarea unei interfețe grafice pe structura Script Function Callback 5.1 Fișierele.m de tip Script și Function Așa cum s-a enunțat și în lucrările anterioare, fișierele Matlab sunt fișiere de tip M-file, ce prezintă extensia.m. Aceste fișiere pot să fie: atât fișiere de tip script - sunt cele mai simple fișiere MATLAB, nu au argumente de intrare sau de ieșire și sunt utile pentru executarea secvențială a unor calcule care altfel ar trebui executate în mod repetat de la linia de comandă; fișierele de tip script operează cu datele din workspace sau pot crea date noi, iar aceste date sunt disponibile și după terminarea execuției fișierului, sau fișiere de tip funcție (function) fișiere ce se caracterizează prin faptul că acceptă argumente de intrare și returnează valori de ieșire, folosesc atât variabile generale cât și variabile locale declarate în interiorul fișierului de tip funcție și sunt utile pentru extinderea limbajului Matlab pentru rezolvarea diverselor aplicații. Aceste fișiere de fip funcție, obligatoriu, pe prima linie din editor au sintaxa de forma: function [prm_ieșire1, prm_ieșire2,...] = nume_funcție (prm_intrare1, prm_intrare2,...) unde: - function cuvânt cheie care declară tipul fișierului.m ca fiind fișier de tip funcție - prm_ieșire lista parametrilor de ieșire pe care funcția îi returnează. Parametri de ieșire sunt cuprinși între paranteze drepte și separați prin virgulă - nume_funcție numele funcției.!atenție: - numele funcției este implicit și numele fișierului. Dacă fișierul se salvează cu un alt nume decât numele funcției la apelare programul Matlab returnează eroare. 1

- prm_intrare lista parametrilor de intrare pe care funcția îi primește. Parametri de intrare sunt trecuți între paranteze rotunde și separați prin virgulă.!atenție: în cazul în care funcția ce se dorește a fi implementată nu prezintă parametri de ieșire pe care aceasta să îi returneze, aceștia se omit și fișierul are sintaxa de pe prima linie de forma: function nume_funcție (prm_intrare1, prm_intrare2,...) Dacă și parametrii de intrare lipsesc, funcția nu are nici un parametru transmis din altă parte (dintr-un fișier de tip script sau dintr-un alt fișier de tip funcție), atunci sintaxa devine de forma: function nume_funcție. Să se realizeze un program Matlab care să permită afișarea funcției: y = sin(ωt), permițând totodată modifica amplitudinii semnalului. Se va ține cont că amplitudinea implicită a semnalului este de 1V, iar frecvența de 50Hz. 1. rezolvarea cerinței se poate face simplu prin utilizarea unui fișier de tip M-file, pe liniile cărora vom scrie: clear all; %goleste variabilele utilizate close all; %inchide toate ferestrele Matlab deschise anterior A=1; %amplitudinea f=50; %frecventa T=1/f; %perioada t=(0:t/100:2*t); %definim vectorul timp y=a*sin(2*pi*f*t); %functia y plot(t,y); %functia care reprezinta grafic Figura 5.1. Rezultatul instrucțiunilor de la punctul 1. 2

- utilizarea instrucțiunilor într-un fișier simplu conduce la rezultatul prezentat în figura 5.1. Problema rezolvării constă în modificarea amplitudinii semnalului care s-ar putea realiza doar din liniile de cod prin modificarea valorii variabilei A. 2. Soluția corectă pentru rezolvarea cerinței se poate face dacă se folosește un fișier de tip script și un fișier de tip funcție. Astfel, în fișierul de tip script vom introduce valorile inițiale ale funcției iar în fișierul de tip funcție vom rezolva problema propusă. O schemă logică a programului este prezentată în figura 5.2. RUN Fisier Script Fisier Functie Reprezentare Grafic Inchide fereastra Modificare valoare A DA NU Figura 5.2. Schema logică a problemei propuse. - Schema logică din figura 5.2 prezintă o imagine de ansamblu a programului Matlab ce trebuie scris. Se evifențiază necesitatea utilizării a două fișiere de tip M-file, un fișier de tip script, fișierul care va porni aplicația și un fișier de tip funcție în corpul căruia vom rezolva atât reprezentarea grafică a funcției y cât și modificarea amplitudinii semnalului de reprezentat grafic. 3

Fișierul de tip script: clear all; close all; A=1; f=50; sinus(a,f); %amplitudinea %frecventa %apelarea fisierului de tip functie sinus(a,f) - așa cum se poate observa fișierul de tip script conține în corpul acestuia doar variabilele pe care le impunem implicit funcției y, amplitudinea A și frecvența semnalului f. - ultima linie de cod conține numele fișierului de tip funcție și parametrii pe care dorim să îi transmitem din fișierul script spre fișierul de tip funcție. sinus(a,f) - vom salva fișierul script cu numele start_sin, astfel încât să fie ușor de identificat în momentul apelării Fișierul de tip funcție function sinus(a,f) Fig=figure('Name','Reprezentarea sinusului',... 'Position',[0.3 0.3 0.5 0.5],... 'NumberTitle','off'); uicontrol('style','text',... 'Units','normalized',... 'Position',[0.91 0.95 0.1 0.04],... 'String','A'); uicontrol('style','edit',... 'Position',[0.91 0.9 0.1 0.04],... 'String',A,... 'Callback','A=str2num(get(gco,''string'')),close;sinB(A,f);'); T=1/f; t=(0:t/100:2*t); y=a.*sin(2.*pi.*f.*t); plot(t,y); grid on; %---------------------------------------------------------------- 4

Fișierul de tip funcție are așa cum se observă pe prima linie de cod sintaxa function urmată de numele funcției și parametrii de intrare pe care dorim să îi transmitem dinspre fișierul de tip script. Pentru a reuși modificarea amplitudinii s-au implementat două butoane unul de tip text cu ajutorul căruia vom eticheta butonul de tip edit ce va conține valoarea amplitudinii semnalului. Se poate observa că parametri transmiși dinspre fișierul de tip script sunt utilizati în cadrul fișierului de tip funcție, iar o altă serie de variabile sunt definite doar în cadrul acestui fișier. - parametrul STRING al butonului de tip edit este de forma: ('String',A,), ceea ce implică încărcarea în string a valorii lui A transmis de la script. - Callback-ul butonului permite încărcarea unei noi valori față de valoarea inițială prin câmpul editabil al acestui obiect din interfața grafică creată. Acesta este de forma: ('Callback','A=str2num(get(gco,''string'')),close;sinus(A,f);'), unde o A=str2num convertește un șir de caractere introdus în câmpul butonului într-un număr pe care îl atribuie variabilei A o get returnează proprietățile obiectelor: ex: get(uicontrol) o gco - permite manipularea proprietăților obiectelor: get(gco,''string'') permite modificarea valorii lui A cu cel introdus din tastatură în câmpul butonului o close închide aplicația și sinus(a,f) reapelează fișierul de tip funcție cu noua valoare a lui A transmisă din butonul de tip edit. Figura 5.3. Rezultatul rulării fișierului start_sin 5

Problema 2: Să se scrie un program care să reprezinte grafic funcțiile sinus, cosinus, suma acestora și să permită modificarea amplitudinii, frecvenței și a numărului de perioade de afișare a celor trei reprezentări grafice obținute, prin manipularea unui buton de tip pushbutton. Se dau funcțiile : X1=10sin(ωt) perioade de vizualizare să fie 4. Fișierul de tip script: clear all; close all; X2=5cos(5ωt), frecvența semnalelor să fie implicit de 50 Hz, iar numărul de A=10; % definim amplitudinea primului semnal B=5; % definim amplitudinea semnalului doi f=50; % definim frecventa N=4; % definim numarul de perioade de vizualizare interfata(a,b,f,n); %transmitem variabilele fisierului interfata Fișierul de tip funcție: function interfata(a,b,f,n) Fig=figure('Name','Laborator 4',... %se creaza o noua figura 'NumberTitle','off',... 'Position',[0.1 0.1 0.8 0.8],... 'Color',[0.5 0.5 0.9]); T=1/f; % definim perioada semnalului t=0:t/100:n*t; % alegem un interval de timp de reprezentare x1=a*sin(2*pi*f*t); % prima functie x2=b*cos(5*2*pi*f*t); % a doua functie x3=x1+x2; % scriem ecuatia sumei celor doua functii uicontrol('style','pushbutton',... % pushbuton CLOSE 'Position',[0.9 0.9 0.08.05],... 'string','close',... 'Callback','close'); uicontrol('style','text',... % Text Buton pentru A 6

'Position',[0.9 0.83 0.08.05],... 'backgroundcolor',[0.5 0.5 0.9],... 'string','a'); uicontrol('style','edit',... % edit pt A 'Position',[0.9 0.80 0.08.05],... 'String',A,... 'Callback',['A=','str2num(get(gco,''String''))']); uicontrol('style','text',... % Text Buton pentru B 'Position',[0.9 0.73 0.08.05],... 'backgroundcolor',[0.5 0.5 0.9],... 'string','b'); uicontrol('style','edit',... % edit pt B 'Position',[0.9 0.70 0.08.05],... 'String',B,... 'Callback',['B=','str2num(get(gco,''String''))']); uicontrol('style','text',... % Buton pentru f 'Position',[0.9 0.63 0.08.05],... 'backgroundcolor',[0.5 0.5 0.9],... 'string','f'); uicontrol('style','edit',... % edit pt f 'Position',[0.9 0.60 0.08.05],... 'String',f,... 'Callback',['f=','str2num(get(gco,''String''))']); uicontrol('style','pushbutton',... % buton de reset 'Position',[0.9 0.2 0.08.05],... 'string','reset',... 'Callback','close;interfata(A,B,f,N)'); %reapelam functia subplot('position',[0.1 0.72 0.4 0.25]);%setam o fereastra de plotare plot(t,x1); grid on; title('sinus'); xlabel('timp [s]'); ylabel('amplitudine [V]'); subplot('position',[0.1 0.38 0.4 0.25]);%alegem o fereastra de plotare 7

Amplitudine [V] Amplitudine [V] Amplitudine [V] Introducere în Grafică Asistată de Calculator Lucrare laborator 5. plot(t,x2); grid on; title('cosinus'); xlabel('timp [s]'); ylabel('amplitudine [V]'); subplot('position',[0.1 0.05 0.4 0.25]);%alegem o fereastra de plotare plot(t,x3); grid on; title('suma sin+cos'); xlabel('timp [s]'); ylabel('amplitudine [V]'); Rezultatul este prezentat în figura 5.4.!Atenție pentru ca programul să fie complet trebuie să adăugați butoanele pentru modificarea numărului de perioade de vizualizare. 10 Sinus 5 0-5 -10 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 timp [s] 5 Cosinus 0-5 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 timp [s] 15 10 Suma sin+cos 5 0-5 -10-15 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 timp [s] Figura 5.4. Rezultatul problemei 2 8

5.2 Desfășurarea laboratorului: 1. Adăugați liniile de cod necesare modificării frecvenței pentru problema 1. 2. Adăugati pentru problema 2 liniile de cod necesare astfel încât cele 2 semnale să poată fi vizualizate pe același număr de perioade. 3. Realizati o interfață grafică pentru problema 12 din lucrarea 2. 4. Realizați o interfață grafică precum cea din figura 5.5 astfel: Document Problema 1 Imagine Problema 3 Problema 2 Figura 5.5. Problema 4. - Folosind 5 butoane de tip pushbutton la manipularea acestora se va realiza callback-ul astfel: Problema 1 apelează problema 1, Problema 2 apelează problema 2, Problema 3 apelează problema 3, Imagine deschide o imagine, Document deschide un document. Fiecare fereastră deschisă va avea un buton de închidere. 5. Se intocmeste un portofoliu care sa contina : imread, imshow,image, uicontrol, uimenu, uipanel, callback, open, cat(2), num2str, str2num, plot 2D. 6. Să se propună 2 funcții care să fie analizate sub forma unor reprezentări grafice cu posibilitatea modificării unor proprietăți dintr-o interfață grafică. 9