Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • Programe
  • Descriptor grafic. Computerul meu nu afișează extensii de fișiere, ce ar trebui să fac? Casete de dialog standard

Descriptor grafic. Computerul meu nu afișează extensii de fișiere, ce ar trebui să fac? Casete de dialog standard

Fișierele sunt obiecte destul de comune în sistemul MATLAB. Unele dintre tipurile de fișiere au fost deja discutate în capitolele precedente. Această lecție acoperă proprietățile fișierelor care sunt independente de tipul lor și se aplică oricărui fișier.

Fişier de obicei o colecție de date, unite printr-un singur nume. Tipul fișierului este de obicei determinat de extensia acestuia. Considerăm fișierul ca un întreg, deși fizic pe disc poate fi reprezentat de mai multe zone - se spune că în acest caz fișierul este fragmentat.

Înainte de a utiliza orice fișier, trebuie să fie deschis, iar la sfârșitul utilizării - închis... Multe fișiere pot fi deschise și citite în același timp. Să luăm în considerare comenzile pentru deschiderea și închiderea fișierelor.

  • Comanda nume deschis, unde numele trebuie să conțină o matrice de caractere sau o variabilă simbolică, deschide fișiere în funcție de analiza parametrului nume și de extensia din numele numelui:
    • variabil- deschide o matrice numită după nume în Editorul de matrice;
    • .mat- deschide fisierul, salveaza variabilele in structura in zona de lucru;
    • .Fig- îl deschide în Editorul proprietăților;
    • .m- deschide fișierul m în editor-debugger;
    • .mdl- deschide modelul în Simulink;
    • .R- deschide, dacă există, un fișier m cu același nume;
    • .html- deschide un document HTML în browserul de ajutor.

Dacă fișierele cu extensia există în calea MATLAB, atunci fișierul care este returnat de comanda care nume este deschis, dacă nu, atunci fișierul din sistemul de fișiere. Dacă fișierul nu are o extensie de nume, atunci este deschis de programul al cărui format de fișier ar fi fost detectat de funcția which ("nume fișier"). În mod implicit, openother este apelat pentru toate fișierele cu alte terminații decât cele enumerate. de mai sus. Open apelează funcțiile orepxxx, unde xxx este extensia fișierului. Excepțiile sunt variabilele spațiului de lucru pentru care este apelat openvar și graficele pentru care este apelat openim. Prin crearea fișierelor t numite orepxxx, utilizatorii pot modifica modul de gestionare a fișierelor și pot adăuga noi extensii la listă. Fișierele deschise cu open trebuie să fie închise de la editorii apelați de onxxx.

  • = uigetfile (FILTERSPEC. Titlu)... Deschide un dialog numit Titlu și un filtru FILTERSPEC (de exemplu, o matrice de celule care conține extensii de fișiere) și returnează fișierul selectat de utilizator și calea către acesta. Returnează FILENAME = 0 dacă fișierul nu există sau dacă utilizatorul a făcut clic pe Anulare. = uigetfile (FILTERSPEC, Titlu. X. Y) plasează caseta de dialog în punctul X, Y (coordonate în pixeli).

Uigetfile ("*. M; *. Fig; *. Mat: *. Mdl", "Toate fișierele MATLAB (* .m, * .fig, * .mat. * .Mdl)")...

  • = uiputfile (FILTERSPEC. TITLE) salvează fișierul într-un dialog controlat de utilizator. Parametrii sunt aceiași ca în funcția uigetfile.
  • Comanda ui deschis deschide un dialog, iar dacă utilizatorul a selectat un fișier cu o extensie cunoscută, îl apelează folosind open sau dacă numele fișierului are o extensie necunoscută, atunci uigetfile este apelat. Argumentele de intrare pentru uiopen pot fi mat lab, load, figure, simulink, editor. Fără argumente de intrare sau cu un argument de intrare matlab, caseta de dialog vă solicită să selectați * .m, * .fig, * .mat, * .mdl (dacă este instalat Simulink), * .cdr (dacă fluxul de stat este instalat), * .rtw, *. tmf, * .tlc, * .c, * .h, * .ads, * .adb (dacă este instalat Real-Time Workshop). Cu argumentul de încărcare - * .mat. Cu argumentul figure, sunt oferite * .fig; simul ink - * .mdl, editor - * .m, * .mdt * .cdr, * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb.

Uiopen figură

  • Comanda uiload deschide un fișier într-un dialog controlat de utilizator folosind comanda sarcină.

Funcţie importul ui Lansări Expertul de import(Expert de importare), care importă dintr-un fișier din folderul curent sau clipboard-ul Windows. Ea se potrivește cu alegerea Importați date din meniu Fişier sau alegere Paste Speciale din meniu Editați | × MATLAB.

  • import ui (FILENAME)- lansează Import Wizard prin deschiderea FILENAME. Expertul de import arată datele pentru o previzualizare. Datele și reprezentarea lor ca variabile MATLAB apar în fereastra de previzualizare. Datele, textul și anteturile reale sunt reprezentate de diferite variabile MATLAB. Pentru datele ASCII, trebuie să vă asigurați că Expertul de import recunoaște delimitatorii de coloane. Pe cont propriu, poate recunoaște doar o filă, spațiu, virgulă sau punct și virgulă. Trebuie să faceți clic pe butonul Următorul iar în fereastra următoare fie confirmați selecția separatorului făcută de Expert, fie selectați Alteși introduceți orice separator.
  • import ui ("-fișier")- mai întâi afișează dialogul de selecție a fișierelor.
  • ui import ("-pastespecial")- mai întâi afișează conținutul clipboard-ului Windows pentru previzualizare.
  • S = ui import (...) stochează variabilele rezultate ca câmpuri ale structurii S.
  • Comanda uisave- salvare controlată de utilizator (comanda de salvare este descrisă în lecția 2) cu un dialog Windows.
  • Funcţie Salvează ca- salvează un desen sau un model Simulink în formatul dorit pe un mediu de stocare sau pe un dispozitiv cu imprimare.
  • Funcţie saveas (H, „FILENAME”)- salvează datele în conformitate cu comanda descriptorului grafic H din fișierul FILENAME. Formatul fișierului este determinat de extensia numelui FILENAME.
  • Funcţie saveas (H. „NUME FIȘIER”. „FORMAT”)- efectuează la fel, dar cu parametrul FORMAT (formatul este specificat în același mod ca extensia numelui fișierului și poate diferi de acesta). FORMAT are prioritate față de extensia numelui de fișier. Parametrii funcției:
    • "Fig"- salvați figura (graficul) într-un fișier fig binar;
    • "m" sau "mfig"- salvați figura într-un fișier fig binar și creați un fișier m pentru a o încărca;
    • "mmat"- salvați desenul într-un fișier m ca o secvență de comenzi de creare a desenelor. Este posibil să nu accepte cele mai recente funcții grafice.

Saveas (gcf. „Ieșire”, „fig”) saveas (gcf, „ieșire”, „bmp”)

Comandă sau funcție ștergeșterge un fișier sau un obiect grafic.

). Printre instrumentele de uz general utilizate în chimiometrie, pachetul MatLab ocupă un loc aparte. Popularitatea sa este extrem de mare. Acest lucru se datorează faptului că MatLab este puternic și versatil procesare a datelor multidimensionale. Însăși structura pachetului îl face un instrument convenabil pentru efectuarea calculelor matriceale. Gama de probleme care pot fi investigate folosind MatLab acoperă: analiza matricei, procesarea semnalului și a imaginilor, rețelele neuronale și multe altele. MatLab este un limbaj open source de nivel înalt care permite utilizatorilor experimentați să înțeleagă algoritmii programați. Un limbaj de programare simplu încorporat facilitează crearea propriilor algoritmi. De mulți ani de utilizare a MatLab, au fost create un număr mare de funcții și ToolBox (pachete de instrumente specializate). Cel mai popular este PLS ToolBox de la Eigenvector Research, Inc.

1. Informații de bază

1.1. Mediul de lucru MatLab

Pentru a porni programul, faceți dublu clic pe pictogramă. Mediul de lucru prezentat în figură se va deschide în fața dvs.

Mediu de lucru MatLab 6.x ușor diferit de mediul de lucru al versiunilor anterioare, are o interfață mai convenabilă pentru accesarea multor elemente auxiliare

Mediu de lucru MatLab 6.x contine urmatoarele elemente:

    o bară de instrumente cu butoane și o listă derulantă;

    Fereastra cu file Launch Pad și Spațiul de lucru din care puteți accesa diferitele module ToolBox și conținutul spațiului de lucru;

    fereastra cu file Istoricul comenzilorși Directorul curent, destinate vizualizarii si reapelarii comenzilor introduse anterior, precum si setarii directorului curent;

    fereastra de comandă, care conține promptul „și un cursor vertical care clipește;

    bara de stare.

Dacă într-un mediu de lucru MatLab 6.x unele ferestre prezentate în figură lipsesc, apoi selectați elementele corespunzătoare din meniul Vizualizare: Fereastra de comandă, Istoricul comenzilor, Directorul curent, Spațiul de lucru, Launch Pad.

Comenzile trebuie introduse în fereastra de comandă. Nu trebuie să tastați „caracterul” pentru a indica promptul liniei de comandă. Pentru a vizualiza zona de lucru, este convenabil să utilizați barele de defilare sau tastele Acasă, Sfârșit pentru a vă deplasa la stânga sau la dreapta și Pagină în sus, Pag în jos pentru a vă deplasa în sus sau în jos. Dacă brusc, după deplasarea în zona de lucru a ferestrei de comandă, linia de comandă cu cursorul intermitent a dispărut, trebuie doar să apăsați Enter.

Este important de reținut că setul oricărei comenzi sau expresii trebuie să se încheie prin apăsarea Enter, pentru ca MatLab să execute această comandă sau să calculeze expresia.

1.2. Cele mai simple calcule

Tastați 1 + 2 la linia de comandă și apăsați Enter. Ca rezultat, în fereastra de comandă MatLab se afișează următoarele:

Orez. 2 Reprezentarea grafică a analizei componentelor principale

Ce a făcut MatLab? Mai întâi, ea a calculat suma 1 + 2, apoi a scris rezultatul în variabila specială an și a tipărit valoarea acesteia, egală cu 3, în fereastra de comandă. Sub răspuns este o linie de comandă cu un cursor care clipește, indicând faptul că MatLab este pregătit pentru calcule suplimentare. Puteți introduce expresii noi în linia de comandă și puteți găsi valorile acestora. Dacă trebuie să continuați să lucrați cu expresia anterioară, de exemplu, să calculați (1 + 2) /4,5, atunci cea mai ușoară modalitate este să utilizați rezultatul deja existent, care este stocat în variabila ans. Tastați ans / 4.5 (se folosește un punct la introducerea fracțiilor zecimale) și apăsați introduce, se dovedește

Orez. 3 Reprezentarea grafică a analizei componentelor principale

1.3. Echo comenzi

Fiecare comandă din MatLab are ecou. În exemplul de mai sus, acesta este răspunsul ans = 0,6667. Adesea, ecoul face dificilă perceperea activității programului și apoi poate fi dezactivat. Pentru a face acest lucru, comanda trebuie să se încheie cu punct și virgulă. De exemplu

Orez. 4 Exemplu de introducere a funcției ScoresPCA

1.4. Conservarea mediului de lucru. fișiere MAT

Cel mai simplu mod de a salva toate valorile variabilelor este să utilizați elementul Salvare spațiu de lucru ca din meniul Fișier. Apare caseta de dialog Salvare variabile spațiu de lucru, în care trebuie să specificați directorul și numele fișierului. În mod implicit, este sugerat să salvați fișierul în subdirectorul de lucru al directorului principal MatLab. Programul va salva rezultatele muncii într-un fișier cu extensia mat. Acum puteți închide MatLab. În următoarea sesiune, pentru a restabili valorile variabilelor, deschideți acest fișier salvat folosind sub-elementul Deschidere din meniul Fișier. Acum toate variabilele definite în sesiunea anterioară sunt din nou disponibile. Ele pot fi folosite în comenzile nou introduse.

1.5. Revistă

MatLab are capacitatea de a scrie comenzi executabile și rezultate într-un fișier text (păstrați un jurnal de lucru), care poate fi apoi citit sau tipărit dintr-un editor de text. Pentru a începe înregistrarea, utilizați comanda jurnal... Ca argument de comandă jurnal trebuie să specificați numele fișierului în care va fi stocat jurnalul de lucru. Comenzile tastate mai departe și rezultatele executării lor vor fi scrise în acest fișier, de exemplu, o secvență de comenzi

efectuează următoarele acțiuni:

    deschide jurnalul în fișierul exampl-1.txt;

    efectuează calcule;

    salvează toate variabilele în fișierul MAT work-1.mat;

    salvează jurnalul în fișierul exampl-1.txt în subdirectorul de lucru al directorului rădăcină MatLab și închide MatLab;

Priviți conținutul fișierului exampl-1.txt într-un editor de text. Fișierul va conține următorul text:

a1 = 3;
a2 = 2,5;
a3 = a1 + a2

Salvați munca-1
părăsi

1.6. Sistem de ajutor

Fereastra de ajutor MatLab apare după alegerea opțiunii Fereastra de ajutor din meniul Ajutor sau făcând clic pe butonul de întrebare din bara de instrumente. Aceeași operațiune poate fi efectuată prin tastarea comenzii helpwin... Pentru a afișa o fereastră de ajutor pentru secțiuni individuale, tastați helpwin subiect... Fereastra de ajutor vă oferă aceleași informații ca și comanda de ajutor, dar interfața cu ferestre oferă legături mai convenabile către alte subiecte de ajutor. Folosind adresa site-ului web Math Works, vă puteți conecta la serverul firmei și puteți obține cele mai recente informații despre întrebările dvs. Vă puteți familiariza cu noile produse software sau puteți găsi un răspuns la problemele dvs. pe pagina de asistență tehnică.

2. Matrici

2.1. Scalari, vectori și matrici

Scalarii, vectorii și matricele pot fi utilizați în MatLab. Pentru a introduce un scalar, este suficient să îi atribuiți valoarea unei variabile, de exemplu

Rețineți că MatLab face distincție între literele mari și mici, astfel încât p și P sunt variabile diferite. Pentru a introduce matrice (vectori sau matrice), elementele acestora sunt cuprinse între paranteze drepte. Deci, pentru a introduce un vector de linie 1 × 3, utilizați următoarea comandă, în care elementele liniei sunt separate prin spații sau virgule.

Când introduceți un vector coloană, separați elementele cu punct și virgulă. De exemplu,

Este convenabil să introduceți matrice de dimensiuni mici direct din linia de comandă. Pe măsură ce tastați, o matrice poate fi considerată ca un vector coloană, fiecare element al căruia este un vector rând.

sau o matrice poate fi gândită ca un vector rând, fiecare element al căruia este un vector coloană.

2.2. Elemente de acces

Elementele matricei sunt accesate folosind doi indici - numere de rând și de coloană, cuprinse între paranteze, de exemplu, comanda B (2,3) va returna un element din al doilea rând și a treia coloană a matricei B. Pentru a selecta o coloană sau un rând dintr-o matrice, utilizați numărul coloanei sau al rândului matricei ca unul dintre indici și înlocuiți celălalt index cu două puncte. De exemplu, scriem al doilea rând al matricei A în vectorul z

De asemenea, puteți evidenția blocuri de matrice folosind două puncte. De exemplu, selectați din matricea P blocul marcat cu culoare

Dacă trebuie să vizualizați variabilele mediului de lucru, în linia de comandă trebuie să tastați comanda cui .

Puteți vedea că spațiul de lucru conține un scalar (p), patru matrice (A, B, P, P1) și un vector rând (z).

2.3. Operații de bază cu matrice

Când utilizați operații cu matrice, rețineți că pentru adunare sau scădere, matricele trebuie să fie de aceeași dimensiune, iar la înmulțire, numărul de coloane din prima matrice trebuie să fie egal cu numărul de rânduri din a doua matrice. Adunarea și scăderea matricelor, precum și a numerelor și a vectorilor, se efectuează folosind semnele plus și minus

iar înmulțirea este indicată cu un asterisc *. Introduceți o matrice 3 × 2

Înmulțirea unei matrice cu un număr se realizează și cu ajutorul unui asterisc și puteți înmulți cu un număr atât în ​​partea dreaptă, cât și în stânga. O matrice pătrată este ridicată la o putere întreagă folosind operatorul ^

Verificați rezultatul înmulțind matricea P cu ea însăși.

2.4. Crearea de matrici speciale

Umplerea unei matrice dreptunghiulare cu zerouri se face prin funcția încorporată zerouri

Matricea de identitate este creată folosind funcția ochiul

O matrice formată din unii se formează ca rezultat al apelării funcției cele

MatLab oferă capacitatea de a umple matrice cu numere aleatorii. Rezultatul funcției rand este o matrice de numere distribuite uniform între zero și unu și funcțiile randn- matricea numerelor distribuite conform legii normale cu medie zero si varianta unitara.

Funcţie diag formează o matrice diagonală dintr-un vector prin aranjarea diagonală a elementelor.

2.5. Calculele matriceale

MatLab conține multe funcții diferite pentru lucrul cu matrice. Deci, de exemplu, o matrice este transpusă folosind un apostrof "

Matricea inversă se găsește folosind funcția inv pentru matrice pătrată

3. Integrarea MatLab și Excel

Integrarea MatLab și Excel permite utilizatorului Excel să acceseze numeroase funcții MatLab pentru prelucrarea datelor, diverse calcule și vizualizarea rezultatului. Suplimentul excllink.xla implementează această îmbunătățire Excel. Pentru comunicarea între MatLab și Excel, sunt definite funcții speciale.

3.1. Configurarea Excel

Înainte de a configura Excel pentru a lucra împreună cu MatLab, ar trebui să vă asigurați că Excel Link este inclus în versiunea instalată a MatLab. Fișierul de extensie excllink.xla trebuie să fie localizat în subdirectorul exclink al directorului principal MatLab sau în subdirectorul casetei de instrumente. Porniți Excel și alegeți Add-in-uri din meniul Tools. Se va deschide o casetă de dialog care conține informații despre suplimentele disponibile în prezent. Utilizați butonul Răsfoire pentru a specifica calea către fișierul excllink.xla. Linia apare în lista de suplimente din caseta de dialog Excel Link 2.0 pentru utilizare cu MatLab cu steagul pus. Faceți clic pe OK, programul de completare necesar a fost adăugat în Excel.

Rețineți că Excel are acum o bară de instrumente Excel Link care conține trei butoane: putmatrix, getmatrix, evalstring. Aceste butoane implementează principalele acțiuni necesare implementării relației dintre Excel și MatLab - schimbul de date matrice și execuția comenzilor MatLab din mediul Excel. Când Excel repornește, programul de completare excllink.xla este conectat automat.

Lucrarea coordonată a Excel și MatLab necesită câteva setări suplimentare, care sunt acceptate implicit în Excel (dar pot fi modificate). În meniul Instrumente, accesați Opțiuni, se deschide caseta de dialog Opțiuni. Selectați fila General și asigurați-vă că indicatorul de stil de referință R1C1 este dezactivat, de exemplu. celulele sunt numerotate A1, A2 etc. În fila Editare, trebuie setată selecția Mutare după Enter.

3.2. Schimb de date între MatLab și Excel

Porniți Excel, verificați dacă toate setările necesare au fost făcute așa cum este descris în secțiunea anterioară (MatLab trebuie să fie închis). Introduceți o matrice în celulele A1 la C3, utilizați un punct pentru a separa zecimale în conformitate cu cerințele Excel.

Selectați datele celulei de pe foaie și apăsați butonul putmatrix, apare o fereastră Excel cu un avertisment că MatLab nu rulează. Faceți clic pe OK, așteptați deschiderea MatLab.

Apare o casetă de dialog Excel cu o linie de intrare menită să definească numele variabilei mediului de lucru MatLab, în ​​care ar trebui să fie exportate datele din celulele Excel selectate. Introduceți, de exemplu, M și închideți fereastra cu butonul OK. Accesați fereastra de comandă MatLab și asigurați-vă că a fost creată o variabilă M în mediul de producție, care conține o matrice de trei pe trei:

Faceți unele operații în MatLab cu matricea M, de exemplu, inversați-o.

Apel inv pentru a inversa matricea, ca orice altă comandă MatLab, puteți efectua direct din Excel. Apăsarea butonului evalstring, situat pe panoul Excel Link, duce la apariția unei casete de dialog, în a cărei linie de introducere ar trebui să tastați comanda MatLab

IM = inv (M).

Rezultatul este similar cu cel obținut la executarea comenzii în mediul MatLab.

Reveniți la Excel, faceți celula A5 curentă și faceți clic pe butonul getmatrix. Apare o casetă de dialog cu o linie de introducere care vă cere să introduceți numele variabilei de importat în Excel. În acest caz, această variabilă este IM. Faceți clic pe OK, celulele de la A5 la A7 sunt umplute cu elemente de matrice inversă.

Deci, pentru a exporta o matrice în MatLab, ar trebui să selectați celulele corespunzătoare ale foii Excel, iar pentru import, este suficient să specificați o celulă, care va fi elementul din stânga sus al matricei importate. Restul elementelor vor fi scrise în celulele foii în funcție de dimensiunea matricei, suprascriind datele pe care le conțin, așa că ar trebui să fiți atenți când importați matrice.

Abordarea de mai sus este cea mai simplă modalitate de a face schimb de informații între aplicații - datele originale sunt conținute în Excel, apoi exportate în MatLab, procesate acolo într-un fel, iar rezultatul este importat în Excel. Utilizatorul transferă date folosind butoanele din bara de instrumente Excel Link. Informațiile pot fi prezentate sub forma unei matrice, de ex. zona dreptunghiulară a foii de lucru. Celulele aranjate într-un rând sau coloană sunt exportate în vectori rând și, respectiv, vectori coloană din MatLab. Importul vectorilor rând și al vectorilor coloane în Excel funcționează într-un mod similar.

4. Programare

4.1. Fișiere M

Lucrul din linia de comandă MatLab este dificil dacă trebuie să introduceți o mulțime de comenzi și să le schimbați des. Păstrarea unui jurnal cu o comandă jurnal iar păstrarea mediului de lucru ușurează puțin munca. Cea mai convenabilă modalitate de a executa grupuri de comenzi MatLab este să utilizați fișiere M, în care puteți să tastați comenzi, să le executați pe toate odată sau pe părți, să le salvați într-un fișier și să le utilizați mai târziu. Editorul de fișiere M este destinat să lucreze cu fișiere M. Cu ajutorul acestuia, puteți crea propriile funcții și le puteți apela, inclusiv din fereastra de comandă.

Deschideți meniul Fișier al ferestrei principale MatLab și, în elementul Nou, selectați subelementul M-file. Noul fișier se deschide în fereastra editorului de fișiere M, care este prezentată în figură.

Există două tipuri de fișiere M în MatLab: fișier program ( Script M-Files) care conține o secvență de comenzi și funcții de fișier ( Funcția M-Files) care descriu funcții definite de utilizator.

4.2. Program de fișiere

Introduceți comenzi în editor care duc la construirea a două grafice într-o fereastră grafică

Acum salvați fișierul numit mydemo.m în subdirectorul de lucru al directorului principal MatLab, selectând elementul Salvare ca din meniul Fișier al editorului. Pentru a rula toate comenzile conținute în fișier pentru execuție, selectați elementul Run din meniul Debug. Pe ecran va apărea o fereastră grafică. figura 1 conţinând grafice ale funcţiilor.

Comenzile fișier-program ies în fereastra de comandă. Pentru a suprima ieșirea, terminați comenzile cu punct și virgulă. Dacă se comite o eroare la tastare și MatLab nu poate recunoaște comanda, atunci comenzile sunt executate până la cea introdusă incorect, după care este afișat un mesaj de eroare în fereastra de comandă.

O caracteristică foarte convenabilă oferită de editorul de fișiere M este executarea unei părți din comenzi. Închideți fereastra grafică figura 1... Selectați cu mouse-ul în timp ce țineți apăsat butonul din stânga sau cu tastele săgeți în timp ce țineți apăsat Schimb, primele patru comenzi și executați-le din elementul Text. Vă rugăm să rețineți că în fereastra grafică este afișată o singură diagramă, corespunzătoare comenzilor executate:. Amintiți-vă că pentru a executa unele dintre comenzi, selectați-le și apăsați tasta F9.

Blocurile individuale ale fișierului M pot fi furnizate cu comentarii care sunt sărite în timpul execuției, dar sunt convenabile atunci când lucrați cu fișierul M. Comentariile încep cu un semn de procent și sunt evidențiate automat în verde, de exemplu:

Un fișier M existent este deschis utilizând elementul Deschidere din meniul Fișier al mediului de lucru sau editorul de fișiere M.

4.3. Funcția fișier

Fișierul-program de mai sus este doar o secvență de comenzi MatLab, nu are argumente de intrare și de ieșire. Pentru a utiliza metode numerice și atunci când vă programați propriile aplicații în MatLab, trebuie să puteți compune funcții de fișier care efectuează acțiunile necesare cu argumente de intrare și returnează rezultatul acțiunii în argumente de ieșire. Să ne uităm la câteva exemple simple pentru a vă ajuta să înțelegeți cum să lucrați cu funcțiile fișierelor.

Centrarea este adesea folosită în preprocesarea datelor de analiză chimiometrică multivariată. Este logic să scrieți o funcție de fișier o dată și apoi să o apelați oriunde este necesar să o centrați. Deschideți un fișier nou în editorul de fișiere M și tastați

Cuvântul funcție de pe prima linie specifică faptul că acest fișier conține un fișier de funcție. Prima linie este antetul funcției, care conține numele funcției și lista de argumente de intrare și de ieșire. În exemplu, numele funcției este centrat, un argument de intrare este X și o ieșire este Xc. După titlu, urmează comentariile și apoi corpul funcției (în acest exemplu, este format din două linii), unde este calculată valoarea acesteia. Este important ca valoarea calculată să fie scrisă în Xc. Asigurați-vă că includeți un punct și virgulă pentru a preveni afișarea informațiilor inutile pe ecran. Acum salvați fișierul în directorul de lucru. Rețineți că, dacă alegeți elementul Salvare sau Salvare ca din meniul Fișier, apare o casetă de dialog pentru salvarea fișierului, câmpul Nume fișier al căruia conține deja centrarea numelui. Nu-l schimba, salvează fișierul funcției într-un fișier cu numele sugerat!

Acum funcția creată poate fi folosită în același mod ca și sin, cos și altele încorporate. Funcțiile proprii pot fi apelate dintr-un fișier de program și dintr-o altă funcție de fișier. Încercați să scrieți singur o funcție de fișier care va scala matrice, de exemplu. împărțiți fiecare coloană la abaterea standard pentru acea coloană.

Puteți scrie un fișier funcție cu mai multe argumente de intrare, care sunt plasate într-o listă separată prin virgulă. De asemenea, puteți crea funcții care returnează mai multe valori. Pentru a face acest lucru, argumentele de ieșire sunt adăugate, separate prin virgulă, la lista de argumente de ieșire, iar lista în sine este cuprinsă între paranteze drepte. Un bun exemplu este o funcție care convertește un timp în secunde în ore, minute și secunde.

Când se apelează funcții de fișier cu mai multe argumente de ieșire, rezultatul ar trebui să fie scris într-un vector de lungimea corespunzătoare.

4.4 Crearea unui program

MatLab are oportunități ample de a reprezenta grafic vectori și matrici, precum și pentru a crea comentarii și a tipări grafice. Să descriem câteva funcții grafice importante.

Funcţie complot are diverse forme asociate cu parametrii de intrare, de exemplu graficul (y) creează un grafic liniar pe bucăți al dependenței elementelor y de indicii lor. Dacă doi vectori sunt dați ca argumente, atunci graficul (x, y) va reprezenta graficul y față de x. De exemplu, pentru a reprezenta grafic funcția sin de la 0 la 2π, faceți următoarele

Programul a construit un grafic de dependență care este afișat în fereastră figura 1

MatLab atribuie automat propria culoare fiecărui grafic (cu excepția cazului în care utilizatorul o face), ceea ce vă permite să distingeți între seturile de date.

Comanda stai asa vă permite să adăugați curbe unui grafic existent. Funcţie subplot vă permite să afișați mai multe diagrame într-o singură fereastră

4.5 Tipărirea graficelor

Elementul Imprimare din meniul Fișier și comanda imprimare tipăriți grafice MatLab. Meniul Imprimare afișează o casetă de dialog care vă permite să selectați opțiunile standard de imprimare comune. Comanda imprimare oferă mai multă flexibilitate în ceea ce privește ieșirea și vă permite să controlați imprimarea din fișierele M. Rezultatul poate fi trimis direct la imprimanta implicită sau salvat într-un fișier specificat.

5. Exemple de programe

Această secțiune listează cei mai comuni algoritmi utilizați în analiza datelor multidimensionale. Sunt luate în considerare atât cele mai simple metode de transformare, centrare și scalare a datelor, cât și algoritmi de analiză a datelor - PCA, PLS.

5.1. Centrare și scalare

Analiza necesită adesea transformarea datelor originale. Cele mai utilizate metode de transformare a datelor sunt centrarea și scalarea fiecărei variabile prin abaterea standard. În codul funcției de centrare a fost dată matricea. Prin urmare, mai jos este afișat doar codul funcției, care cântare date. Vă rugăm să rețineți că matricea originală trebuie să fie centrată

funcția Xs = scalare (X)
% scalare: matricea de ieșire este Xs
% matricea X trebuie să fie centrată

Xs = X * inv (diag (std (X)));

% sfârșit de scalare

5.2. SVD / PCA

Cea mai populară metodă de compresie a datelor în analiza multivariată este analiza componentelor principale (PCA). Din punct de vedere matematic, PCA este o descompunere a matricei originale X, adică reprezentarea sa ca produs a două matrici Tși P

X = TP t + E

Matrice T se numește matricea scorurilor, matricea se numește matricea reziduală.

Cel mai simplu mod de a găsi matrici Tși P- utilizați descompunerea SVD printr-o funcție MatLab standard numită svd .

funcția = pcasvd (X)

Svd (X);
T = U * D;
P = V;

% sfârşitul pcasvd

5.3 PCA / NIPALS

Pentru a construi conturi și încărcări PCA, se folosește algoritmul recurent NIPALS, care calculează o componentă la fiecare pas. Matricea inițială mai întâi X se transformă (cel puțin - centrat; vezi) și se transformă într-o matrice E 0 , A= 0. Apoi se aplică următorul algoritm.

t 2. p t = t t EA / t t t 3. p = p / (p t p) ½ 4. t = EA p / p t p 5. Verificați convergența, dacă nu, atunci treceți la 2

După calcularea următoarei ( A th) componente, presupunem tA=tși pA=p E A+1 = EAt p A pe A+1.

Codul algoritmului NIPALS poate fi scris chiar de cititori; în acest tutorial, autorii oferă propria versiune. Când calculați PCA, puteți introduce numărul de componente principale (număr variabilPC). Dacă nu știți de câte componente sunt necesare, trebuie să scrieți = pcanipals (X) pe linia de comandă și apoi programul va seta numărul de componente egal cu cea mai mică dintre dimensiunile matricei originale. X.

funcția = pcanipals (X, numărPC)

% calcul al numărului de componente
= dimensiunea (X); P =; T =;

Dacă lungimea (numărPC)> 0
pc = numărPC (1);
elseif (lungime (numberPC) == 0) & X_r< X_c
pc = X_r;
altfel
pc = X_c;
Sfârșit;

pentru k = 1: buc
P1 = rand (X_c, 1); T1 = X * P1; d0 = T1 "* T1;
P1 = (T1 "* X / (T1" * T1)) "; P1 = P1 / norma (P1); T1 = X * P1; d = T1" * T1;

În timp ce d - d0> 0,0001;
P1 = (T1 "* X / (T1" * T1)); P1 = P1 / norma (P1); T1 = X * P1; d0 = T1 "* T1;
P1 = (T1 "* X / (T1" * T1)); P1 = P1 / norma (P1); T1 = X * P1; d = T1 "* T1;
Sfârșit

X = X - T1 * P1; P = pisica (1, P, P1 "); T =;
Sfârșit

Cum se calculează PCA utilizând suplimentul Chemometrics este descris în tutorial

5.4 PLS1

Cea mai populară metodă de calibrare multivariată este metoda proiecției latente (PLS). În această metodă, matricea predictorilor este descompusă simultan Xși matrice de răspuns Y:

X=TP t + E Y=Uq t + F T=XW(P t W) –1

Proiecția este construită în mod consecvent - astfel încât să maximizeze corelația dintre vectorii corespunzători X-conturi tAși Y-conturi uA... Dacă blocul de date Y include răspunsuri multiple (de ex. K> 1), puteți construi două proiecții ale datelor inițiale - PLS1 și PLS2. În primul caz, pentru fiecare dintre răspunsuri y k este construit propriul său subspațiu de proiecție. În același timp, conturile T (U) și încărcați P (W, Q) depind de răspunsul utilizat. Această abordare se numește PLS1. Pentru metoda PLS2, este construit un singur spațiu de proiecție, care este comun pentru toate răspunsurile.

O descriere detaliată a metodei PLS este dată în această carte.Pentru a construi conturi și încărcări PLS1, se folosește un algoritm recurent. Matricele inițiale mai întâi Xși Y centru

= mc (X);
= mc (Y);

și se transformă într-o matrice E 0 și vector f 0 , A= 0. Apoi li se aplică următorul algoritm

1. w t = fA t E A 2. w = w / (w t w) ½ 3. t = EA w 4. q = t t fA / t t t 5. u = qfA / q 2 6. p t = t t EA / t t t

După calcularea următoarei ( A th) componente, presupunem tA=tși pA=p... Pentru a obține următoarea componentă, trebuie să calculați reziduurile E A+1 = EAt p t și aplicați-le același algoritm, înlocuind indexul A pe A+1.

Iată codul acestui algoritm, luat din carte

funcția = pls (x, y)
% PLS: calculează o componentă PLS.
% Vectorii de ieșire sunt w, t, u, q și p.
%
% Alegeți un vector din y ca vector de pornire u.

u = y (:, 1);

% Criteriul de convergență este stabilit foarte ridicat.
kri = 100;

% Comenzile de aici până la capăt se repetă până la convergență.
în timp ce (kri> 1e - 10)

% Fiecare vector de pornire u este salvat ca uold.
uold = u; w = (u "* x)"; w = w / normă (w);
t = x * w; q = (t "* y)" / (t "* t);
u = y * q / (q "* q);

% Criteriul de convergenţă este norma u-uold împărţită la norma u.
kri = norm (uold - u) / norm (u);
Sfârșit;

% După convergenţă, se calculează p.
p = (t "* x)" / (t "* t);

% Sfârșitul pls

Despre calcularea PLS1 cu un supliment ChimiometrieAdauga la descrise în manualul Metode de proiecție în sistemul Excel.

5.5 PLS2

Pentru PLS2, algoritmul este următorul. Matricele inițiale mai întâi Xși Y transformă (cel puțin - centru; vezi), și se transformă în matrici E 0 și F 0 , A= 0. Apoi li se aplică următorul algoritm.

1. Alegeți vectorul de pornire u 2. w t = u t E A 3. w = w / (w t w) ½ 4. t = EA w 5. q t = t t FA / t t t 6. u = FA q/ q t q 7. Verificați convergența, dacă nu, atunci treceți la 2 8. p t = t t EA / t t t

După calcularea următoarei ( A-th) Componentele PLS2 trebuie puse: tA=t, pA=p, wA=w, uA=uși q a = q... Pentru a obține următoarea componentă, trebuie să calculați reziduurile E A+1 = EAt p t si FA +1 = F Atq t și aplicați-le același algoritm, înlocuind indexul A pe A+1.

Iată codul, care este și el împrumutat din carte.

funcția = plsr (x, y, a)
% PLS: calculează o componentă PLS.
% Matricele de ieșire sunt W, T, U, Q și P.
% B conține coeficienții de regresie și SS sumele
% pătrate pentru reziduuri.
% a este numărul de componente.
%
% Pentru componente: utilizați toate comenzile pentru a termina.

Pentru i = 1: a
% Calculați suma pătratelor. Utilizați funcția ss.
sx =;
sy =;

% Utilizați funcția pls pentru a calcula o componentă.
= pls (x, y);

% Calculați reziduurile.
x = x - t * p ";
y = y - t * q ";

% Salvați vectorii în matrice.
W =;
T =;
U =;
Q =;
P =;
Sfârșit;

% Calculați coeficienții de regresie după buclă.
B = W * inv (P "* W) * Q";

% Adăugați SS rezidual final la suma vectorilor pătratelor.
sx =;
sy =;

% Faceți o matrice a vectorilor ss pentru X și Y.
SS =;

% Calculați fracția de SS utilizată.
= dimensiune (SS);
tt = (SS * diag (SS (1,:). ^ (- 1)) - cele (a, b)) * (-1)

% Sfârșitul plsr

functie = ss (x)
% SS: calculează suma pătratelor unei matrice X.
%

ss = suma (suma (x. * x));
% Sfârșitul ss

Despre calcularea PLS2 cu un supliment ChimiometrieAdauga la descrise în manualul Metode de proiecție în sistemul Excel.

Concluzie

MatLab este un instrument de analiză a datelor foarte popular. Potrivit sondajului, este folosit de până la o treime din toți cercetătorii, în timp ce programul Unsrambler este folosit de doar 16% dintre oamenii de știință. Principalul dezavantaj al MatLab este prețul ridicat. În plus, MatLab este bun pentru calculele de rutină. Lipsa de interactivitate face incomod atunci când se efectuează căutări, calcule de cercetare pentru seturi de date noi, neexplorate.

Dezavantajul funcțiilor de salvare și încărcare descrise este că funcționează cu anumite formate de fișiere (de obicei fișiere mat) și nu permit încărcarea sau salvarea datelor în alte formate. Între timp, este nevoie să încărcați informații, de exemplu, din fișiere binare create de alte produse software pentru procesarea ulterioară a rezultatelor în MatLab. În acest scop, au fost dezvoltate funcții

scrie (<идентификатор файла>, <переменная>, <тип данных>);

<переменная>= frid (<идентификатор файла>);
<переменная>= frid (<идентификатор файла>, <размер>);
<переменная>= frid (<идентификатор файла>, <размер>, <точность>);

Aici<идентификатор файла>este un pointer către fișierul cu care se lucrează. Pentru a obține identificatorul, este utilizată funcția

<идентификатор файла>= fopen (<имя файла>,<режим работы>);

unde parametrul<режим работы>poate lua valorile prezentate în tabel. 5.1.

Tabelul 5.1. Moduri de lucru cu fișiere în MatLab

parametru<режим работы>

Descriere

scrieți (șterge conținutul anterior al fișierului)

append (creează un fișier dacă nu există)

citește și scrie (nu creează un fișier dacă nu există)

citește și scrie (șterește conținutul vechi sau creează un fișier dacă nu există)

citește și adaugă (creează un fișier dacă nu există)

un parametru suplimentar care înseamnă lucrul cu fișiere binare, de exemplu, „wb”, „rb” „rb +”, „ab”, etc.

Dacă funcția fopen () din anumite motive nu poate deschide fișierul corect, atunci returnează -1. Mai jos este un fragment al programului pentru scrierea și citirea datelor dintr-un fișier binar:

A =;

fid = fopen ("fișierul_meu.dat", "wb"); % fișier deschis pentru scriere

eroare („Fișierul nu este deschis”);
Sfârșit

fwrite (fid, A, „dublu”); % matrice de scriere în fișier (40 octeți)
fclose (fid); % închideți fișierul

fid = fopen ("fișierul_meu.dat", "rb"); % fișier deschis pentru citire
dacă fid == -1% verificați dacă deschiderea este corectă
eroare („Fișierul nu este deschis”);
Sfârșit

B = fread (fid, 5, „dublu”); % citesc 5 valori duble
disp (B); % afișare pe ecran
fclose (fid); % închideți fișierul

Ca urmare a rulării acestui program, în directorul de lucru va fi creat un fișier de 40 de octeți fișierul_my.dat, care va conține 5 valori duble scrise ca o secvență de octeți (8 octeți pentru fiecare valoare). Funcția fread () citește octeții stocați secvențial și îi convertește automat la tipul double, adică. fiecare 8 octeți sunt interpretați ca o valoare dublă.

În exemplul dat, numărul de elemente (cinci) de citit din fișier a fost indicat în mod explicit. Cu toate acestea, numărul total de elemente este adesea necunoscut în avans sau se modifică în timpul funcționării programului. În acest caz, ar fi mai bine să citiți datele din fișier până când se ajunge la sfârșitul fișierului. Există o funcție în MatLab pentru a verifica dacă s-a ajuns la sfârșitul fișierului

feof (<идентификатор файла>)

care returnează 1 când se ajunge la sfârșitul fișierului și 0 în caz contrar. Să rescriem programul pentru a citi un număr arbitrar de elemente duble din fișierul de intrare.

fid = fopen ("fișierul_meu.dat", "rb"); % fișier deschis pentru citire
dacă fid == -1
Sfârșit

B = 0; % inițializare variabilă
cnt = 1; % inițializare contor
while ~ feof (fid)% buclă până la sfârșitul fișierului
= fread (fid, 1, „dublu”); % citesc unul
% valoare dublă (V conține valoarea
% din articol, N - numărul de articole citite)
dacă N> 0% dacă elementul a fost citit cu succes, atunci
B (cnt) = V; % formează un vector rând din V valori
cnt = cnt + 1; % crește contorul cu 1
Sfârșit
Sfârșit
disp (B); % afișează rezultatul pe ecran
fclose (fid); % închideți fișierul

Acest program generează dinamic un vector rând pe măsură ce citește elemente din fișierul de intrare. MatLab mărește automat dimensiunea vectorilor dacă indicele următorului element este cu 1 mai mult decât maxim. Cu toate acestea, o astfel de procedură necesită mult timp mașinii și programul începe să ruleze considerabil mai lent decât dacă dimensiunea vectorului B de la bun început ar fi determinată egală cu 5 elemente, de exemplu, așa

De asemenea, trebuie remarcat faptul că funcția fread () este scrisă cu doi parametri de ieșire V și N. Primul parametru conține valoarea articolului citit, iar al doilea conține numărul de articole citite. În acest caz, valoarea N va fi egală cu 1 de fiecare dată când informația este citită corect din fișier și 0 la citirea caracterului de serviciu EOF, ceea ce înseamnă sfârșitul fișierului. Verificarea de mai jos vă permite să generați corect un vector de valori B.

Datele șirurilor pot fi stocate și folosind funcțiile fwrite () și fread (). De exemplu, având în vedere șirul

str = „Bună MatLab”;

fwrite (fid, str, "int16");

Tipul int16 este folosit aici, deoarece atunci când lucrați cu litere rusești, sistemul MatLab utilizează o reprezentare pe doi octeți a fiecărui caracter. Mai jos este un program pentru scrierea și citirea datelor șirurilor folosind funcțiile fwrite () și fread ():

fid = fopen ("fișierul_meu.dat", "wb");
dacă fid == -1
eroare („Fișierul nu este deschis”);
Sfârșit

str = „Bună MatLab”; % șir de scris
fwrite (fid, str, "int16"); % scrie în fișier
fclose (fid);

fid = fopen ("fișierul_meu.dat", "rb");
dacă fid == -1
eroare („Fișierul nu este deschis”);
Sfârșit

B = ""; % inițializare șir
cnt = 1;
în timp ce ~ feof (fid)
= fread (fid, 1, "int16 => char"); % curent citit
% caracter și conversie
% la char
dacă N> 0
B (cnt) = V;
cnt = cnt + 1;
Sfârșit
Sfârșit
disp (B); % linie afișată pe ecran
fclose (fid);

Rezultatul executării programului va arăta ca

Lucrul din linia de comandă MatLab este dificil dacă trebuie să introduceți o mulțime de comenzi și să le schimbați des. Păstrarea unui jurnal cu comanda jurnal și salvarea mediului de lucru face lucrurile puțin mai ușoare. Cel mai convenabil mod de a executa comenzile MatLab este utilizarea Fișiere M,în care poți să tastați comenzi, să le executați pe toate odată sau pe părți, să le salvați într-un fișier și să le folosiți mai târziu. Editorul de fișiere M este destinat să lucreze cu fișiere M. Folosind acest editor, vă puteți crea propriile funcții și le puteți apela, inclusiv din linia de comandă.

Extinde meniul Fişier a ferestrei principale MatLab și în paragraful Nou selectați subarticolul Fișier M... Noul fișier se deschide în fereastra editorului de fișiere M.

Introduceți comenzile în editor care duc la construirea a două grafice într-o fereastră grafică:

x =;
f = exp (-x);
subplot (1, 2, 1)
grafic (x, f)
g = sin (x);
subplot (1, 2, 2)
grafic (x, g)

Salvați acum un fișier numit mydemo.m într-un subdirector muncă din directorul principal MatLab selectând elementul Salvează ca meniul Fişier editor. Pentru a rula toate comenzile conținute în fișier pentru execuție, selectați elementul Alergaîn meniu Depanați. Pe ecran va apărea o fereastră grafică. Figura Numarul 1, conţinând grafice ale funcţiilor. Dacă decideți să reprezentați cosinusul în loc de sinus, atunci pur și simplu schimbați linia g = sin (x) din fișierul M în g = cos (x) și executați din nou toate comenzile.

Observație 1

Dacă se comite o eroare la tastare și MatLab nu poate recunoaște comanda, atunci comenzile sunt executate până la cea introdusă incorect, după care este afișat un mesaj de eroare în fereastra de comandă.

O caracteristică foarte convenabilă oferită de editorul de fișiere M este executarea unor comenzi.Închideți fereastra grafică Figura Numarul 1. Selectați cu mouse-ul în timp ce țineți apăsat butonul din stânga sau cu tastele săgeți în timp ce țineți apăsat , primele patru comenzi ale programului și executați-le din punct A evalua Selecţie meniul Text. Vă rugăm să rețineți că în fereastra grafică este afișată o singură diagramă, corespunzătoare comenzilor executate. Amintiți-vă că pentru a executa unele dintre comenzi, selectați-le și apăsați ... Executați celelalte trei comenzi ale programului și monitorizați starea ferestrei grafice. Exersați-l singur, introduceți orice exemple din laboratoarele anterioare în editorul de fișiere M și rulați-le.

Pot fi furnizate blocuri individuale ale fișierului M comentarii, care sunt omise în timpul execuției, dar sunt convenabile atunci când lucrați cu un fișier M. Comentariile din MatLab încep cu un semn de procent și sunt evidențiate automat în verde, de exemplu:

% reprezentând sin (x) într-o fereastră separată

Mai multe fișiere pot fi deschise în același timp în editorul de fișiere M. Tranziția între fișiere se realizează folosind marcajele cu nume de fișiere situate în partea de jos a ferestrei editorului.

Deschiderea unui fișier M existent se face folosind elementul Deschis meniul Fişier mediu de lucru sau editorul de fișiere M. De asemenea, puteți deschide fișierul în editor folosind comanda MatLab edit din linia de comandă, specificând numele fișierului ca argument, de exemplu:

Comanda de editare fără argument creează un fișier nou.
Toate exemplele care se găsesc în acest laborator și în următoarele laboratoare sunt cel mai bine tastate și salvate în fișiere M, completate cu comentarii și executate din editorul de fișiere M. Aplicarea metodelor numerice și a programării în MatLab necesită crearea de fișiere M.

2. Tipuri de fișiere M

Există două tipuri de fișiere M în MatLab: fișier program(Script M-Files) care conține o secvență de comenzi și funcții-fișier(Funcția M-Files), care descriu funcții definite de utilizator.

Ați creat un fișier de program (fișier de procedură) când ați citit subsecțiunea anterioară. Toate variabilele declarate în fișierul program devin disponibile în mediul de producție după execuția acestuia. Rulați programul de fișiere prezentat în subsecțiunea 2.1 în editorul de fișiere M? și tastați whos în linia de comandă pentru a vizualiza conținutul mediului de lucru. Descrierea variabilelor va apărea în fereastra de comandă:

„Cine
Nume Mărime Octeți Clasa
f 1x71 568 matrice dublă
g 1x71 568 matrice dublă
x 1x71 568 matrice dublă
Totalul mare este de 213 elemente folosind 1704 de octeți

Variabilele definite într-un fișier de program pot fi utilizate în alte programe de fișiere și în comenzile executate din linia de comandă. Executarea comenzilor conținute în programul de fișiere se realizează în două moduri:

  • Din editorul de fișiere M așa cum este descris mai sus.
  • Din linia de comandă sau alt fișier de program, în timp ce numele fișierului M este folosit ca comandă.

Utilizarea celei de-a doua metode este mult mai convenabilă, mai ales dacă fișierul program creat va fi folosit în mod repetat ulterior. De fapt, fișierul M generat devine o comandă pe care MatLab o înțelege. Închideți toate ferestrele grafice și tastați mydemo în linia de comandă, apare o fereastră grafică corespunzătoare comenzilor din fișierul program mydemo.m. După introducerea comenzii mydemo MatLab efectuează următoarele acțiuni.

  • Verifică dacă comanda introdusă este numele vreuneia dintre variabilele definite în mediul de producție. Dacă este introdusă o variabilă, atunci valoarea acesteia este afișată.
  • Dacă nu este introdusă o variabilă, atunci MatLab caută comanda introdusă printre funcțiile încorporate. Dacă comanda se dovedește a fi o funcție încorporată, atunci este executată.

Dacă nu este introdusă o variabilă sau o funcție încorporată, atunci MatLab începe să caute un fișier M cu numele și extensia comenzii m... Căutarea începe cu directorul curent(Directorul curent), dacă fișierul M nu este găsit în el, atunci MatLab caută directoarele instalate în căi de căutare(Cale). Fișierul M găsit este executat în MatLab.

Dacă niciuna dintre acțiunile de mai sus nu a condus la succes, atunci este afișat un mesaj în fereastra de comandă, de exemplu:

»Mydem
??? Funcție nedefinită sau variabilă „mydem”.

De obicei, fișierele M sunt stocate în directorul utilizatorului. Pentru ca MatLab să le găsească, ar trebui să setați căile care indică locația fișierelor M.

Observația 2

Ar trebui să păstrați propriile fișiere M în afara directorului principal MatLab din două motive. În primul rând, la reinstalarea MatLab, fișierele care sunt conținute în subdirectoarele directorului principal MatLab pot fi distruse. În al doilea rând, la pornirea MatLab, toate fișierele din subdirectorul casetei de instrumente sunt plasate în memoria computerului într-un mod optim pentru a crește performanța de lucru. Dacă ați scris fișierul M în acest director, atunci va fi posibil să îl utilizați numai după repornirea MatLab.

3. Stabilirea căilor

În versiunile MatLab 6 .X directorul curent și căile de căutare sunt determinate. Aceste proprietăți sunt setate fie folosind casetele de dialog adecvate, fie utilizând comenzi din linia de comandă.

Directorul curent este determinat într-o casetă de dialog Actual Director mediu de lucru. Fereastra este prezentă în mediul de lucru dacă elementul este selectat Actual Director meniul Vedere mediu de lucru.
Directorul curent este selectat din listă. Dacă nu este în listă, atunci poate fi adăugat din caseta de dialog Naviga pentru Pliant, apelat făcând clic pe butonul situat în dreapta listei. Conținutul directorului curent este afișat în tabelul de fișiere.

Căile de căutare sunt definite în caseta de dialog A stabilit cale navigator de cale, accesat din punct A stabilit cale meniul Fişier mediu de lucru.

Pentru a adăuga un director, faceți clic pe butonul Adăuga Pliant Naviga pentru cale selectați directorul necesar. Adăugarea unui director cu toate subdirectoarele se realizează făcând clic pe butonul Adăugați cu subdosare. MATLAB căutare cale. Ordinea de căutare corespunde locației căilor din acest câmp, directorul situat în partea de sus a listei căutând primul. Ordinea de căutare poate fi modificată sau calea către un director poate fi ștearsă cu totul, pentru care selectați directorul în câmp MATLAB căutare caleși determinați-i poziția utilizând următoarele butoane:
Mutare la Top - treceți în partea de sus a listei;
Mutare Sus - mutați o poziție în sus;
Elimina - eliminați din listă;
Mutare Jos - deplasați-vă în jos cu o poziție;
Mutare la Partea de jos - puse în partea de jos a listei.

4. Comenzi pentru setarea căilor.

Pași pentru a seta căi în MatLab 6 .X duplicat prin comenzi. Directorul curent este setat cu comanda cd, de exemplu cd c: \ utilizatori \ igor. Comanda cd, invocată fără argument, tipărește calea către directorul curent. Pentru a seta căi, utilizați comanda path, invocată cu două argumente:

cale (cale, "c: \ utilizatori \ igor") - adaugă directorul c: \ utilizatori \ igor cu cea mai mică prioritate de căutare;
cale ("c: \ utilizatori \ igor", cale) - adaugă directorul c: \ utilizatori \ igor cu cea mai mare prioritate de căutare.

Utilizarea comenzii cale fără argumente are ca rezultat o listă de căi de căutare afișată pe ecran. Puteți elimina o cale din listă folosind comanda rpath:

rpath ("c: \ utilizatori \ igor") elimină calea către directorul c: \ utilizatori \ igor din lista de căi.

Observația 3

Nu ștergeți în mod inutil căile către directoare, în special cele despre care nu sunteți sigur de scopul. Eliminarea poate duce la faptul că unele dintre funcțiile definite în MatLab vor deveni indisponibile.

Exemplu. Creați în directorul rădăcină al discului D(sau orice alt disc sau director unde studenții au voie să-și creeze propriile directoare) un director cu numele dvs. de familie, de exemplu WORK_IVANOV, și scrieți acolo fișierul M mydemo.m sub numele mydemo3.m. Setați căile către fișier și demonstrați că fișierul este accesibil din linia de comandă. Raportați rezultatele în raportul de laborator.

Opțiune de soluție:

1. În directorul rădăcină al discului D este creat directorul WORK_IVANOV.
2. Fișierul M mydemo.m sub numele mydemo3.m este scris în directorul WORK_IVANOV.
3. Se deschide o casetă de dialog. A stabilit cale meniul Fişier mediul de lucru MatLab.
4. Este apăsat butonul Adăuga Pliant iar în dialogul care apare Naviga pentru cale directorul WORK_IVANOV este selectat.
5. Adăugarea unui director cu toate subdirectoarele se realizează prin apăsarea butonului Adăuga cu Subdosare. Calea către directorul adăugat apare în câmp MATLAB căutare cale.
6. Pentru a memora traseul, apăsați tasta Salvați căsuță de dialog A stabilit Cale.
7. Verificarea corectitudinii tuturor acțiunilor tastând comanda mydemo3 din linia de comandă. Pe ecran va apărea o fereastră grafică.

5. Funcții de fișiere

Programele de fișiere de mai sus sunt o secvență de comenzi MatLab, nu au argumente de intrare și de ieșire. Pentru a utiliza metode numerice și atunci când vă programați propriile aplicații în MatLab, trebuie să puteți compune funcții de fișier care efectuează acțiunile necesare cu argumente de intrare și returnează rezultatul în argumente de ieșire. În această subsecțiune, sunt discutate câteva exemple simple pentru a vă ajuta să înțelegeți cum să lucrați cu funcțiile fișierului. Funcțiile fișierelor, cum ar fi procedurile de fișiere, sunt create în editorul de fișiere M.

5.1. Funcțiile fișierului cu un singur argument de intrare

Să presupunem că în calcule este adesea necesară utilizarea funcției

Este logic să scrieți o funcție de fișier o dată și apoi să o apelați oriunde este necesar pentru a evalua această funcție. Deschideți un fișier nou în editorul de fișiere M și introduceți textul listei

funcția f = fun (x)
f = exp (-x) * sqrt ((x ^ 2 + 1) / (x ^ 4 + 0,1));

Cuvântul funcție de pe prima linie specifică faptul că acest fișier conține un fișier de funcție. Prima linie este antetul funcției, care gazduieste numele funcțieiși liste de argumente de intrare și de ieșire. În exemplul prezentat în listă, numele funcției este myfun, un argument de intrare este x și o ieșire este f. Titlul este urmat de corp funcțional(în acest exemplu, este format dintr-o linie), unde este calculată valoarea sa. Este important ca valoarea calculată să fie scrisă în f. Punctul și virgulă este inclus pentru a preveni afișarea informațiilor inutile pe ecran.

Acum salvați fișierul în directorul de lucru. Vă rugăm să rețineți că selectarea articolului Salvați sau Salvați la fel de meniul Fişier duce la apariția unei casete de dialog pentru salvarea fișierului, în câmp Fişier Nume care conține deja numele myfun. Nu îl modificați, salvați fișierul funcției într-un fișier cu numele sugerat.

Acum, funcția creată poate fi utilizată în același mod ca și sin, cos și altele încorporate, de exemplu, din linia de comandă:

„Y = distracția mea (1.3)
Y =
0.2600

Funcțiile proprii pot fi apelate dintr-un fișier de program și dintr-o altă funcție de fișier.

Un avertisment

Directorul care conține fișierul funcției trebuie să fie actual, sau calea către acesta trebuie adăugată la căile de căutare, altfel MatLab pur și simplu nu va găsi funcția, sau va apela în schimb o alta cu același nume (dacă se află în directoarele disponibile). pentru căutare).

Funcția de fișier afișată în listă are un dezavantaj semnificativ. Încercarea de a calcula valorile funcției dintr-o matrice are ca rezultat o eroare, nu o matrice de valori, așa cum se întâmplă la evaluarea funcțiilor încorporate.

„X =;
„Y = distracția mea (x)
??? Eroare la utilizare ==> ^
Matricea trebuie să fie pătrată.
Eroare în ==> C: \ MATLABRll \ work \ myfun.m
Pe linia 2 ==> f = exp (-x) * sqrt ((x ^ 2 + 1) / (x ^ 4 + 1));

Dacă ați studiat lucrul cu matrice, atunci eliminarea acestui neajuns nu va cauza dificultăți. Trebuie doar să utilizați operații în funcție de elemente atunci când calculați valoarea unei funcții.
Modificați corpul funcției așa cum se arată în lista următoare (nu uitați să salvați modificările în fișierul myfun.m).

funcția f = fun (x)
f = exp (-x) * sqrt ((x. ^ 2 + 1) ./ (x. ^ 4 + 0,1));

Acum argumentul funcției myfun poate fi fie un număr, fie un vector sau o matrice de valori, de exemplu:

„X =;
„Y = distracția mea (x)
Y =
0.2600 0.0001

Variabila y, în care este scris rezultatul apelării funcției myfun, devine automat un vector de dimensiunea necesară.

Trasează funcția myfun pe un segment din linia de comandă sau folosind un program de fișiere:

x =;
y = myfun (x);
grafic (x, y)

MatLab oferă încă o oportunitate de a lucra cu funcții de fișier - folosindu-le ca argumente pentru unele comenzi. De exemplu, o funcție specială fplot este utilizată pentru trasarea unui grafic, care înlocuiește secvența de comenzi prezentată mai sus. Când apelați fplot, numele funcției al cărei grafic doriți să îl reprezentați este inclus în apostrofe, limitele de reprezentare sunt specificate într-un vector rând cu două elemente

fplot ("my fun",)

Plot myfun plots cu plot și fplot pe aceleași axe cu hold on. Vă rugăm să rețineți că graficul reprezentat cu fplot reflectă mai precis comportamentul funcției, deoarece fplot însuși selectează pasul argumentului, scăzându-l în zonele de schimbare rapidă a funcției afișate. Raportați rezultatele în raportul de laborator.

5.2. Funcții de fișier cu mai multe argumente de intrare

Scrierea funcțiilor de fișier cu mai multe argumente de intrare este practic aceeași ca și în cazul unui singur argument. Toate argumentele de intrare sunt plasate într-o listă separată prin virgulă. De exemplu, următoarea listă conține o funcție de fișier care calculează lungimea vectorului rază a unui punct din spațiul tridimensional
Listarea unei funcții de fișier cu mai multe argumente

funcția r = raza3 (x, y, z)
r = sqrt (x. ^ 2 + y. ^ 2 + z. ^ 2);

»R = raza3 (1, 1, 1)
R =
1.732

Pe lângă funcțiile cu mai multe argumente de intrare, MatLab vă permite să creați funcții care returnează mai multe valori, de exemplu. având mai multe argumente de ieșire.

5.3. Funcții de fișier cu mai multe argumente de ieșire

Funcțiile de fișier cu mai multe argumente de ieșire sunt utile atunci când se evaluează funcții care returnează mai multe valori (în matematică, acestea sunt numite funcții vectoriale). Argumentele de ieșire sunt adăugate la lista de argumente de ieșire, separate prin virgule, iar lista în sine este cuprinsă între paranteze drepte. Un bun exemplu este o funcție care convertește un timp în secunde în ore, minute și secunde. Această funcție de fișier este afișată în lista următoare.

Lista funcției de conversie a secundelor în ore, minute și secunde

funcția = hms (sec)
ora = etaj (sec / 3600);
minut = etaj ((sec-oră * 3600) / 60);
secundă = sec-oră * 3600-minut * 60;

Când apelați funcții de fișier cu mai multe argumente de ieșire, rezultatul ar trebui să fie scris într-un vector de lungimea corespunzătoare:

„[H, M, S] = hms (10000)
H =
2
M =
46
S =
40

6. Fundamentele programării în MatLab

Funcțiile fișierului și fișierul program utilizat în subsecțiunile anterioare sunt cele mai simple exemple de programe.Toate comenzile MatLab conținute în ele sunt executate secvențial. Pentru a rezolva probleme mult mai grave, este necesar să scrieți programe în care acțiunile sunt efectuate ciclic sau, în funcție de anumite condiții, sunt executate diverse părți ale programelor. Să luăm în considerare principalii operatori care stabilesc secvența de execuție a comenzilor MatLab. Operatorii pot fi utilizați atât în ​​procedurile de fișiere, cât și în funcții, ceea ce vă permite să creați programe cu o structură ramificată complexă.

6.1. Operator de buclă pentru

Operatorul este proiectat să efectueze un anumit număr de acțiuni repetitive. Cea mai simplă utilizare a instrucțiunii for este următoarea:

for count = start: step: final
Comenzi MatLab
Sfârșit

Aici count este variabila buclă, start este valoarea sa inițială, final este valoarea finală și pasul este pasul prin care numărul este incrementat de fiecare dată când este introdusă bucla. Bucla se termină imediat ce numărul devine mai mare decât finalul. Variabila buclă poate lua nu numai valori întregi, ci și valori reale ale oricărui semn. Să analizăm utilizarea operatorului de buclă for folosind câteva exemple tipice.
Fie necesar să se obțină o familie de curbe pentru, care este dată de o funcție în funcție de parametru pentru valorile parametrilor de la -0,1 la 0,1.
Tastați textul procedurii fișierului în editorul de fișiere M și salvați-l în fișierul FORdem1.m și rulați-l (din editorul de fișiere M sau din linia de comandă tastând comanda FORdem1 în el și apăsând ):

% program-fișier pentru construirea unei familii de curbe
x =;
pentru a = -0,1: 0,02: 0,1
y = exp (-a * x). * sin (x);
stai asa
grafic (x, y)
Sfârșit

Observația 4

Editorul de fișiere M oferă automat să plaseze instrucțiuni în interiorul buclei, indentate din marginea din stânga. Folosiți această oportunitate pentru confortul de a lucra cu textul programului.

Ca urmare a execuției FORdem1, va apărea o fereastră grafică, care conține familia necesară de curbe.

Scrieți un fișier de program pentru a calcula suma

Algoritmul de calcul al sumei folosește acumularea rezultatului, adică. la început, suma este egală cu zero ( S= 0), apoi într-o variabilă k Se introduce 1, se calculează 1 / k! se adaugă la S iar rezultatul este introdus din nou S... Mai departe k crește cu unu, iar procesul continuă până când ultimul termen devine 1/10 !. Programul de fișiere Fordem2, prezentat în lista următoare, calculează suma necesară.

Listarea programului de fișiere Fordem2 pentru calcularea sumei

% program-fișier pentru calcularea sumei
% 1/1!+1/2!+ … +1/10!

% Reducerea la zero a S pentru a acumula suma
S = 0;
% acumulare a cantității în ciclu
pentru k = 1:10
S = S + 1 / factorial (k);
Sfârșit
% scoate rezultatul în fereastra de comandă S

Tastați fișierul de program în editorul de fișiere M, salvați-l în directorul curent din fișierul Fordem2.m și executați. Rezultatul va fi afișat în fereastra de comandă, deoarece în ultima linie a fișierului program S conținut fără punct și virgulă pentru a scoate valoarea variabilei S

Rețineți că restul liniilor din fișierul program, care ar fi putut cauza afișarea valorilor intermediare, sunt terminate cu un punct și virgulă pentru a suprima ieșirea în fereastra de comandă.

Primele două rânduri cu comentarii nu sunt separate accidental printr-o linie goală de restul textului programului. Sunt cele care sunt afișate atunci când utilizatorul, folosind comanda help din linia de comandă, primește informații despre ceea ce face Fordem2.

>> ajuta Fordem2
fisier-program pentru calcularea sumei
1/1!+1/2!+ … +1/10!

Când scrieți programe și funcții de fișiere, nu neglijați comentariile!
Toate variabilele utilizate în fișierul program devin disponibile în mediul de producție. Sunt așa-numitele variabile globale. Pe de altă parte, toate variabilele introduse în mediul de lucru pot fi utilizate într-un fișier program.

Luați în considerare problema calculării sumei, similară celei precedente, dar în funcție de variabilă X

Pentru a calcula această sumă în programul de fișiere Fordem2, trebuie să schimbați linia din interiorul buclei for la

S = S + x. ^ K / factorial (k);

Înainte de a începe programul, trebuie să definiți variabila X la linia de comandă cu următoarele comenzi:

>> x = 1,5;
>> Fordem2
S =
3.4817

La fel de X poate fi un vector sau o matrice, deoarece operațiile element cu element au fost folosite pentru a acumula suma în programul-fișier Fordem2.

Înainte de a porni Fordem2, asigurați-vă că alocați variabilei X o anumită valoare și pentru a calcula suma, de exemplu, a cincisprezece termeni, va trebui să faceți modificări textului fișierului program. Este mult mai bine să scrieți o funcție de fișier generică care are o valoare ca argumente de intrare Xși limita superioară a sumei, iar weekendul este valoarea sumei S(X). Funcția fișierului sumN este afișată în lista următoare.

Listarea funcției fișier pentru calcularea sumei

funcția S = sumăN (x, N)
% fișier-funcție pentru calcularea sumei
% x / 1! + x ^ 2/2! +… + x ^ N / N!
% utilizare: S = sumN (x, N)

% zero S pentru a acumula suma
S = 0;
% acumulare a cantității în ciclu
pentru m = 1: 1: N
S = S + x. ^ M / factorial (m);
Sfârșit

Utilizatorul poate afla despre utilizarea funcției sumN tastând help sumN la linia de comandă. Fereastra de comandă va afișa primele trei rânduri cu comentarii, separate de textul funcției fișier printr-o linie goală.

Rețineți că variabilele funcției fișier nu sunt globale (m în suma funcției fișiere). Încercarea de a vizualiza valoarea lui m din linia de comandă are ca rezultat un mesaj care spune că m este nedefinit. Dacă în mediul de lucru există o variabilă globală cu același nume, definită din linia de comandă sau în programul fișier, atunci aceasta nu este conectată în niciun fel cu variabila locală din funcția fișier. De regulă, este mai bine să vă proiectați proprii algoritmi sub formă de funcții de fișier, astfel încât variabilele utilizate în algoritm să nu modifice valorile acelorași variabile globale ale mediului de lucru.

Buclele For pot fi imbricate unele în altele, în timp ce variabilele buclelor imbricate trebuie să fie diferite.

Bucla for este utilă pentru a efectua acțiuni repetitive, similare, atunci când numărul este predeterminat. O buclă while mai flexibilă vă permite să ocoliți această limitare.

6.2. Instrucțiunea while loop

Să luăm în considerare un exemplu pentru calcularea sumei, similar cu exemplul din paragraful anterior. Este necesar să se găsească suma unei serii pentru un dat X(extindere serie):
.

Suma poate fi acumulată atâta timp cât termenii nu sunt prea mici, să spunem mai mult în modul.Bucla for este indispensabilă aici, deoarece numărul de termeni nu este cunoscut dinainte. Calea de ieșire este să folosiți o buclă while, care rulează atâta timp cât condiția buclei este îndeplinită:

condiția buclei while
Comenzi MatLab
Sfârșit

În acest exemplu, condiția buclei prevede că termenul curent este mai mare. Semnul mai mare decât (>) este utilizat pentru a înregistra această condiție. Textul funcției fișier mysin care calculează suma unei serii este afișat în lista următoare.

Listarea funcției fișierului mysin care calculează sinus prin extindere în serie

funcția S = mysin (x)
% Calculați sinus prin expansiune în serie
% Utilizare: y = mysin (x), -pi

S = 0;
k = 0;
în timp ce abs (x. ^ (2 * k + 1) / factorial (2 * k + 1))> 1.0e-10
S = S + (-1) ^ k * x. ^ (2 * k + 1) / factorial (2 * k + 1);
k = k + 1;
Sfârșit

Rețineți că bucla while, spre deosebire de for, nu are o variabilă de buclă, așa că a trebuit să atribuim zero înainte de a începe bucla, iar în interiorul buclei am mărit k cu unu.
Condiția de buclă while poate conține mai mult decât semnul>. Pentru stabilirea condițiilor de execuție a ciclului sunt permise și alte operații ale relației, date în tabel. 1.

Tabelul 1. Operațiuni de relație

Condițiile mai complexe sunt specificate folosind operatori logici. De exemplu, condiția constă în îndeplinirea simultană a două inegalități și, și se scrie folosind operatorul logic și

și (x> = -1, x< 2)

sau echivalent cu &

(x> = -1) și (x< 2)

Operatorii logici și exemplele de utilizare a acestora sunt date în tabel. 2.

Tabelul 2. Operatori logici

Operator

Scriind la MatLab

Notație echivalentă

„ȘI” logic

și (x< 3, k == 4)

(X< 3) & (k == 4)

„SAU” logic

Sau (x == 1, x == 2)

(x == 1) | (x == 2)

Respingerea „NU”

Când se calculează suma unei serii infinite, este logic să se limiteze numărul de termeni. Dacă seria diverge din cauza faptului că membrii săi nu tind spre zero, atunci condiția pentru o valoare mică a termenului curent s-ar putea să nu fie îndeplinită niciodată și programul se va bucla. Efectuați sumarea adăugând o limită a numărului de termeni la condiția buclei while a funcției fișierului mysin:

în timp ce (abs (x. ^ (2 * k + 1) / factorial (2 * k + 1))> 1.0e-10) & (k<=10000))

sau în formă echivalentă

în timp ce și (abs (x. ^ (2 * k + 1) / factorial (2 * k + 1))> 1.0e-10), k<=10000)

Organizarea acțiunilor repetitive sub formă de bucle face ca programul să fie simplu și ușor de înțeles; totuși, este adesea necesară executarea unuia sau altul bloc de comenzi în funcție de anumite condiții, de ex. utilizați ramificarea algoritmului.

6.3. Declarație condițională if

Operator condiționat dacă vă permite să creați un algoritm de ramificare pentru executarea comenzilor, în care, atunci când sunt îndeplinite anumite condiții, funcționează blocul corespunzător de operatori sau comenzi MatLab.

Instrucțiunea if poate fi folosită în forma sa simplă pentru a executa un bloc de comenzi atunci când o anumită condiție este îndeplinită, sau într-o construcție if-elseif-else pentru a scrie algoritmi de ramificare.
Să fie evaluată expresia. Să presupunem că efectuați calcule în zona tărâmului și doriți să afișați un avertisment că rezultatul este un număr complex. Înainte de a evalua funcția, ar trebui să verificați valoarea argumentului x și să imprimați un avertisment în fereastra de comandă dacă modulul x nu depășește unul. Aici este necesar să folosiți operatorul condiționat dacă, a cărui aplicare în cel mai simplu caz arată astfel:

dacă starea
Comenzi MatLab
Sfârșit

Dacă condiția este îndeplinită, atunci sunt implementate comenzile MatLab plasate între if și end, iar dacă condiția nu este îndeplinită, atunci are loc trecerea la comenzile situate după end. Când se înregistrează o condiție, se folosesc operațiunile prezentate în tabel. 1.

Funcția fișier care verifică valoarea argumentului este afișată în lista următoare. Comanda de avertizare este utilizată pentru a afișa un avertisment în fereastra de comandă.

Listarea funcției fișierului Rfun care verifică valoarea argumentului

funcția f = Rfun (x)
% calculează sqrt (x ^ 2-1)
% afișează un avertisment dacă rezultatul este complex
% utilizare y = Rfun (x)

% verifica argument
dacă abs (x)<1
avertisment ("rezultatul este complex")
Sfârșit
% evaluarea funcției
f = sqrt (x ^ 2-1);

Acum apelarea Rfun pe un argument mai mic de unu va afișa un avertisment în fereastra de comandă:

>> y = Rfun (0,2)
rezultatul este complex
y =
0 + 0,97979589711327i

Fișierul funcției Rfun avertizează doar că valoarea sa este complexă și toate calculele cu acesta continuă. Dacă rezultatul complex înseamnă o eroare de calcul, atunci funcția ar trebui să fie terminată folosind comanda de eroare în loc de avertizare.

6.4. Operator de ramificare if-elseif-else

În general, aplicarea operatorului de sucursală if-elseif-else este următoarea:

dacă starea 1
Comenzi MatLab
condiția elseif 2
Comenzi MatLab
condiția elseif 3
Comenzi MatLab
. . . . . . . . . . .
condiția elseif N
Comenzi MatLab
altfel
Comenzi MatLab
Sfârșit

În funcţie de performanţa unuia sau altuia dintre N condiții, ramura corespunzătoare a programului rulează dacă niciuna dintre N condițiile, apoi comenzile MatLab plasate după else sunt implementate. După executarea oricăreia dintre ramuri, operatorul iese. Pot exista oricâte ramuri doriți, sau doar două. În cazul a două ramuri, se folosește trailing else și se omite elseif. Declarația trebuie întotdeauna să se încheie cu sfârșit.
Un exemplu de utilizare a operatorului if-elseif-else este prezentat în lista următoare.

funcția ifdem (a)
% exemplu de utilizare a operatorului if-elseif-else

dacă (a == 0)
avertisment („egal cu zero”)
elseif a == 1
avertisment ("este egal cu unu")
elseif a == 2
avertisment ("egal cu doi")
elseif a> = 3
avertisment ("a, este mai mare sau egal cu trei")
altfel
avertisment ("a este mai mic de trei și nu este egal cu zero, unu, doi")
Sfârșit

6.5. Operator de sucursală intrerupator

Instrucțiunea switch poate fi utilizată pentru a efectua selecții multiple sau ramificare. . Este o alternativă la declarația if-elseif-else. În general, aplicarea comutatorului de ramificare a operatorului arată astfel:

switch switch_expression
valoarea cazului 1
Comenzi MatLab
valoarea cazului 2
Comenzi MatLab
. . . . . . . . . . .
valoarea cazului N
Comenzi MatLab
caz (valoarea N + 1, valoarea N + 2, ...)
Comenzi MatLab
. . . . . . . . . . . .
caz (valoarea NM + 1, valoarea NM + 2, ...)
in caz contrar
Comenzi MatLab
Sfârșit

În acest operator, valoarea switch_expression este mai întâi evaluată (poate fi o valoare numerică scalară sau un șir de caractere). Această valoare este apoi comparată cu următoarele valori: valoarea 1, valoarea 2,..., valoarea N, valoarea N + 1, valoarea N + 2,..., valoarea NM + 1, valoarea NM + 2,... (care poate fi și numerică sau sfoară)... Dacă se găsește o potrivire, atunci sunt executate comenzile MatLab după cuvântul cheie caz corespunzător. În caz contrar, sunt executate comenzile MatLab situate între cuvintele cheie otherwise și end.

Pot exista orice număr de rânduri cu cuvântul cheie case, dar trebuie să existe o singură linie cu cuvântul cheie altfel.

După executarea oricăreia dintre ramuri, comutatorul este ieșit, în timp ce valorile specificate în alte cazuri nu sunt verificate.

Următorul exemplu ilustrează utilizarea comutatorului:

funcția demswitch (x)
a = 10/5 + x
comutator a
cazul 1
avertisment ("a = -1")
cazul 0
avertisment ("a = 0")
cazul 1
avertisment ("a = 1")
caz (2, 3, 4)
avertisment ("a este 2 sau 3 sau 4")
in caz contrar
avertisment ("a nu este egal cu -1, 0, 1, 2, 3, 4")
Sfârșit

>> x = -4
demswitch (x)
a =
1
avertisment: a = 1
>> x = 1
demswitch (x)
a =
6
avertisment: a nu este egal cu -1, 0, 1, 2, 3, 4

6.6. Declarație de întrerupere în buclă pauză

Atunci când se organizează calcule ciclice, trebuie avut grijă pentru a evita erorile în interiorul buclei. De exemplu, să presupunem că vi se oferă o matrice x constând din numere întregi și trebuie să formați o nouă matrice y conform regulii y (i) = x (i + 1) / x (i). Evident, sarcina poate fi realizată folosind o buclă for. Dar dacă unul dintre elementele matricei originale este egal cu zero, atunci diviziunea va avea ca rezultat inf, iar calculele ulterioare pot fi inutile. Această situație poate fi prevenită prin ieșirea din buclă dacă valoarea curentă a lui x (i) este egală cu zero. Următorul fragment de cod demonstrează utilizarea instrucțiunii break pentru a întrerupe o buclă:

pentru x = 1:20
z = x-8;
dacă z == 0
pauză
Sfârșit
y = x / z
Sfârșit

De îndată ce z devine 0, bucla este întreruptă.

Declarația break vă permite să întrerupeți prematur execuția buclelor for și while. În afara acestor bucle, instrucțiunea break nu funcționează.

Dacă instrucțiunea break este utilizată într-o buclă imbricată, atunci iese numai din bucla interioară.

Referința proprietăților obiectului grafic

Casete de dialog standard.

Funcții pentru crearea casetelor de dialog

MATLAB definește 15 funcții pentru crearea casetelor de dialog standard. Aspectul casetelor de dialog poate fi personalizat prin specificarea argumentelor de intrare ale acestor funcții. Mai jos sunt exemple de casete de dialog și numele funcțiilor corespunzătoare cu scopul lor.

Casete de dialog pentru mesaje:

errordlg - creează o casetă de dialog cu un mesaj de eroare;

helpdlg - creați o casetă de dialog pentru afișarea informațiilor;

warndlg - creează o casetă de dialog de avertizare;

msgbox - creați o casetă de dialog pentru afișarea unui mesaj.

Dialog de confirmare(funcția questdlg)

Caseta de dialog pentru introducerea informațiilor(funcția inputdlg)

Casetă de dialog pentru selecția dintr-o listă(funcția listdlg)

Casete de dialog pentru setarea opțiunilor de imprimare

pagesetupdlg - afișează o casetă de dialog cu mai multe pagini pentru setarea parametrilor foii și modul de imprimare a conținutului ferestrei grafice;

printdlg - afișează o casetă de dialog pentru selectarea opțiunilor de imprimare și a setărilor imprimantei.

Deschideți fișierul și salvați casetele de dialog

uigetfile - afișează o casetă de dialog pentru deschiderea fișierului

uiputfile - afișează dialogul de salvare a fișierului

Caseta de dialog de selectare a directorului(funcția uigetdir)

Dialog de selectare a fontului(funcția uisetfont)

Caseta de dialog pentru selectarea culorii(funcția uisetcolor)

Bara de progres(funcția de bară de așteptare)

Pe lângă funcțiile enumerate, există o funcție de dialog concepută pentru a crea o fereastră grafică goală. Proprietățile acestei ferestre grafice pot fi setate folosind argumentele de intrare în funcția de dialog.

Să luăm în considerare utilizarea casetelor de dialog standard folosind exemplul ferestrei de deschidere a fișierului.

Exemplu de aplicație myview cu dialog de deschidere a fișierului

Să creăm o aplicație GUI myview care ne permite să vedem fișiere grafice. Fereastra aplicației care rulează este prezentată în Fig. 1. Apăsând butonul Deschide imaginea se afișează caseta de dialog standard Selectează fișierul de deschis. Fișierul grafic selectat este afișat în fereastra aplicației. Făcând clic pe butonul Închidere imagine, se șterge fereastra aplicației myview.

Orez. 1. Fereastra aplicației myview.

În mediul GUIDE, în fereastra goală a aplicației, plasați axele și două butoane așa cum se arată în Figura 2. În inspectorul de proprietăți, etichetați butonul din stânga cu btnOpen și setați proprietatea String la Deschide imaginea. La fel pentru butonul din dreapta: tag - btnClose și String - Close Image.

Axele sunt necesare pentru a afișa imaginea folosind funcția imagine. Vom folosi un apel de nivel scăzut la funcția imagine, care presupune direcția opusă axei. y pentru ca desenul să nu fie cu susul în jos. Deci, în inspectorul de proprietate schimba direcția axei y prin setarea proprietății axelor YDir la inversare. Pentru a ascunde liniile de grilă și liniile de axă, faceți axele invizibile setând proprietatea lor Vizibil la dezactivat.

Orez. 2. Pregatirea ferestrei aplicatiei in mediul GUIDE.

Salvați aplicația ca myview și programați evenimentele de apel invers pentru butoanele Deschidere imagine și Închidere imagine.

Când utilizatorul face clic pe Deschide imaginea, ar trebui să apară un dialog de deschidere a fișierului, iar după selectarea unui fișier, imaginea ar trebui să fie afișată pe axe. Să folosim caseta de dialog standard a fișierului deschis creat de funcția uigetfile. Cea mai simplă referire la acesta este următoarea:

Uigetfile

Dacă utilizatorul a selectat un fișier și a închis fereastra făcând clic pe butonul Deschidere din acesta, atunci primul argument de ieșire FileName returnează numele fișierului (cu extensia), iar al doilea PathName returnează calea către fișier. Dacă utilizatorul nu a selectat fișierul (a făcut clic pe Anulare sau a închis fereastra cu un buton cu o cruce pe titlul ferestrei sau a făcut clic pe ), atunci variabila FileName va fi egală cu zero. Prin urmare, acțiunile suplimentare depind de valoarea FileName.

Dacă fișierul a fost selectat, atunci ar trebui

1) formează numele complet al dosarului;

3) afișați imaginea pe axă folosind funcția imagine.

Dacă fișierul nu a fost selectat, atunci nu trebuie să faceți nimic.

Evenimentul de apel invers al butonului Închidere imagine poate consta dintr-un singur operator - un apel la funcția cla pentru a șterge axele.

Programați subfuncțiile evenimentului de apel invers ale butoanelor Deschidere imagine și Închidere imagine, după cum urmează.

Funcția btnOpen_Callback (hObject, eventdata, handle)% Gestionează evenimentul Callback al butonului Open Image% Obține numele și calea către fișier = uigetfile; % Verificarea dacă fișierul a fost selectat dacă FileName ~ = 0% Se formează calea completă către fișier FullName =; % Citirea unei imagini dintr-un fișier grafic Pict = imread (FullName); % Ieșirea imaginii pe axa imaginii ("CData", Pict) funcție de final btnClose_Callback (hObject, eventdata, handle)% Gestionarea evenimentului Callback al butonului Close Image% Ștergerea axelor cla

Porniți aplicația myview. Când faceți clic pe butonul Deschide imaginea, apare caseta de dialog Selectați fișierul de deschis. Cu toate acestea, fișierele grafice nu sunt vizibile în câmpul care afișează conținutul folderului curent. Acest lucru se datorează faptului că, implicit, filtrul de fișiere (lista derulantă Fișiere de tip) conține șirul „Toate fișierele MATLAB” și sunt vizibile numai fișierele cu extensii acceptate de MATLAB. Desigur, de fiecare dată când deschideți un fișier grafic, selectați linia „Toate fișierele (*. *)” din lista verticală Tip de fișiere pentru a afișa toate fișierele din folderul curent. Dar este mult mai bine să creați imediat o casetă de dialog deschisă, adaptată la anumite extensii. De exemplu, pentru a afișa fișiere cu extensii bmp și jpg, consultați funcția uigetfile cu un argument de intrare - un șir în care șabloanele cu extensia necesară * .bmp și * .jpg sunt scrise separate prin punct și virgulă:

Uigetfile ("*. Bmp; *. Jpg");

Schimbați apelul la uigetfile din subfuncția btnOpen_Callback la cea de mai sus și asigurați-vă că lista derulantă Tip de fișiere din dialogul de deschidere a fișierului conține doar două linii: „* .bmp; *. Jpg” (implicit) și „Toate fișierele”. (*. *)".

Funcția uigetfile permite un control mai flexibil asupra setărilor filtrului fișierelor. Le vom analiza în secțiunea dedicată descrierii funcțiilor pentru crearea casetelor de dialog standard. Să discutăm acum cum să implementăm capacitatea de a selecta mai multe fișiere simultan în caseta de dialog standard de deschidere a fișierelor.

Selectați mai multe fișiere în dialogul de deschidere a fișierului. Schimb de date între sub-funcții ale unei aplicații GUI.

În această secțiune, vom analiza două întrebări:

1) cum să organizați selecția mai multor fișiere în fereastra standard de deschidere a fișierelor și să citiți conținutul acestora într-o matrice adecvată;

Răspunsul la prima întrebare este simplu. Este necesar să apelați funcția uigetfile cu o pereche suplimentară de argumente de intrare „MultiSelect” și „on”:

Uigetfile (..., „MultiSelect”, „on”)

În funcție de alegerea utilizatorului, argumentele de ieșire vor fi de următoarele tipuri.

  • Dacă utilizatorul a selectat mai multe fișiere în caseta de dialog deschis fișier (prin selectarea mouse-ului sau făcând clic și apăsat sau ), apoi FileName va deveni o matrice de celule, fiecare celulă conținând o linie cu numele fișierului (și extensia), iar PathName va fi o linie care conține calea către aceste fișiere (calea către toate fișierele este aceeași, prin urmare PathName nu ar trebui să fie o matrice de celule).
  • Dacă utilizatorul a selectat un fișier în caseta de dialog pentru deschiderea fișierului, atunci FileName va fi o linie cu numele fișierului (cu o extensie), iar PathName va fi o linie cu calea către fișier (vezi secțiunea anterioară).
  • Dacă nu a fost făcută nicio selecție, atunci FileName este zero.

A doua întrebare (comunicarea între sub-funcțiile de gestionare a evenimentelor) apare adesea la programarea aplicațiilor GUI. Se rezolva in felul urmator. Datele care trebuie salvate la executarea unei subfuncții sunt scrise în câmpurile structurii de mânere. Apoi, în aceeași subfuncție, structura mânerelor este salvată folosind funcția de ghidare:

ghidaj (gcbo, mânere)

Pentru a obține date într-o altă subfuncție, consultați câmpul corespunzător al structurii mânerelor. De exemplu, aplicația are două sub-funcții btnA_Callback și btnB_Callback. La executarea subfuncției btnA_Callback, a fost creată o matrice numerică, care va fi necesară în subfuncția btnB_Callback. Atunci aceste sub-funcții ar trebui să fie după cum urmează.

Funcția btnA_Callback (hObject, eventdata, handle). ... ... manere.date =; guidata (gcbo, manere). ... ... funcția btnB_Callback (hObject, eventdata, handle). ... ... bară (mânere.date). ... ...

Să aruncăm o privire la aplicația myview creată în secțiunea anterioară și să-i extindem capacitățile. Aplicația modernizată ar trebui să permită deschiderea mai multor fișiere grafice simultan și vizualizarea acestora unul câte unul. După selectarea mai multor fișiere grafice în fereastra aplicației, se afișează doar unul, iar apăsarea butonului (să-l numim Următorul) duce la apariția imaginii următoare.

În mediul GUIDE, adăugați un buton cu eticheta btnNext și subtitrarea Next la șablonul de fereastra aplicației myview (vezi Fig. 2 din secțiunea anterioară) (vezi Fig. 1). În inspectorul de proprietăți, faceți-l indisponibil setând proprietatea Activare la dezactivat. Acesta va fi disponibil în timp ce aplicația rulează dacă utilizatorul a selectat mai multe fișiere grafice pentru vizualizare.

Orez. 1. Fereastra aplicației Myview cu butonul Următorul

Acum trebuie să modificați subfuncția btnOpen_Callback de gestionare a evenimentului de apel invers al butonului Open Image și să programați evenimentul de apel invers al butonului Următorul. Atunci când procesați selecția fișierelor (sau a unui fișier) de către utilizator în caseta de dialog deschidere fișier, ar trebui să țineți cont de toate posibilitățile: sunt selectate mai multe fișiere, este selectat un singur fișier, nu este selectat niciun fișier.

Dacă sunt selectate mai multe fișiere grafice (adică matricea FileName este o matrice de celule), atunci citim imaginile într-o matrice de celule și le salvăm în câmpul Pict al structurii de mânere. Numărul de fișiere grafice deschise (adică lungimea matricei FileName) va fi salvat în câmpul ImageNum al structurii de mânere. În plus, avem nevoie de numărul imaginii curente, pentru a ne aminti care vom crea câmpul CurImage al structurii de mânere.

După deschiderea fișierelor, vom afișa conținutul primului dintre ele în fereastra aplicației. Dacă au fost deschise mai multe fișiere, atunci vom face disponibil butonul Următorul, iar dacă doar unul, atunci vom face ca Următorul să fie indisponibil.

Când procesați evenimentul Callback al butonului Următorul, ștergeți axele și afișați următoarea imagine pe ele. Dacă imaginea curentă este ultima, atunci prima va fi afișată.

Mai jos este textul subfuncțiilor btnOpen_Callback și btnNext_Callback. Subfuncția btnClose_Callback rămâne neschimbată.

Funcția btnOpen_Callback (hObject, eventdata, handle)% Gestionează evenimentul Callback al butonului Open Image% Obține numele fișierelor și căile către acestea (sau un nume de fișier și calea către acesta) = uigetfile ("*. Bmp; *. Jpg", „MultiSelect” , „on”); % Aflați câte fișiere au fost selectate dacă iscell (FileName)% FileName este o matrice de celule, deci au fost selectate mai multe fișiere% scrieți în câmpul ImageNum al structurii de mânere numărul de mânere de fișiere selectate.ImageNum = lungime (FileName ); % Pentru fiecare fișier din buclă, formați numele complet% și citiți conținutul acestuia în celula k-a a matricei de celule,% care este stocată în câmpul Pict al structurii handles handles.Pict =; % mai întâi facem matricea goală pentru k = 1: handles.ImageNum FullName =; mânere.Pict (k) = imread (Nume complet); end% Prima imagine este cea curentă mâner.CurImage = 1; % O afișam pe imaginea axelor („CData”, mânere.Pict (mânere.CurImage))% Salvați structura mânerelor pentru a o accesa în subfuncția de ghidare btnNext_Callback (gcbo, mânere)% Faceți butonul Următorul disponibil set (mânere. btnNext, "Activare "," on ") else% Doar un fișier a fost selectat sau niciunul dacă FileName ~ = 0% A fost selectat un fișier, formăm calea completă către acesta FullName =; % Citim imaginea în variabila Pict (nu este necesară structura mânerelor) Pict = imread (FullName); % Afișează imaginea pe axa imaginii („CData”, Pict) % Faceți ca butonul Următorul să fie indisponibil setat (handles.btnNext, „Enable”, „off”) terminați funcția de încheiere btnNext_Callback (hObject, eventdata, handles)% Gestionați apelul invers eveniment al butonului Deschide imaginea % Verificarea care imagine este cea curentă dacă manere.CurImage

Notă

Aplicația myview poate fi îmbunătățită în continuare, de exemplu, după selectarea fișierelor și înainte de afișarea primului, este o idee bună să ștergeți axele. De asemenea, trebuie avut în vedere că utilizatorul a selectat fișiere non-grafice.

Referință pentru funcții pentru crearea casetelor de dialog.

Creați o casetă de dialog de eroare - errordlg

Funcția errordlg este utilizată pentru a crea o casetă de dialog de eroare standard. Cea mai comună opțiune de apel

h = errordlg ("Textul mesajului", "Titlul ferestrei").

H stochează un pointer către fereastra grafică generată cu un mesaj de eroare. De exemplu

h = errordlg ("Diviziunea la zero", "Calculator");

Conduce la o fereastră ca aceasta cu un indicator h:

Fereastra rămâne pe ecran până când se închide cu butonul OK, tasta, butonul cu cruce pe titlu sau folosind meniul contextual al titlului.

Fereastra de mesaj de eroare nu este modală (vă permite să navigați la alte ferestre ale aplicației MATLAB). Pentru a o face modal, după crearea unei ferestre folosind funcția errordlg, setați proprietatea WindowStyle a ferestrei grafice la „modal”: set (h, „WindowStyle”, „modal”)

O altă modalitate de a crea o casetă de mesaj de eroare modală este să utilizați funcția msgbox, care este descrisă mai jos.

Mărimea ferestrei este selectată automat în funcție de lungimea liniilor de text, liniile foarte lungi sunt împachetate. Pentru a primi un mesaj cu mai multe linii împărțit în linii într-un mod specificat, trebuie să specificați o matrice de celule de șiruri de caractere:

h = errordlg ("Format de date greșit"; "sau"; "date nepotrivite"), "dlgname")

Crearea consecutivă de ferestre cu mesaje de eroare cu același titlu:

h = errordlg ("Diviziunea la zero", "Calculator"); ... h = errordlg („Funcționare incorectă”, „Calculator”);

rezultă ferestre diferite cu mesaje de eroare. Pentru a activa o fereastră (poziție deasupra altor ferestre) și pentru a afișa un mesaj nou în ea, în loc de a crea o fereastră nouă, este furnizat apelul errordlg cu al treilea argument „pornit”:

h = errordlg ("Diviziunea la zero", "Calculator"); ... h = errordlg („Funcționare incorectă”, „Calculator”, „pornit”); % de activare a ferestrei vechi

Desigur, dacă vechea fereastră a fost închisă, atunci h = errordlg (..., „on”) creează doar una nouă.

După ce este afișată o casetă de dialog cu un mesaj de eroare, aplicația continuă să ruleze. Adesea apare întrebarea: cum se întrerupe execuția până când caseta de dialog este închisă. Acest lucru se face folosind funcția waitfor, care întrerupe execuția aplicației până când un anumit obiect grafic este eliminat. Un pointer către acest obiect (în cazul nostru, o fereastră de mesaj de eroare) este specificat ca argument de intrare pentru funcția waitfor:

h = errordlg ("Diviziunea la zero", "Calculator"); set (h, „WindowStyle”, „modal”) așteptați (h) a = 1; ....

Creați un dialog de avertizare - warndlg

Funcția warndlg funcționează în același mod ca errordlg (vezi mai sus), dar nu există nicio opțiune de a o apela cu un al treilea argument de intrare „on”. De exemplu,

rezultă o astfel de fereastră cu indicatorul h

Fereastra de avertizare diferă de fereastra cu mesaje de eroare doar prin pictograma:

Apelarea warndlg din nou cu aceleași argumente de intrare creează o nouă fereastră, chiar dacă cea veche nu a fost încă închisă.

Creați caseta de dialog de ajutor - helpdlg

Funcția helpdlg funcționează în același mod ca warndlg (vezi mai sus). De exemplu,

h = warndlg ("Fișierul este învechit", "Preprocesor")

rezultă o fereastră ca aceasta cu indicatorul h:

care diferă de fereastra de avertizare doar prin pictogramă:

Apelarea helpdlg din nou cu același titlu de fereastră va activa vechea fereastră dacă nu a fost închisă. Dacă a fost închis, atunci este creat unul nou.

Mai multe rânduri de text de mesaj, modalitatea ferestrei și suspendarea execuției aplicației până la închiderea ferestrei sunt toate făcute în același mod ca atunci când apelați errordlg.

Creare casetă de mesaje - funcție generică msgbox

Funcția msgbox vă permite să creați ferestrele de eroare, avertismente și ajutor discutate mai sus. Pentru a obține text cu mai multe linii, trebuie să specificați o matrice de șiruri de celule ca prim argument. În plus, este posibil să creați o fereastră cu o pictogramă arbitrară. Controlul modalității ferestrei și crearea uneia noi cu același titlu se face folosind argumentele de intrare msgbox. Funcția msgbox returnează un pointer către fereastra pe care o creează.

h = msgbox ("Eroare foarte gravă!", "Program", "eroare")- creează o fereastră cu un mesaj de eroare și o pictogramă standard (similar cu errordlg).

c = („Eroare foarte gravă!”; „Nu” „nu spune nimănui”); h = msgbox (c, „Program”, „eroare”)- asemănător celui precedent, dar mesajul este format din două rânduri.

h = msgbox ("Ultimul avertisment!", "Program", "warn")- creează o fereastră cu o avertizare și o pictogramă standard (asemănătoare cu warndlg).

h = msgbox ("Ajută-te...", "Program", "ajutor")- creează o fereastră cu informații de ajutor și o pictogramă standard (asemănătoare cu helpdlg).

h = msgbox ("Aici nu este nicio imagine", "Program", "niciuna")- creează o fereastră cu informații text fără pictogramă.

h = msgbox („Textul mesajului”, „Titlul ferestrei”, „personalizat”, imagine, hartă de culori)- creează o fereastră cu o pictogramă utilizator, de exemplu:

= imread ("telefon.gif"); % citește imaginea și harta de culori din fișierul h = msgbox ("Te sună cineva", "Telefon", "personalizat", imagine, hartă)

rezultă o fereastră ca aceasta

Ultimul argument de intrare („modal”, „non-modal” sau „înlocuire”) controlează aspectul ferestrei și modul în care este afișată o fereastră nouă cu același titlu. Dacă metoda de afișare a unei noi ferestre nu este specificată, atunci se creează întotdeauna o nouă fereastră.

Exemple:

h = msgbox ("Eroare foarte gravă!", "Program", "modal")- afișează o fereastră modal standard cu un mesaj de eroare

h = msgbox ("Te sună cineva", "Telefon", "personalizat", imagine, hartă, "modal")- afișează o fereastră modală cu o imagine dată pentru pictogramă și o hartă de culori.

h = msgbox ("Eroare foarte gravă!", "Program", "eroare", "înlocuire")- înlocuiește fereastra anterioară cu titlul Program, dacă nu există, apoi creează una nouă. La executarea comenzilor

h = msgbox („Eroare foarte gravă!”, „Program”, „eroare”) h = msgbox („Ceva este ciudat”, „Program”, „avertizează”, „înlocuiește”)

a doua fereastră o va înlocui pe prima.

Dialog de confirmare - funcția questdlg

Funcția questdlg creează un dialog de confirmare modal cu mai multe butoane. Când creați o fereastră, oricare dintre butoane poate avea focalizare. În argumentul de ieșire, funcția questdlg returnează alegerea utilizatorului (un șir cu numele butonului care a fost apăsat) sau un șir gol dacă fereastra a fost închisă fără a apăsa niciun buton. Pentru a obține text cu mai multe linii, utilizați o matrice de șiruri de celule. Dacă este specificată o linie lungă, atunci aceasta este înfășurată automat.

Exemple:

button = questdlg ("Ești sigur?")- crearea unei ferestre standard de confirmare cu butoanele Da, Nu, Anulare. butonul Da focalizat (implicit).

button = questdlg ("Sunteți sigur?", "Program")- crearea unei ferestre standard de confirmare cu un titlu și butoane Da, Nu, Anulare.

butonul = questdlg ("Sunteți sigur?", "Program", "Nu")- crearea unei ferestre standard de confirmare cu un titlu și butoane Da, Nu, Anulare. Accentul este pus pe butonul Nr.

butonul = questdlg („Sunteți sigur?”, „Program”, „Da”, „Poate”, „Poate”)- crearea unei ferestre de confirmare standard cu un titlu și două butoane Da și Poate. Accentul este pus pe butonul Poate.

butonul = questdlg („Sunteți sigur?”, „Program”, „Da”, „Nu”, „Nu”, „nu știu”, „Nu”)- crearea unei ferestre standard de confirmare cu un titlu și trei butoane Da, Nu și nu știu. Accentul este pus pe butonul Nu.

Casetă de dialog pentru introducerea informațiilor (funcția inputdlg)

Funcția inputdlg creează o casetă de dialog cu un număr specificat de linii de intrare. Numărul de linii de intrare și titlurile acestora sunt determinate folosind argumente de intrare. Fereastra conține butoanele OK și Anulare. Dacă utilizatorul face clic pe OK, atunci argumentul de ieșire al funcției inputdlg este o matrice de celule cu informații introduse de utilizator în liniile de intrare. Dacă fereastra a fost închisă făcând clic pe butonul Anulare sau în orice alt mod (cu excepția butonului OK), atunci argumentul de ieșire este o matrice goală de celule.

Exemple:

M = inputdlg ("TIMP" "VALORI"))- creează o casetă de dialog

Dacă, de exemplu, în linia TIME utilizatorul a introdus 0.1 0.3 0.55 4.5, iar în linia VALUES - 2.3 9.55 2.1 0.7 și a făcut clic pe OK, atunci matricea de celule M va avea următoarele valori.

M = "0,1 0,3 0,55 4,5" "-2,3 9,55 2,1 0,7"

Puteți folosi str2num pentru a le converti în vectori numerici:

timp = str2num (M (1)) val = str2num (M (2))

M = inputdlg ((„TIME” „VALUES”), „Input Data”) - creează o casetă de dialog intitulată Input Data.

Pentru a putea introduce text pe mai multe rânduri, trebuie să specificați al treilea argument de intrare - numărul de linii din fiecare zonă de intrare:

M = inputdlg ("Matricea A", "Matricea B"), "Date de intrare", 3)- dacă al treilea argument este un număr mai mare decât unu, atunci toate zonele de intrare au aceeași înălțime și au bare de defilare.

Dacă introducerea este finalizată făcând clic pe butonul OK, atunci fiecare celulă a matricei M conține o matrice de caractere. Matricea de caractere conține atâtea rânduri câte au fost introduse în zona de introducere corespunzătoare.

M = inputdlg ("vector A" "Matrice B"), "Date de intrare",)- pentru a seta separat înălțimea zonelor de intrare, ar trebui să specificați numărul de linii din fiecare zonă de intrare în vectorul coloană ca al treilea argument de intrare:

M = inputdlg ("vector A" "Matrice B"), "Date de intrare",)- pentru a seta lungimea zonelor de intrare în caractere (în acest caz, 100 de caractere), al treilea argument de intrare trebuie să fie o matrice:

M = inputdlg ("Nume", "An"), "Informații", (char ("John", "Smith") "1990"))- pentru a obține o fereastră cu câmpuri completate (pentru a solicita utilizatorului formatul de intrare), specificați al patrulea argument de intrare. Trebuie să fie o matrice de celule de aceeași dimensiune ca primul argument de intrare:

M = inputdlg ("Nume" "An"), "Informații", (char ("John", "Smith") "1990"), "on")- ultimul al cincilea argument de intrare „pornit” înseamnă că utilizatorul poate redimensiona caseta de dialog.

Caseta de dialog pentru alegerea dintr-o listă - funcția listdlg

Funcția listdlg creează o casetă de dialog cu o casetă listă din șirurile și butoanele specificate pentru selecție și deselectare. Liniile de listă sunt specificate de o matrice de celule. Este acceptată selecția multiplă a elementelor din listă. În argumentele de ieșire sunt returnate următoarele: Selecție - un număr sau vector cu numerele liniilor selectate și ok - informații despre dacă selecția a fost finalizată prin apăsarea butonului OK (ok = 1), sau fereastra a fost închisă într-o altă mod (ok = 0). Dacă ok = 0, atunci Selection este o matrice goală. În mod implicit, pot fi selectate mai multe elemente din listă (făcând clic cu mouse-ul în timp ce țineți apăsat Ctrl) și există un buton Selectați tot pentru a selecta toate elementele.

= listdlg ("ListString", ("Liniar"; "Cuadratic"; "Cubic"))- creează un dialog de selecție cu o listă de trei linii: Linear, Quadratic, Cubic. Dacă utilizatorul a selectat, de exemplu, Quadratic și a apăsat butonul OK, atunci Selecție = 2 și ok = 1. Dacă utilizatorul a selectat Linear și Cubic și a apăsat butonul OK, atunci Selecție = și ok = 1 etc.

Funcția listdlg poate fi accesată în forma generală:

= listdlg ("ListString", matrice de șiruri de celule, param1, val1, param2, val2, ...)

Parametrii și valorile lor posibile sunt după cum urmează:

  • „SelectionMode” - mod de selectare a rândurilor din listă, valori: „single” (pentru a selecta un singur rând) sau „multiple” (în mod implicit, pentru a selecta mai multe rânduri);
  • „ListSize” - dimensiunea zonei listei în pixeli, valoarea este setată de vectorul [width-height] (în mod implicit);
  • „InitialValue” - selecția inițială a liniilor, valoarea este un vector cu numere de linii care vor fi selectate atunci când este afișată caseta cu listă (implicit 1);
  • „Nume” - titlul ferestrei, valoarea este setată printr-un șir (în mod implicit, un șir gol);
  • „PromptString” - text deasupra listei, valori: șir sau matrice de șiruri de caractere sau celule din șiruri de caractere (pentru text cu mai multe linii). Valoarea implicită este o matrice de celule goale.
  • „OKString” - o inscripție pe butonul pentru selectarea și închiderea ferestrei, valoarea este un șir (în mod implicit „OK”);
  • „CancelString” - o inscripție pe butonul pentru a închide fereastra fără selecție, valoarea este un șir (în mod implicit „Anulare”);
  • "uh" - înălțimea butoanelor ferestrei, valoarea este setată în pixeli (18 în mod implicit);
  • "fus" - distanța dintre butoane și listă, valoarea este setată în pixeli (18 implicit);
  • „ffs” este distanța de la marginea ferestrei la listă, valoarea este setată în pixeli (8 în mod implicit).
De exemplu, comanda

= listdlg ("ListString", ("Liniar"; "Cuadratic"; "Cubic"), ... "Nume", "Aproximație", "ListSize", "PromptString", "Select method", "fus", 5)

are ca rezultat crearea următoarei casete de dialog combinate:

Caseta de dialog pentru setarea parametrilor foii și modul în care este tipărit conținutul ferestrei grafice - funcția pagesetupdlg

pagesetupdlg - apelarea casetei de dialog Configurare pagină pentru fereastra grafică curentă (dacă nu există o fereastră, se creează una nouă).

pagesetupdlg (hF) - Apelează caseta de dialog Configurare pagină pentru fereastra grafică cu indicatorul hF.

Setările făcute în dialogul Configurare pagină afectează proprietățile corespunzătoare ale ferestrei grafice: PaperSize, PaperType, PaperPozition etc.

Funcția pagesetupdlg vă permite să configurați parametrii unei singure ferestre grafice, de ex. hF nu poate fi un vector de pointeri. Pentru a configura simultan parametrii principali ai mai multor ferestre grafice, utilizați funcția pagedlg, al cărei argument de intrare poate fi un vector de pointeri către ferestre grafice.

Fereastra Configurare pagină este modală; execuția aplicației este întreruptă până când fereastra este închisă.

Caseta de dialog pentru selectarea opțiunilor de imprimare și configurarea imprimantei - funcția printdlg

printdlg - apelați caseta de dialog standard Windows pentru tipărirea ferestrei grafice curente (dacă nu există o fereastră, se creează una nouă).

printdlg (hF) - apelează caseta de dialog standard Windows pentru tipărirea unei ferestre grafice cu un pointer hF.

printdlg ("- crossplatform", hF) - Apelează caseta de dialog MATLAB Print pentru a imprima o fereastră grafică cu un pointer hF.

Dialogul de imprimare este modal, aplicația este întreruptă până când fereastra este închisă.

Dialog de deschidere a fișierului - funcție uigetfile

= uigetfile- afișează o casetă de dialog pentru deschiderea unui fișier cu conținutul directorului curent. Filtrul de fișiere este setat la TOATE fișierele MATLAB, ceea ce face ca numai fișierele cu extensii acceptate de MATLAB să fie afișate. În lista verticală Files of type, puteți selecta numai fișierele M sau numai ferestrele grafice etc. sau toate fișierele.

Dacă utilizatorul a selectat un fișier (făcând clic pe pictograma fișierului și apăsând butonul Deschidere, sau făcând dublu clic pe pictograma fișierului sau introducând numele fișierului în linia Nume fișier și apăsând butonul Deschidere), atunci FName conține un linie cu numele și extensia fișierului, iar PName este calea către fișier. Dacă utilizatorul nu a selectat fișierul și a închis fereastra, atunci FName = 0 și PName = 0. După apelarea funcției uigetfile, verificați dacă fișierul a fost selectat. Dacă da, concatenează aceste linii pentru a obține numele complet al fișierului:

= uigetfile; if ~ isequal (FName, 0) FullName = strcat (PName, FName); % mai citite date de la sfârșitul fișierului

Filtru de fișiere specificat în primul argument de intrare al funcției uigetfile, de exemplu

= uigetfile ("*. txt");

creează o casetă de dialog pentru deschiderea fișierului a cărei listă de fișiere de tip conține două șiruri de caractere: „* .txt” și „Toate fișierele (*. *)”. Puteți specifica mai multe extensii, dar apoi trebuie să utilizați o matrice de celule din șiruri de caractere:

= uigetfile (("*. txt"; "* .dat"));

Pentru a plasa descrieri ale tipurilor de fișiere în lista Files of Type, trebuie să specificați o matrice de celule de două coloane. Fiecare linie conține extensia și descrierea fișierului (în timp ce linia „Toate fișierele (*. *)” nu este adăugată la lista Tip de fișiere a casetei de dialog deschise fișierului):

Filtru = ("*. Txt", "Fișiere text (* .txt)"; "* .dat", "Fișiere de date (* .dat)"; "* .res", "Rezultate (* .res)") ; = uigetfile (Filtru);

Ca filtru, poate exista și un șir cu un nume de fișier, apoi este în linia Nume fișier când apare caseta de dialog deschis fișier, iar extensia sa este luată ca extensie implicită și apare în lista Tip de fișiere împreună cu „Toate fișierele (*. *)”.

Dacă trebuie să aflați ce tip de fișiere a selectat utilizatorul în lista Tip de fișiere, atunci ar trebui să vă referiți la uigetfile cu trei argumente de ieșire:

= uigetfile (Filtru);

FilterIndex înregistrează numărul tipului de fișier.

Pentru atribuire propriul titlu de fereastră deschiderea unui fișier (în loc de Select File to Open), funcția uigetfile este apelată cu al doilea argument de intrare:

= uigetfile (Filtru, „Deschide fișierul”);

Și pentru a pune numele fișierului specificat în linia Nume fișier atunci când creați o fereastră deschisă de fișier, trebuie să îl specificați în al treilea argument de intrare (numele fișierului poate fi complet):

= uigetfile (Filtru, „Deschide fișier”, „input.txt”)

Acesta este modul în care puteți afișa conținutul oricărui folder, de exemplu, directorul rădăcină al unității D:

= uigetfile (Filtru, „Deschide fișier”, „d: \”)

Notă
Dacă dorim să deschidem fișierele MATLAB așa cum sugerează fișierul uiget implicit, dar setăm propriul titlu de fereastră (și folderul sau fișierul implicit din caseta de dialog pentru deschiderea fișierului), atunci primul argument de intrare, filtrul, nu poate fi omis. Ar trebui să fie o linie goală:

= uigetfile ("", "Deschideți fișierul", "d: \");

Pentru ca utilizatorul să selectați mai multe fișiere, ar trebui să apelați uigetfile într-unul dintre următoarele moduri:

= uigetfile ("MultiSelect", "on"); sau = uigetfile ("*. dat", "MultiSelect", "on"); sau = uigetfile ("*. dat", "Open File", "d: \", "MultiSelect", "on")

Dacă utilizatorul a selectat mai multe fișiere în caseta de dialog, atunci argumentul de ieșire FName este o matrice de celule cu numele fișierelor selectate (PName, desigur, rămâne un șir, deoarece fișierele au fost selectate în același folder). Pentru a obține o matrice de celule cu nume de fișiere complete, următorul cod este potrivit (funcția strcat poate concatena un șir cu o matrice de celule din șiruri de caractere):

= uigetfile ("MultiSelect", "on"); if ~ isequal (FName, 0) FullName = strcat (PName, FName); Sfârșit

MATLAB funcționează pentru a deschide fișiere de diferite formate

Întrucât vorbim despre deschiderea fișierelor, este oportun să menționăm principalele funcții MATLAB concepute pentru a funcționa cu fișiere de diferite formate.

sarcină- citirea datelor dintr-un fișier binar sau text.

deschis- deschiderea unui dosar. Metoda de deschidere depinde de extensie:

  • extensie m- fisierul este deschis in editorul M-file;
  • extensie mdl- modelul este deschis în Simulink;
  • extensie mat- scrierea datelor binare din fisier in campurile de structura, denumirile campurilor de structura coincid cu numele variabilelor inregistrate in fisier;
  • extensie Fig- se deschide o fereastră grafică;
  • extensie p- dacă există un m-file cu același nume, atunci acesta este deschis în editorul M-file;
  • extindere htm, html- fișierul se deschide în fereastra browserului sistemului de ajutor MATLAB;
  • extensie pdf- fisierul se deschide in Adobe Acrobat (necesita instalarea deschiderii prin asociere in Windows);
Pentru a deschide un fișier cu o extensie non-standard, puteți scrie propria funcție care va fi apelată implicit. Numele său este format din cuvântul open și extensia, de exemplu, pentru a deschide fișiere cu extensia dtm, scrieți funcția opendtm. Exemplu. Să presupunem că trebuie să deschideți binare cu extensia dtm, care conțin valorile a două variabile, ale căror nume pot fi diferite. Valorile acestor variabile trebuie scrise în variabilele de timp și date ale mediului de lucru. Apoi scriem funcția de fișier opendtm:

funcția opendtm (fname)% citește datele în structura S = încărcare ("- mat", fname); % învață numele câmpurilor de structură (nume de variabile) F = nume câmpuri (S); % Atribuiți valori variabilelor de timp și date ale bancului de lucru assignin ("bază", "timp", S. (F (1))) assignin ("bază", "date", S. (F (2)) ))

Iată cum puteți utiliza funcția opendtm:

A = 1:10; B = sqrt (A); salvați ("my.dtm", "A", "B")% scrieți A și B într-un fișier binar deschis ("my.dtm")% apeluri deschise opendtm și ora și datele sunt create în mediul de producție

Notă. Funcția uiopen combină capacitățile uigetfile și open — creează un dialog de fișier deschis și apoi apelează open pentru a-l deschide.

winopen - deschideți un fișier în Windows cu aplicația asociată acestei extensii, de exemplu: winopen ("art.doc") - deschideți art.doc în MS Word; winopen ("my.txt") - deschiderea my.txt în notepad; winopen ("all.htm") - deschide all.htm în browserul web.

caiet- deschiderea sau crearea unei M-book în MS Word.

publica- executarea fisierului M, impartit in celule, si salvarea rezultatului in formatul specificat: html, doc, ppt, xml, rpt, latex.

dos și sistem- executarea comenzilor (vezi și!), lansarea fișierelor executabile, de exemplu:

sistem („calc”)- lansarea calculatorului.

uiimport- deschide fereastra Import Wizard pentru importarea datelor din diferite formate.

importdate- import de date în funcție de extensia fișierului, util și pentru citirea datelor dintr-un fișier text delimitat.

csvread- citirea datelor numerice dintr-un fișier text delimitat prin virgulă.

dlmread- citirea datelor numerice dintr-un fișier text cu un delimitator specificat.

textread, textscan- citirea datelor dintr-un fișier text cu un anumit format.

xlsread- citirea datelor din fișierele MS Excel.

wavread- citirea unui fișier audio wav.

aviread- citirea unui fișier avi.

citit- citirea fisierelor grafice.

Pe lângă funcțiile enumerate, există și funcții de nivel scăzut pentru lucrul cu fișiere. Numele lor încep cu litera f:

fclose- inchiderea dosarului.

feof- verificați dacă se ajunge la sfârșitul fișierului.

ferror- obținerea de informații despre ultima eroare în timpul input-output.

fgetl- citirea unei linii dintr-un fișier text fără caracter de sfârșit de linie.

fgets- citirea unei linii dintr-un fișier text cu un caracter de final de linie.

fopen- deschiderea unui dosar.

fprintf- înregistrarea formatată într-un fișier.

friad- citirea dintr-un fișier binar.

frewind- mergeți la începutul fișierului.

fscanf- citire formatată dintr-un fișier.

fseek- trecerea la o poziție dată în fișier.

ftell- obținerea poziției curente în fișier.

fscrie- scrierea într-un fișier binar.

Toate funcțiile pentru citirea datelor sunt listate în subiectul de ajutor: MATLAB: Funcții - Listă categorială: File I / O.

Caseta de dialog Salvare fișier - Funcția uiputfile

Utilizarea uiputfile este similară cu uigetfile discutat mai sus. De asemenea, puteți seta filtrul de extensie, titlul ferestrei, fișierul sau calea implicită. Diferența este că nu există opțiune „MultiSelect” în uiputfile (nu este necesară la salvare). În plus, dacă utilizatorul selectează un nume de fișier existent în dialogul de salvare a fișierului, va apărea o fereastră de confirmare. Selectarea Da închide dialogul de salvare a fișierului și Nu revine la fereastra de salvare a fișierului. Verificarea activității utilizatorului și obținerea numelui complet al fișierului este exact aceeași ca pentru uigetfile.

Funcții MATLAB pentru a salva date în fișiere

Să enumerăm principalele funcții MATLAB concepute pentru a salva date de diferite tipuri.

Salvați- salvarea datelor în fișiere text și binare

Notă.
Funcția uisave combină capabilitățile uigetfile și save - creează o casetă de dialog de salvare a fișierului care va salva toate variabilele de mediu.

csvwrite- scrierea datelor numerice într-un fișier text separat prin virgule.

dlmwrite- scrierea datelor numerice într-un fișier text printr-un separator specificat.

xlswrite- înregistrarea datelor în format MS Excel.

wavwrite- înregistrarea unui fișier wav.

avifile- creează un fișier avi și îi returnează un identificator, care este folosit în alte funcții: addframe, close.

movie2avi- crearea unui fișier avi dintr-o matrice, fiecare coloană a cărei coloană stochează informații despre un cadru (vezi funcții: movie, getframe, im2frame).

imwrite- scrierea unui fisier grafic.

Pe lângă funcțiile enumerate, există și funcții de nivel scăzut pentru a lucra cu fișiere ale căror nume încep cu litera f (consultați secțiunea „Funcții MATLAB pentru deschiderea diferitelor formate de fișiere” de mai sus).

Dialog de selectare a directorului - funcția uigetdir

Funcția uigetdir deschide caseta de dialog Căutare folder și returnează calea către directorul selectat sau zero dacă utilizatorul nu a făcut o alegere. Verificarea dacă a fost selectat un director se face în același mod ca în funcția uigetfile pentru dialogul de deschidere a fișierului. Modalități de a apela uigetdir:

dname = uigetdir- deschide caseta de dialog de selectare a directorului, în care directorul curent MATLAB este evidențiat.

dname = uigetdir ("startpath")- deschide o casetă de dialog pentru selectarea unui director, în care este selectat directorul specificat, de exemplu: dname = uigetdir ("c: \").

dname = uigetdir ("calea de pornire", "text")- deschide o casetă de dialog pentru alegerea unui director, în care este selectat directorul specificat și plasează textul specificat deasupra ferestrei cu o structură de directoare ierarhică. Dacă doriți să deschideți caseta de dialog de selecție a directorului, în care este evidențiat directorul curent MATLAB, trebuie să specificați un șir gol în locul primului argument de intrare: dname = uigetdir ("", "text").

Funcții director MATLAB

Acțiunile ulterioare după ce utilizatorul selectează numele directorului presupun utilizarea funcțiilor MATLAB concepute pentru a lucra cu directoare.

CD- schimbați directorul curent MATLAB

dir- afișarea conținutului directorului în fereastra de comandă sau scrierea informațiilor despre conținut într-o serie de structuri.

cale, rmpath- Gestionarea căilor de căutare MATLAB.

Note.
Funcția pathtool afișează o casetă de dialog specială Set Path pentru gestionarea căilor de căutare MATLAB.
Funcția Filebrowser afișează o casetă de dialog specială Director curent cu conținutul directorului curent, capacitatea de a selecta un nou director curent și deschiderea fișierelor în MATLAB.

Toate funcțiile pentru lucrul cu directoare în MATLAB sunt listate în sistemul de ajutor sub MATLAB: Funcții - Listă categorială: Instrumente desktop și mediu de dezvoltare: spațiu de lucru, cale de căutare și operațiuni cu fișiere.

Caseta de dialog pentru selectarea fontului - Funcția uisetfont

Funcția uisetfont poate fi utilizată în două scopuri:
1) crearea unei casete de dialog pentru alegerea unui font și înregistrarea informațiilor despre fontul selectat (nume, dimensiune, stil) în structură;
2) crearea unei casete de dialog pentru alegerea unui font și modificarea obiectelor text, a etichetelor de axe sau a controalelor în conformitate cu setările făcute în această fereastră.

S = uisetfont- duce la apariția unei casete de dialog pentru alegerea unui font și, dacă s-a făcut o alegere în acesta, atunci este returnată structura S, ale cărei câmpuri au următoarea semnificație:

S.FontName - șir cu numele fontului; S.FontUnits - unități de măsură („puncte”); S.FontSize - dimensiune; S.FontWeight - îndrăzneală („normal” sau „bold”); S.FontAngle - font („normal” sau „italic”).

Dacă utilizatorul nu a selectat un font și a închis fereastra, atunci S este zero.

S = uisetfont (S0)- duce la apariția casetei de dialog de selecție a fontului, în care fontul implicit este selectat în conformitate cu valorile câmpurilor structurii S0, de exemplu:

S0.FontName = "Arial"; S0.FontUnits = „puncte”; S0.FontSize = 20; S0.FontWeight = „bold”; S0.FontAngle = "normal"; S = uisetfont (S0)

S = uisetfont („Titlul ferestrei”) sau S = uisetfont (S0, „Titlul ferestrei”)- la fel ca și opțiunile anterioare, doar fereastra de selecție a fontului are un titlu dat.

uisetfont (h)- apelați caseta de dialog pentru alegerea unui font pentru un obiect text, axe sau control cu ​​un indicator h.

uisetfont (h, „Titlul ferestrei”)- la fel ca uisetfont (h), doar fereastra de selectare a fontului are un titlu dat.

S = uisetfont (h), S = uisetfont (h, „Titlul ferestrei”)- la fel ca și cele două opțiuni anterioare, numai informații despre alegerea utilizatorului sunt returnate suplimentar în structura S.

Un exemplu de schimbare a fontului obiectelor grafice

hA = axe; % plotting axes (rand (10))% plotting hT = title ("Random Graph")% adăugarea unui titlu% deschiderea unei casete de dialog pentru alegerea unui font pentru marcarea axelor uisetfont (hA, "Set font for axes"); % deschide o casetă de dialog pentru alegerea unui font pentru titlu uisetfont (hT, „Set font for title”); Dialog de selectare a culorilor - funcția uisetcolor

Funcția uisetcolor, la fel ca uisetfont, poate fi utilizată în două scopuri:
1) crearea unei casete de dialog de selecție a culorii și scrierea culorii selectate într-un vector în format RGB;
2) crearea unei casete de dialog de selecție a culorii și modificarea obiectelor grafice care au o proprietate Color în conformitate cu setările făcute în această fereastră.

C = uisetcolor- crearea unei casete de dialog de selecție a culorii (în ea, implicit, culoarea curentă este albă) și scrierea culorii selectate în vectorul C în format RGB. Dacă utilizatorul nu a făcut o alegere, atunci C este zero.

C = uisetcolor (C0)- la fel ca și opțiunea anterioară, doar în caseta de dialog de selecție a culorii, culoarea curentă este specificată de vectorul C0 în RGB. Dacă utilizatorul nu a făcut o alegere, atunci C este același cu C0.

С = uisetcolor ("Titlul ferestrei"), С = uisetcolor (С0, "Titlul ferestrei")- la fel ca și opțiunea anterioară, doar caseta de dialog de selecție a culorii are un titlu dat.

uisetcolor (h)- deschiderea casetei de dialog de selecție a culorii pentru specificarea culorii obiectului grafic cu indicatorul h (obiectul grafic trebuie să aibă proprietatea Color).

uisetcolor (h, „Titlul ferestrei”)- similar cu cel precedent, dar caseta de dialog are un titlu dat.

C = uisetcolor (h) sau C = uisetcolor (h, „Titlul ferestrei”)- la fel ca ultimele două metode. Pe lângă schimbarea culorii obiectului, culoarea selectată este scrisă în vectorul C în format RGB.

Un exemplu de schimbare a culorii obiectelor grafice.

hA = axe; % crearea axelor% trasarea x = 0: 0,1: 10; y = sin (x); hL = grafic (x, y) hT = titlu ("Grafic aleatoriu")% adaugă un titlu% deschide o casetă de dialog pentru a selecta o culoare de linie uisetcolor (hL, "Selectează culoarea liniei")% deschide o casetă de dialog pentru a selecta un titlu color uisetcolor (hT, „Selectează culoarea titlului”)% deschide o casetă de dialog pentru alegerea culorii axelor uisetcolor (hA, „Selectează culoarea axelor”)

Fereastră cu bară de progres - funcție de bară de așteptare

Funcția waitbar creează o fereastră cu o bară de progres și vă permite să o actualizați.

h = bara de așteptare (x, „text”)- afișează o fereastră cu o bară de progres și textul specificat deasupra barei. Lungimea barei de progres este proporțională cu valoarea x, care trebuie să fie între 0 și 1. Argumentul de ieșire h este un pointer către o fereastră grafică cu o bară de progres.

bară de așteptare (x, h)- mărește lungimea barei de progres cu indicatorul h în funcție de valoarea lui x.

% creează o fereastră cu o bară de progres goală h = waitbar (0, „Rezolvarea problemelor cu valori proprii...”); pentru i = 1: 100 A = rand (30); L = eig (A); bara de așteptare (i / 100)% actualizați bara de progres end% eliminați fereastra grafică cu bara de progres închisă (h)

Culoarea barei poate fi schimbată dacă ținem cont de faptul că bara este un obiect poligonal, un descendent de axe, care la rândul lor sunt un descendent al ferestrei grafice creată de funcția waitbar. Exemplu:

% creează o fereastră cu o bară de progres goală h = waitbar (0, „Rezolvarea problemelor cu valori proprii...”); % găsiți un pointer către un obiect poligon hP = findobj (h, „Tip”, „patch”); % setarea culorii interiorului și marginii setului de obiecte poligonale (hP, "FaceColor", "g", "EdgeColor", "g") pentru i = 1: 1000 bară de așteptare (i / 1000, h) sfârșit de închidere ( h)

Proprietățile ferestrei în sine pot fi modificate, de asemenea, folosind atât un pointer către aceasta, cât și faptul că funcția waitbar vă permite să setați proprietățile ferestrei în argumentele de intrare, de exemplu:

h = bara de așteptare (0, „Pur și simplu alb”, „Culoare”, „w”, „Nume”, „program”);

Crearea unei casete de dialog cu butoane - Funcția de meniu

Funcția de meniu creează o fereastră cu text și butoane aranjate într-o coloană cu etichetele specificate. După ce utilizatorul face clic pe buton, numărul acestuia este returnat în argumentul de ieșire al funcției de meniu.

buton = meniu ("Selectați metoda", "Newton", "Gauss", "Zeidel")

Dacă utilizatorul nu a făcut o alegere, atunci butonul = 0.

Top articole similare