aplicații și descriptor grafică Gui

Ce vrem să facem?

În această secțiune considerăm una dintre numeroasele modalități de dezvoltare a aplicațiilor cu interfață grafică cu utilizatorul în Matlab, în ​​care:

  1. de aplicare a ferestrei și copii ferestrele principale sunt create într-un mediu de Ghidul de programare vizuală;
  2. Funcția scrisă cu sub-funcții de punere în aplicare colaborarea acestor ferestre și interacțiunea dintre ele.

Ca un exemplu simplu de o interfață grafică pentru a scrie funcții și quad quadl, concepute pentru integrarea numerică a funcțiilor unei variabile la 0 la 1 și un cuadratură formule Simpson-Lobatto Gauss. Un exemplu al acestei aplicații, ne uităm la punerea în aplicare a alineatelor 1) și 2).

Aspectul ferestrei principale este o aplicație integrată în figura de mai jos.


Fereastra principală a aplicației integrantă

Metoda buton este conceput pentru a deschide metoda caseta de dialog prezentată în figura de mai jos, în cazul în care puteți utiliza switch-uri pentru a alege între două metode de integrare:

  • prin cvadratură formule Simpson;
  • prin formulele de cuadratură ale Gauss-Lobatto.


caseta de dialog pentru a selecta metoda de metoda de integrare

precizie din fereastra principală a aplicației este proiectată pentru a deschide toleranța casetei de dialog, sub figură, în care o linie de intrare utilizatorul specifică precizia de integrare.


Caseta de dialog Toleranța pentru a specifica precizia de integrare

După ce faceți clic pe butonul din fereastra principală aplicații Calculați calculate integrantă a funcției specificate în linia de intrare a ferestrei principale funcția de aplicare, iar rezultatul obținut folosind metoda selectată și cu o ieșire de precizie date la răspuns linie.

Deci, cu o interfață grafică de utilizator, aplicația constă dintr-o fereastră principală și două filiale integrale metoda casetelor de dialog și toleranță, care stabilește unii parametri ai aplicației. Aceste casete de dialog vom face modală, și anume după apariția unuia dintre ele pe ecran și setați-le în setările potrivite, trebuie să închideți această fereastră pentru a continua cu aplicarea integrală.

Desigur, setările făcute în metoda ferestrelor și a toleranței, ar trebui să fie disponibile în procesul de prelucrare eveniment sub-funcții ale fiecărei părți a ferestrei principale. În contrast, metoda de integrare selectată anterior și acuratețea trebuie să fie cunoscut la deschiderea ferestrei metodei și toleranța pentru în fereastra metodei a fost instalat comutatorul corespunzător metodelor selectate anterior de integrare, și fereastra de toleranță linie de intrare atunci când deschiderea stabilită anterior precizie a fost derivat.

Pentru a porni GUIDE într-un mediu pe care doriți să creați fereastra principală integralei. (În aplicațiile cu o interfață grafică în detaliu, vom crea aplicații GUI simplu în mediul GUIDE). În acest caz, doriți să faceți o fereastră cu trei butoane:

  • metodă
  • precizie
  • calcula

și două linii de intrare la stânga acelui legende cu text gazdă:

Crearea ferestrelor de mediu GUIDE

În primul rând, vom analiza pe scurt crearea de dialoguri între vizuale de programare MATLAB GUIDE pentru a economisi timpul cititorului și pentru a sublinia nevoia de acțiune în acest caz. După executarea liniei de comandă MATLAB echipa de ghidare


Pași pentru crearea de elemente de interfață și specificând valorile proprietăților lor

Valorile sunt introduse sau în a doua coloană a celulelor, fie selectate prin apăsarea butonului următor. Dacă valoarea proprietății este o matrice, apoi în partea stângă a proprietății se află un buton cu semnul plus, făcând clic pe care se deschide o matrice și se pot schimba valoarea componentelor sale în coloana din dreapta.

Pe fereastra principală a aplicației pe care doriți să loc:

  1. Dacă din întâmplare într-o fereastră aplicație gol a fost pictat obiect inutil, acesta poate fi îndepărtat prin evidențierea clic, apoi apăsând Delete.
  2. obiectele desenate pot fi mutate cu mouse-ul, și le redimensiona trăgând cursorul mouse-ului peste mânerele de pe marginea obiectului selectat.
  3. Nu o să demontați toate metodele și tehnicile de lucru cu obiecte, pictate pe fereastra goală.
fereastra principală aplicație integrantă

Fereastra de proprietăți integrală

Dimensiunea și poziția butoanelor pot fi setate cu mouse-ul.

Păstrarea aplicarea integrală fereastra principală

În mod implicit, aplicația creată în mediul de programare MATLAB ghid vizual este stocat în două fișiere:

remarcă
Înainte de a salva fereastra metoda și toleranța, a cărui creare este descris mai jos, ar trebui să facă aceeași operație pentru a anula crearea automată a m-fișier și magazin de dialog Fișier numai cu extensia Fig.

Este de dorit să se facă imediat dosarul selectat directorul curent MATLAB, de exemplu, prin intermediul unui buton situat pe partea stângă a listei drop-down director curent principal instrument de panoul MATLAB.

dialog metoda de creare

Metoda fereastra Proprietăți

intrare linie tag-ul, care va avea nevoie pentru a obține un pointer la el în funcțiile de tratare a evenimentului

Creat de caseta de dialog pentru a salva fișierul în tol.fig, a refuzat anterior prin metoda de stocare în două fișiere cu extensia și extinderea fig m (a se vedea secțiunea Salvarea aplicarea integrala fereastra principală ..).

Acum, că toate cele trei ferestre intehral, ​​metoda și set de toleranță, vom trece la funcția de fișier de programare cu sub-funcții, în scopul de a face munca de interfață.

interfaţă de programare

În general, ideea este foarte simplu. Dacă doriți să afișați caseta de dialog, atunci vom face acest lucru cu ajutorul deschis (puteți utiliza funcția openfig). Funcția deschisă returnează un pointer la caseta de dialog.

Dacă nu sunteți familiarizați cu structura, puteți citi aici un rezumat al lucrării cu structurile din MATLAB.

La primirea pointeri la obiecte din caseta de dialog pentru unele obiecte (butoane, comutatoare, panouri) au indicat funcțiile de procesare de evenimente care au loc, de exemplu, atunci când utilizatorul face clic pe un buton sau selectarea unui comutator. Face aceste funcții sunt pre-programate sub-funcții în m-fișier c funcția de bază a integrale, care se deschide fereastra principală integrantă a aplicației noastre cu o interfață grafică de utilizator.

remarcă
Pentru a se produce evenimentul programat, cum ar fi atunci când apăsarea butonului pentru care indicatorul este stocat în handles.btn (BTN se ocupă în structura), trebuie să îndeplinească următoarele două etape:

  1. Svyazyaat această sub-funcție de procesare butonul eveniment (atunci când utilizatorul face clic pe un buton apare eveniment Callback), prin utilizarea setului de instrumente

Aici btn_Callback - numele sub-funcții, care trebuie să fie programate. Acest lucru se poate face numai atunci când există obiectul cu un handles.btn indicator (buton), adică atunci când este deschis cu acest buton caseta de dialog.

  • Programul în acțiuni sub btn_Callback, care trebuie să fie efectuate după ce utilizatorul face clic pe butonul. Titlu Sub btn_Callback trebuie să arate astfel:

    în cazul în care src - pointer la obiectul al cărui eveniment este executat, și EVT - un argument care este utilizat în tratamentul anumitor evenimente.

    Când deschideți metoda caseta de dialog și toleranță în ele trebuie să fie făcută de către utilizator înainte de a stabili, și anume Setați același comutator (în fereastra metodei) și în linia de intrare ar trebui să fie introduse de către utilizator înainte de numărul (în fereastra de toleranță). Schimbul de parametri între fereastra principală de aplicații și copii ferestrele sale se realizează folosind structura nominală, care este datele principale aplicarea integrală fereastră, aceasta poate fi obținută întotdeauna din sub-funcții cu ajutorul funcției guidata MATLAB, opțional modificat și salvat actualizat cu aceeași funcție.

    Pentru structura de date nominală urmează ca o funcție de intrare argument guidata seta un pointer la caseta de dialog (în cazul nostru această fereastră integrală)

    Aici se presupune că indicatorul de pe ecran este stocat în câmpul integrală win_main mânere structura. Pentru a menține structuri de date cu picior de egalitate utilizează următoarea funcție guidata apel cu două argumente de intrare - un pointer fereastră (sau n obiect situat în fereastra) și de structura:

    Aceste tratament trebuie să facem în sub-funcțiile de prelucrare a elementelor interfeței de evenimente care nu sunt în fereastra principală, și în filialele, astfel încât aceste sub-funcții necesare pentru a transfera argument suplimentar - o structură cu indicii la obiectele din fereastra principală integrantă a aplicației noastre.

    Prelucrarea eveniment implicit sub-funcții au două argumente de intrare. În prelucrarea sub eveniment de transfer convenabil parametri suplimentari: un pointer la o structură în aplicare a ferestrei și copii ferestrele principale. Acest lucru se face în matrice de celule, parametrii corespunzători sunt scrise în paranteze, separate prin virgulă. Prin urmare, atunci când legarea subfuncția de procesare eveniment, vom folosi această opțiune funcție set de apel atunci când valoarea proprietății la numele evenimentului va fi o serie de celule care conțin un pointer la subfuncția și argumentele de intrare suplimentare:

    În cazul în care de tratare a evenimentelor de sub-funcție are un argument de intrare suplimentar, atunci titlul său este după cum urmează:

    Prin urmare, dacă vom specifica un sub-funcții de manipulare a evenimentului cu două argumente de intrare suplimentare:

    că titlul trebuie să arate astfel:

    Pentru a programa aplicația noastră cu interfața cu utilizatorul graficheskimm va avea nevoie de funcția principală, pe care o numim integralei și să păstreze în fișierul integral.m care conține șapte sub-funcții

    • btn_method_Callback - sub-funcție de metoda de prelucrare eveniment buton Callback fereastra principală integrantă;
    • btn_tol_Callback - sub-funcție buton Callback precizie de prelucrare eveniment fereastra principală integrantă;
    • btn_calc_Callback - sub-funcția de manipulare eveniment butonul Callback calculează fereastra principală integrantă;
    • btn_methodOK_Callback - sub-funcția de manipulare eveniment Callback butonul OK, o metodă filială a ferestrei;
    • btn_ methodCancel_Callback - sub-funcția de manipulare eveniment Callback Anulare metodă fereastră de copil buton;
    • btn_tolOK_Callback - sub-funcția de manipulare eveniment Callback fereastra de toleranță butonul OK filială;
    • btn_tolCancel_Callback - eveniment de sub-funcții de manipulare Callback Anulare fereastră toleranță buton filială.

    Mai jos este textul principal de funcția integrantă cu sub-funcții. Funcția integral.m, fereastra integral.fig, tol.fig method.fig și trebuie să fie în același director, modul în care este cunoscut pentru MATLAB (de exemplu, în directorul curent). Pentru a porni aplicația noastră GUI rula pur și simplu

    În funcția principală, următoarele acțiuni sunt efectuate:

    1. integral.fig deschide caseta de dialog principală;
    2. indicii sale sunt înregistrate în structura mânere (câmp structură coincide cu obiectele neatasate sunt situate în dialogul integral);
    3. inițializată structura nominală a datelor din fereastra principală integral cu două câmpuri: metoda (pentru stocarea unei metode de integrare selectată) și tol (pentru stocarea o precizie de integrare selectată), în câmpul metoda este „quad“ și câmpul tol reflectă 1e-3, structura este păstrată sub funcţia de ajutor guidata;
    4. un eveniment butoane metoda Callback, precizie și se calculează comunică respectiv subfunction btn_method_Callback, btn_tol_Callback, btn_calc_Callback, care se transmite la un argument de intrare suplimentar - mânere structura.

    În Sub btn_method_Callback, care se numește atunci când utilizatorul face clic pe butonul metoda, următoarele etape sunt efectuate:

    1. Se deschide caseta de dialog method.fig filială;
    2. indicii sale sunt înregistrate în structura handles_method (câmp structura coincide cu obiectele neatasate sunt situate în metoda caseta de dialog);
    3. variabilă nominală înregistrată integrantă structură fereastra de date;
    4. în funcție de valoarea par.method (adică, inegrirovaniya metoda selectată) setați comutatorul corespunzător în metoda ferestrei panoului de comutare;
    5. un eveniment Callback butoanele OK și Cancel asociate respectiv subfunction btn_methodOK_Callback și btn_methodCancel_Callback, care se transmite la un argument de intrare suplimentar - structura handles_method.

    În Sub btn_tol_Callback, care se numește atunci când utilizatorul face clic pe butonul de acuratețea, următoarele acțiuni sunt efectuate:

    1. Se deschide caseta de dialog tol.fig filială;
    2. indicii sale sunt înregistrate în structura handles_tol (câmp structură coincide cu obiecte neatasate sunt situate în dialog tol);
    3. variabilă nominală înregistrată integrantă structură fereastra de date;
    4. o fereastra de toleranță linia de intrare este de precizie scris setat anterior, a cărui valoare este scris în structura câmpului Tol par:
    5. un eveniment Callback butoanele OK și Cancel asociate respectiv subfunction btn_tolOK_Callback și btn_tolCancel_Callback, care se transmite la un argument de intrare suplimentar - structura handles_tol.

    În Sub btn_calc_Callback, care se numește atunci când utilizatorul face clic pe butonul Calculate, va avea loc următoarele:

    1. Formula de intrare de către utilizator se citește din funcția integrală linie de intrare a casetei de dialog principală;
    2. variabilă nominală înregistrată integrantă structură fereastra de date;
    3. verifica ce metodă de integrare a fost selectat de către utilizator în caseta de dialog metoda (în structura metoda nominală a înregistrat un „quad“, sau „quadl“) și în funcție de aceasta se numește o funcție quad sau quadl, ceea ce indică, de asemenea, acuratețea integrării înregistrate în par.tol;
    4. rezultatul este convertit într-un șir de caractere variabilă str și este afișat în integrantă o casetă de dialog linia principală;

    În Sub btn_methodOK_Callback, care este apelat atunci când utilizatorul face clic pe OK în caseta de dialog metoda, următoarele etape sunt efectuate:

    1. variabilă nominală înregistrată integrantă structură fereastra de date;
    2. verifica ce metodă de integrare a fost selectat de către utilizatorul comută la caseta de dialog metoda, și în funcție de aceasta în metoda structura nominală este introdusă sau „quad“, sau „quadl“;
    3. o structură de date stocate par fereastra integrantă;
    4. fereastra metoda este închisă;

    În Sub btn_ methodCancel_Callback, care se numește atunci când utilizatorul face clic pe butonul Anulare din metoda caseta de dialog, metoda închide fereastra fără a schimba structura de date a alin integrale fereastra.

    În Sub btn_tolOK_Callback, care este apelat atunci când utilizatorul face clic pe OK în dialog, toleranță, următoarele acțiuni sunt efectuate:

    1. variabile conținutul str fereastră de toleranță introduse de linia de intrare, și anume precizie introduse de utilizator;
    2. variabilă nominală înregistrată integrantă structură fereastra de date;
    3. Conținutul linia str este transformată într-o valoare numerică, care este stocată în structura câmpului tol par;
    4. o structură de date stocate par fereastra integrantă;
    5. fereastra de toleranță este închisă;

    În Sub btn_tolCancel_Callback, care se numește atunci când utilizatorul face clic pe butonul Anulare din dialog, toleranță, toleranță închide fereastra fără a schimba structura de date a alin integrale fereastra.

    Textul nu conține nicio funcție

    1. verifică corectitudinea funcțiilor de intrare la funcția integrală linie de intrare a ferestrei principale;
    2. verifică corectitudinea preciziei de intrare în fereastra de toleranță linie de intrare.

    În plus, a fost posibil să se retragă ca răspuns la un șir de numere nu este de 16, iar în conformitate cu precizia specificată sau introduceți o funcție fără un operații cu elemente înțelept, apoi înlocuind caracterele *, / și ^ * pe o unitate de cip. /. u. utilizând funcțiile strrep, dar aceste îmbunătățiri ar crește cantitatea de m-fișier.