Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Programi
  • Deskriptor grafike. Moj računar ne prikazuje ekstenzije datoteka, šta da radim? Standardni dijaloški okviri

Deskriptor grafike. Moj računar ne prikazuje ekstenzije datoteka, šta da radim? Standardni dijaloški okviri

Fajlovi su prilično uobičajeni objekti u MATLAB sistemu. Neki tipovi datoteka su već razmatrani u prethodnim poglavljima. Ova lekcija govori o svojstvima datoteka koje ne zavise od njihovog tipa i primjenjuju se na bilo koje datoteke.

File obično je neka zbirka podataka objedinjena jednim imenom. Tip datoteke obično je određen njegovom ekstenzijom. Mi smatramo datoteku kao cjelinu, iako fizički na disku može biti predstavljena s nekoliko područja - kažu da je u ovom slučaju datoteka fragmentirana.

Prije upotrebe bilo koje datoteke, ona mora biti otvoren, a na kraju upotrebe - zatvoreno. Mnoge datoteke se mogu otvoriti i čitati u isto vrijeme. Razmotrite komande za otvaranje i zatvaranje datoteka.

  • Tim otvoreno ime, gdje ime mora sadržavati niz znakova ili karakternu varijablu, otvara datoteke ovisno o raščlanjivanju naziva parametra i ekstenzija u nazivu imena:
    • varijabla- otvara niz, imenovan po imenu, u uređivaču niza (Array Editor);
    • .mat- otvara datoteku, sprema varijable u strukturi u radni prostor;
    • .sl- otvara ga u uređivaču grafike deskriptora Property Editor;
    • .m- otvara m-datoteku u editoru-debageru;
    • .mdl- otvara model u Simulink-u;
    • .R- otvara, ako postoji, m-fajl sa istim imenom;
    • .html- otvara HTML dokument u pretraživaču pomoći.

Ako fajlovi sa ekstenzijom postoje na MATLAB putanji, onda je datoteka vraćena naredbom čije ime se otvara, ako ne, onda datoteka iz sistem podataka. Ako datoteka nema ekstenziju imena, onda je otvara program čiji format datoteke bi detektovala funkcija koja ("ime datoteke") Prema zadanim postavkama, za sve datoteke sa završetkom koji nije gore, poziva se openother. Open poziva funkcije orepxxx, gdje je xxx ekstenzija datoteke. Izuzetak su varijable radnog prostora za koje se zove openvar i crteži za koje se poziva openim. Kreiranjem t-fajlova pod nazivom orepxxx, korisnici mogu promijeniti rukovanje datotekama i dodati nove ekstenzije na listu. Datoteke otvorene sa open moraju biti zatvorene iz editora koje poziva openxxx.

  • = uigetfile(FILTERSPEC.Title). Otvara dijalog pod nazivom Naslov sa filterom FILTERSPEC (na primjer, niz ćelija koji sadrži ekstenzije datoteke) i vraća datoteku koju je odabrao korisnik i njenu putanju. Vraća FILENAME=0 ako datoteka ne postoji ili ako je korisnik kliknuo na Otkaži. = uigetfile(FILTERSPEC, Naslov. X. Y) postavlja dijaloški okvir na X, Y (koordinate piksela).

Uigetfile("*.m;*.fig;*.mat:*.mdl" , "Sve MATLAB datoteke (*.m, *.fig, *.mat. *.mdl)")...

  • = uiputfile(FILTERSPEC.TITLE)čuva datoteku u dijalogu koji vodi korisnik. Parametri su slični onima u funkciji uigetfile.
  • Tim ui open otvara dijalog i ako je korisnik odabrao datoteku sa poznatom ekstenzijom, poziva je koristeći open, ili ako ime datoteke ima nepoznatu ekstenziju, onda poziva uigetfile. uiopen ulazni argumenti mogu biti mat lab, load, figure, simulink, editor. Bez ulaznih argumenata ili sa matlab ulaznim argumentom, dijaloški okvir od vas traži da odaberete *.m, *.fig, *.mat, *.mdl (ako je Simulink instaliran), *.cdr (ako je instaliran tok stanja), *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb (ako je instalirana Real-Time Workshop). Sa opterećenjem argumenta - *.mat. Sa argumentom figure, *.fig; simul ink - *.mdl, editor - *.m, *.mdt *.cdr, *.rtw, *.tmf, *.tlc, *.c, *.h, *.ads, *.adb.

Uiopen figure

  • Tim uiload otvara datoteku u dijalogu koji vodi korisnik koristeći naredbu opterećenje.

Funkcija ui import Lansira Čarobnjak za uvoz(Čarobnjak za uvoz), uvoz iz datoteke u trenutnoj fascikli ili Windows međuspremnika. Odgovara izboru uvoz podataka iz menija File ili izbor Paste Special iz menija Uredi MATLAB.

  • uvoz korisničkog interfejsa (FILENAME)- pokreće čarobnjak za uvoz otvaranjem FILENAME. Čarobnjak za uvoz prikazuje podatke za pregled. Podaci i njihova reprezentacija kao MATLAB varijable pojavljuju se u prozoru za pregled. Stvarni podaci, tekst i naslovi izgledaju drugačije MATLAB varijable. Za ASCII podatke, morate osigurati da čarobnjak za uvoz prepoznaje separatore stupaca. Sam po sebi, može prepoznati samo tabulator, razmak, zarez ili tačku i zarez. Potrebno je da kliknete na dugme Sljedeći i u sljedećem prozoru potvrdite izbor separatora koji je napravio čarobnjak ili odaberite Ostalo i unesite bilo koji separator.
  • ui import("-file")- prvo prikazuje dijalog za odabir datoteke.
  • ui import("-pastespecial")- prvo prikazuje sadržaj Windows međuspremnika za pregled.
  • S = ui import(...) pohranjuje rezultirajuće varijable kao polja S strukture.
  • Tim uisave- spremanje kojim upravlja korisnik (naredba za spremanje je opisana u lekciji 2) sa Windows dijalogom.
  • Funkcija saveas- pohranjuje crtež ili Simulink model u željenom formatu na mediju za pohranu ili na uređaj s omogućenom ispisom.
  • Funkcija saveas(H, "FILENAME")- pohranjuje podatke prema grafičkoj komandi deskriptora H u datoteci FILENAME. Format datoteke je određen ekstenzijom naziva FILENAME.
  • Funkcija saveas(H. "FILENAME". "FORMAT")- radi isto, ali sa parametrom FORMAT (format je specificiran na isti način kao ekstenzija naziva datoteke i može se razlikovati od njega). FORMAT ima prednost nad ekstenzijom naziva datoteke. Parametri funkcije:
    • "smokva"- sačuvati crtež (graf) u binarnoj fig-datoteci;
    • "m" ili "mfig"- sačuvajte crtež u binarnoj fig-datoteci i kreirajte m-datoteku za učitavanje;
    • "mmat"- sačuvati sliku u m-datoteci kao niz naredbi za kreiranje slike. Možda ne podržava najnovije grafičke karakteristike.

saveas(gcf. "output" , "fig") saveas(gcf, "output" , "bmp")

Naredba ili funkcija izbrisati briše grafičku datoteku ili objekt.

). Među sredstvima opće namjene koji se koristi u hemometriji, posebno mjesto zauzima MatLab paket. Njegova popularnost je neobično visoka. To je zato što je MatLab moćna i svestrana višedimenzionalna obrada podataka. Sama struktura paketa čini ga pogodnim alatom za izvođenje matričnih proračuna. Raspon problema, čije se proučavanje može provesti s MatLab pomoć, pokriva: matričnu analizu, obradu signala i slike, neuronske mreže i mnogi drugi. MatLab je jezik visoki nivo, koji je otvorenog koda, što ga čini mogućim napredni korisnici razumiju programirane algoritme. Jednostavan ugrađeni programski jezik olakšava kreiranje vlastitih algoritama. Za dugogodišnje korištenje MatLab kreiran velika količina funkcije i ToolBox (paketi specijalizovanih alata). Najpopularniji je PLS ToolBox kompanije Eigenvector Research, Inc.

1. Osnovne informacije

1.1. MatLab radno okruženje

Dvaput kliknite na ikonu da pokrenete program. Vidjet ćete radno okruženje prikazano na slici.

Radni prostor MatLab 6.x malo drugačiji od radnog prostora prethodnih verzija, ima praktičniji interfejs za pristup mnogim pomoćnim elementima

Radni prostor MatLab 6.x sadrži sljedeće elemente:

    traka sa alatkama sa dugmadima i padajućom listom;

    prozor sa karticama Launch Pad i Radni prostor, iz koje možete pristupiti različitim modulima ToolBox-a i sadržaju radnog stola;

    prozor sa karticama istorija komande i trenutni imenik, namenjen za pregled i pozivanje prethodno unetih komandi, kao i za podešavanje trenutnog direktorijuma;

    komandni prozor koji sadrži upit za unos » i trepćući vertikalni kursor;

    statusna linija.

Ako u radno okruženje MatLab 6.x nema prozora prikazanih na slici, tada bi trebalo da izaberete odgovarajuće stavke u meniju Prikaz: komandni prozor, Istorija naredbi, Trenutni direktorij, Radni prostor, Launch Pad.

Komande treba ukucati u komandni prozor. Simbol » , koji označava poziv za ulazak u komandnu liniju, nije potrebno kucati. Za pregled radnog prostora zgodno je koristiti trake za pomicanje ili tipke Početna , Kraj , za pomicanje lijevo ili desno i PageUp , PageDown za kretanje gore ili dolje. Ako iznenada, nakon pomicanja po radnom prostoru komandnog prozora, komandna linija sa trepćućim kursorom nestane, samo pritisnite Enter.

Važno je zapamtiti da skup bilo koje naredbe ili izraza mora završiti pritiskom na Enter kako bi MatLab program izvršio ovu naredbu ili procijenio izraz.

1.2. Najjednostavnije kalkulacije

Upišite 1+2 u komandnu liniju i pritisnite Enter. Kao rezultat, u MatLab komandnom prozoru se prikazuje sljedeće:

Rice. 2 Grafički prikaz analize glavnih komponenti

Šta je radio MatLab program? Prvo je izračunao zbir 1+2, zatim je rezultat zapisao u posebnu varijablu ans i ispisao njegovu vrijednost, 3, u komandni prozor. Ispod odgovora je komandna linija sa trepćućim kursorom, što ukazuje da je MatLab spreman za dalje proračune. Možete upisati nove izraze u komandnu liniju i pronaći njihove vrijednosti. Ako želite da nastavite da radite sa prethodnim izrazom, na primer, da izračunate (1+2)/4.5, onda je najlakši način da koristite već postojeći rezultat, koji je pohranjen u promenljivoj ans. Ukucajte ans/4.5 (tačka se koristi prilikom unosa decimala) i pritisnite Enter, ispostavilo se

Rice. 3 Grafički prikaz analize glavnih komponenti

1.3. Command echo

Izvršenje svake naredbe u MatLabu je praćeno ehoom. U gornjem primjeru, ovo je odgovor ans = 0,6667. Često eho otežava percepciju rada programa i tada se može isključiti. Da biste to učinili, naredba mora završiti tačkom i zarezom. na primjer

Rice. Primjer unosa funkcije 4 ScoresPCA

1.4. Očuvanje radnog okruženja. MAT fajlovi

Najlakši način da sačuvate sve vrednosti varijabli je da koristite stavku Sačuvaj radni prostor kao u meniju Datoteka. Pojavljuje se okvir za dijalog Save Workspase Variables u kojem se od vas traži da navedete direktorij i ime datoteke. Prema zadanim postavkama, predlaže se spremanje datoteke u radni poddirektorij glavnog MatLab direktorija. Program će rezultate rada pohraniti u datoteku sa ekstenzijom mat. Sada možete zatvoriti MatLab. U sljedećoj sesiji, da biste vratili vrijednosti varijabli, otvorite ovu sačuvanu datoteku koristeći podstavku Otvori menija Datoteka. Sada su sve varijable definirane u posljednjoj sesiji ponovo dostupne. Mogu se koristiti u novounesenim naredbama.

1.5. Časopis

MatLab ima mogućnost da upiše izvršne komande i rezultate u tekstualnu datoteku (čuva dnevnik rada), koji se zatim može pročitati ili odštampati iz uređivača teksta. Za početak evidentiranja koristite naredbu dnevnik. Kao argument komande dnevnik morate navesti ime datoteke u kojoj će se pohraniti dnevnik rada. Naredbe koje se dalje upisuju i rezultati njihovog izvršavanja biće upisani u ovu datoteku, na primjer, niz naredbi

obavlja sljedeće radnje:

    otvara dnevnik u datoteci exampl-1.txt ;

    vrši proračune;

    sprema sve varijable u MAT fajl work-1.mat ;

    čuva zapisnik u datoteci exampl-1.txt u radni poddirektorijum MatLab root direktorijuma i zatvara MatLab;

Pogledajte sadržaj exampl-1.txt datoteke u nekim uređivač teksta. Datoteka će sadržavati sljedeći tekst:

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

Sačuvaj rad-1
odustati

1.6. Sistem pomoći

MatLab Help prozor se pojavljuje nakon odabira opcije Help Window iz menija Help ili pritiskom na dugme za pitanje na traci sa alatkama. Ista operacija se može izvesti upisivanjem naredbe helpwin. Da biste prikazali prozor pomoći za pojedinačne teme, otkucajte helpwin tema. Prozor pomoći vam pruža iste informacije kao i komanda pomoći, ali prozorsko sučelje olakšava povezivanje s drugim temama pomoći. Koristeći adresu web stranice Math Works, možete otići na server Math Works i dobiti najnovije informacije o pitanjima koja vas zanimaju. Možete provjeriti nove softverske proizvode ili pronaći odgovore na svoje probleme na stranici tehničke podrške.

2. Matrice

2.1. Skalari, vektori i matrice

U MatLabu možete koristiti skalare, vektore i matrice. Da biste unijeli skalar, dovoljno je dodijeliti njegovu vrijednost nekoj varijabli, na primjer

Imajte na umu da MatLab razlikuje velika i mala slova, tako da su p i P različite varijable. Za unos nizova (vektora ili matrica), njihovi elementi se stavljaju u uglaste zagrade. Dakle, za unos vektora reda veličine 1x3 koristi se sljedeća naredba u kojoj su elementi reda odvojeni razmacima ili zarezima.

Prilikom unosa vektora stupca, elementi se odvajaju tačkom i zarezom. Na primjer,

Pogodno je unositi male matrice direktno iz komandne linije. Kada se unese, matrica se može posmatrati kao vektor kolone, čiji je svaki element vektor reda.

ili se matrica može tretirati kao vektor reda, čiji je svaki element vektor stupca.

2.2. Pristup elementima

Pristup elementima matrice se vrši pomoću dva indeksa - brojeva reda i stupaca, koji se nalaze u okrugle zagrade, na primjer, naredba B(2,3) će vratiti element drugog reda i treće kolone matrice B. Da biste odabrali kolonu ili red iz matrice, koristite broj stupca ili reda matrice kao jedan od indeksa, a drugi indeks zamijenite dvotočkom. Na primjer, upišimo drugi red matrice A u vektor z

Također možete odabrati blokove matrica koristeći dvotočku. Na primjer, izaberite iz matrice P blok označen bojom

Ako treba da vidite varijable radnog okruženja, u komandnoj liniji treba da ukucate naredbu whos .

Vidi se da radno okruženje sadrži jedan skalar (p), četiri matrice (A, B, P, P1) i vektor reda (z).

2.3. Osnovne matrične operacije

Kada koristite matrične operacije, zapamtite da za sabiranje ili oduzimanje matrice moraju biti iste veličine, a kada se množe, broj stupaca prve matrice mora biti jednak broju redova druge matrice. Sabiranje i oduzimanje matrica, kao i brojeva i vektora, vrši se pomoću znakova plus i minus.

a množenje je označeno zvjezdicom *. Uvodimo matricu 3×2

Množenje matrice brojem se također vrši pomoću zvjezdice, a možete množiti brojem i desno i lijevo. Podizanje kvadratne matrice na cjelobrojni stepen vrši se pomoću ^ operatora

Provjerite rezultat množenjem matrice P sama po sebi.

2.4. Kreiranje matrica posebne vrste

Popunjavanje pravokutne matrice nulama vrši se ugrađenom funkcijom nule

Matrica identiteta se kreira pomoću funkcije oko

Matrica koja se sastoji od jedinica formira se kao rezultat pozivanja funkcije one

MatLab pruža mogućnost popunjavanja matrica slučajnim brojevima. Rezultat funkcije rand je matrica brojeva ravnomjerno raspoređenih između nule i jedan, i funkcija randn- matrica brojeva raspoređenih prema normalnom zakonu sa nultom srednjom i jediničnom varijansom.

Funkcija dijag formira dijagonalnu matricu od vektora, postavljajući elemente dijagonalno.

2.5. Matrični proračuni

MatLab sadrži mnogo različitih funkcija za rad sa matricama. Tako se, na primjer, transpozicija matrice vrši pomoću apostrofa "

Pronalaženje inverzne matrice vrši se pomoću funkcije inv za kvadratne matrice

3. Integracija MatLab-a i Excel-a

Integracija MatLab-a i Excel-a omogućava korisniku Excel-a pristup brojnim MatLab funkcijama za obradu podataka, različite proračune i vizualizaciju rezultata. Dodatak excllink.xla implementira ovo Excel poboljšanje. Za vezu između MatLab-a i Excel-a definirane su posebne funkcije.

3.1. Excel konfiguracija

Prije postavljanja Excela za rad sa MatLab-om, trebali biste se uvjeriti da je Excel Link uključen u instaliranu verziju MatLaba. U poddirektorijumu exclink glavnog MatLab direktorijuma ili poddirektoriju kutije sa alatkama, mora postojati datoteka sa dodatkom excllink.xla . Pokrenite Excel i odaberite Dodaci iz izbornika Alati. Otvoriće se dijaloški okvir koji sadrži informacije o dostupnim ovog trenutka dodaci. Koristeći dugme Pregledaj, odredite putanju do datoteke excllink.xla. Niz će se pojaviti na listi dodataka u dijaloškom okviru. Excel Link 2.0 za upotrebu sa MatLabom sa postavljenom zastavom. Kliknite na OK, potrebni dodatak je dodan u Excel.

Imajte na umu da Excel sada ima Excel Link traku sa alatkama koja sadrži tri dugmeta: putmatrix , getmatrix , evalstring . Ova dugmad implementiraju osnovne radnje potrebne za implementaciju odnosa između Excel-a i MatLab-a - razmjenu matričnih podataka, te izvršavanje MatLab komandi iz Excel okruženja. Kada ponovo pokrenete Excel, dodatak excllink.xla se automatski povezuje.

Koordinirani rad Excel-a i MatLab-a zahtijeva još nekoliko postavki koje su standardno prihvaćene u Excel-u (ali se mogu promijeniti). Iz menija Alati idite na Opcije, otvara se okvir za dijalog Opcije. Odaberite karticu Općenito i provjerite je li zastavica referentnog stila R1C1 isključena, tj. ćelije su označene brojevima A1, A2 itd. Na kartici Uređivanje mora biti postavljena zastavica Premjesti odabir nakon Enter.

3.2. Razmjena podataka između MatLab-a i Excel-a

Pokrenite Excel, provjerite da li su sve potrebne postavke urađene kao što je opisano u prethodnom dijelu (MatLab mora biti zatvoren). Unesite matricu u ćelije A1 do C3, koristite tačku da odvojite decimale kako to zahtijeva Excel.

Odaberite podatke ćelije u listu i pritisnite dugme putmatrix, pojavljuje se Excel prozor sa upozorenjem da MatLab nije pokrenut. Kliknite OK, pričekajte da se MatLab otvori.

Pojavljuje se Excel dijaloški okvir sa linijom za unos za određivanje imena MatLab varijable radnog prostora u koju treba izvesti podatke iz odabranih Excel ćelija. Unesite, na primjer, M i zatvorite prozor tipkom OK. Idite na MatLab komandni prozor i uvjerite se da je varijabla M kreirana u radnom okruženju, koja sadrži niz tri po tri:

Uradite neke operacije u MatLabu sa matricom M, na primjer, invertirajte je.

Zovi inv da se invertuje matrica, kao i svaka druga MatLab naredba, može se uraditi direktno iz Excel-a. Pritiskom na dugme evalstring koje se nalazi na panelu Excel Link dolazi do pojave dijaloškog okvira u čiju liniju za unos treba upisati naredbu MatLab

IM=inv(M) .

Rezultat je sličan onome koji se dobije prilikom izvršavanja naredbe u MatLab okruženju.

Vratite se u Excel, učinite ćeliju A5 trenutnom ćelijom i kliknite na dugme getmatrix. Pojavljuje se dijaloški okvir sa redom za unos u koji treba da unesete naziv varijable koju želite uvesti u Excel. AT ovaj slučaj takva varijabla je IM. Kliknite OK , elementi inverzne matrice se unose u ćelije A5 do A7.

Dakle, da biste eksportovali matricu u MatLab, trebalo bi da izaberete odgovarajuće ćelije Excel lista, a za uvoz samo treba da navedete jednu ćeliju, koja će biti gornji levi element uvezenog niza. Preostali elementi će biti upisani u ćelije lista u skladu sa veličinom niza, zamenjujući podatke sadržane u njima, tako da treba da budete oprezni kada uvozite nizove.

Gore navedeni pristup je najviše na jednostavan način razmjena informacija između aplikacija - početni podaci se nalaze u Excelu, zatim se izvoze u MatLab, tamo se na neki način obrađuju i rezultat se uvozi u Excel. Korisnik prenosi podatke koristeći dugmad na traci sa alatkama Excel Link. Informacije se mogu predstaviti u obliku matrice, tj. pravougaona površina radnog lista. Ćelije raspoređene u red ili kolonu se izvoze u vektore reda i kolone u MatLab-u, respektivno. Slično, dolazi do uvoza vektora redova i vektora stupaca u Excel.

4. Programiranje

4.1. M-fajlovi

Rad iz MatLab komandne linije je težak ako trebate unijeti mnogo naredbi i često ih mijenjati. Vođenje dnevnika sa komandom dnevnik i održavanje radnog okruženja malo olakšavaju posao. po najviše zgodan način Izvođenje MatLab komandnih grupa je korištenje M-fajlova, u koje možete upisivati ​​komande, izvršavati ih sve odjednom ili u dijelovima, pohranjivati ​​ih u datoteku i koristiti ih kasnije. M-file editor je dizajniran za rad sa M-datotekama. Pomoću njega možete kreirati vlastite funkcije i pozivati ​​ih, uključujući i iz komandnog prozora.

Proširite meni Datoteka glavnog MatLab prozora i u Novoj stavci izaberite podstavku M-datoteka. Nova datoteka se otvara u M-file editor prozoru prikazanom na slici.

Postoje dvije vrste M-fajlova u MatLabu: program-file ( Script M-Files) koji sadrži niz naredbi i funkcijsku datoteku, ( Funkcija M-Files) koji opisuju korisnički definirane funkcije.

4.2. Program datoteka

Ukucajte komande u editoru koje dovode do izgradnje dva grafikona u jednom grafičkom prozoru

Sačuvajte datoteku sada pod imenom mydemo.m u radni poddirektorijum glavnog MatLab direktorijuma tako što ćete izabrati stavku Sačuvaj kao iz menija Datoteka urednika. Da biste pokrenuli sve komande sadržane u datoteci, izaberite stavku Pokreni iz menija Debug. Na ekranu će se pojaviti grafički prozor. Slika 1, koji sadrži grafove funkcija.

Komande programa datoteke izlaze u komandni prozor. Da biste potisnuli izlaz, završite naredbe tačkom i zarezom. Ako se napravi greška pri kucanju i MatLab ne može prepoznati komandu, tada se naredbe izvršavaju sve dok se ne unese pogrešno, nakon čega se u komandnom prozoru prikazuje poruka o grešci.

Visoko zgodna prilika koju obezbeđuje M-file editor je izvršenje dela komandi. Zatvorite grafički prozor Slika 1. Odaberite mišem dok držite lijevo dugme, ili tipke sa strelicama dok pritisnete tipku Shift, prve četiri komande i izvršite ih iz stavke Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon, koji odgovara izvršenim komandama. Zapamtite da da biste izvršili neke od naredbi, morate ih odabrati i pritisnuti tipku F9.

Odvojeni blokovi M-datoteke mogu biti opremljeni komentarima koji se preskaču tokom izvršavanja, ali su zgodni za rad sa M-datotekom. Komentari počinju sa znakom procenta i automatski su označeni zelenom bojom, na primjer:

Otvaranje postojeće M-datoteke vrši se pomoću stavke Otvori menija Datoteka radnog okruženja ili uređivača M-fajla.

4.3. funkcija datoteke

Datotečni program razmatran iznad je samo niz MatLab komandi, on nema ulazne i izlazne argumente. Da biste koristili numeričke metode i prilikom programiranja vlastitih aplikacija u MatLabu, morate biti u mogućnosti kreirati funkcije datoteke koje izvode potrebne akcije s ulaznim argumentima i vraćaju rezultat akcije u izlaznim argumentima. Pogledajmo nekoliko jednostavnih primjera da bismo razumjeli kako raditi s funkcijama datoteka.

Prilikom predobrade podataka multivarijantne analize, kemometrija često koristi centriranje. Ima smisla jednom napisati funkcijsku datoteku, a zatim je pozvati gdje god je potrebno centriranje. Otvorite novu datoteku u uređivaču M-datoteka i otkucajte

Riječ funkcija u prvom redu navodi da ova datoteka sadrži funkcijsku datoteku. Prvi red je zaglavlje funkcije, koje sadrži naziv funkcije i listu ulaznih i izlaznih argumenata. U primjeru, ime funkcije je centriranje, jedan ulazni argument je X, a jedan izlazni argument je Xc. Nakon zaglavlja slijede komentari, a zatim tijelo funkcije (u ovom primjeru sastoji se od dva reda), gdje se izračunava njena vrijednost. Važno je da se izračunata vrijednost upiše u Xc. Ne zaboravite da uključite tačku i zarez kako biste spriječili da se suvišne informacije prikazuju na ekranu. Sada spremite datoteku u svoj radni direktorij. Imajte na umu da odabir Sačuvaj ili Sačuvaj kao iz menija Datoteka otvara dijaloški okvir za spremanje datoteke, čije polje Ime datoteke već sadrži centriranje imena. Nemojte ga mijenjati, sačuvajte funkcijsku datoteku u datoteku s predloženim imenom!

Sada se kreirana funkcija može koristiti na isti način kao i ugrađene sin , cos i druge. Poziv vlastitih funkcija može se izvršiti iz fajl-programa i iz druge fajl-funkcije. Pokušajte sami napisati funkcijski fajl koji će skalirati matrice, tj. podijelite svaki stupac sa standardnom devijacijom za tu kolonu.

Moguće je napisati funkcijsku datoteku s višestrukim ulaznim argumentima, koji se nalaze u listi razdvojenoj zarezima. Također možete kreirati funkcije koje vraćaju više vrijednosti. Da biste to učinili, izlazni argumenti se dodaju, odvojeni zarezima, na listu izlaznih argumenata, a sama lista je zatvorena u uglastim zagradama. Dobar primjer je funkcija koja pretvara vrijeme dato u sekundama u sate, minute i sekunde.

Kada se pozivaju funkcije datoteke s više izlaznih argumenata, rezultat bi trebao biti zapisan u vektor odgovarajuće dužine.

4.4 Kreiranje grafikona

MatLab ima široke mogućnosti za grafičko predstavljanje vektora i matrica, kao i za kreiranje komentara i štampanje grafova. Hajde da opišemo nekoliko važnih grafičkih funkcija.

Funkcija plot ima različite oblike pridružene ulaznim parametrima, na primjer plot(y) proizvodi grafiku y elemenata u odnosu na njihove indekse. Ako su dva vektora data kao argumenti, tada će plot(x,y) prikazati y u odnosu na x. Na primjer, za iscrtavanje funkcije sin u rasponu od 0 do 2π, učinit ćemo sljedeće

Program je napravio graf zavisnosti koji se prikazuje u prozoru Slika 1

MatLab automatski dodjeljuje različitu boju svakom grafikonu (osim kada to radi korisnik), što omogućava razlikovanje skupova podataka.

Tim Čekaj omogućava vam da dodate krive postojećem grafikonu. Funkcija podzaplet omogućava vam da prikažete više grafikona u jednom prozoru

4.5 Štampanje grafikona

Stavka Štampanje u meniju Datoteka i naredba print print MatLab grafike. Meni Štampanje otvara dijaloški okvir koji vam omogućava da izaberete uobičajene standardne opcije štampanja. Tim print pruža veću fleksibilnost u izlazu podataka i omogućava vam da kontrolišete štampanje iz M-fajlova. Rezultat se može poslati direktno na podrazumevani štampač ili sačuvati u unapred definisanom fajlu.

5. Primjeri programa

Ovaj odjeljak navodi najčešće algoritme koji se koriste u analizi multivarijantnih podataka. Razmatraju se kako najjednostavnije metode transformacije podataka - centriranje i skaliranje, tako i algoritmi za analizu podataka - PCA, PLS.

5.1. Centriranje i skaliranje

Često analiza zahtijeva transformaciju izvornih podataka. Najčešće korištene metode transformacije podataka su centriranje i skaliranje svake varijable prema standardnoj devijaciji. U funkcijskom kodu za centriranje je data matrica. Stoga je ispod prikazan samo kod funkcije, koji vage podaci. Imajte na umu da originalna matrica mora biti centrirana

funkcija Xs = skaliranje(X)
% skaliranja: izlazna matrica je Xs
% matrica X mora biti centrirana

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

%kraj skaliranja

5.2. SVD/PCA

Najpopularniji način kompresije podataka multivarijantna analiza je metoda glavne komponente (PCA). Sa matematičke tačke gledišta, PCA je dekompozicija originalne matrice X, tj. predstavljajući ga kao proizvod dvije matrice T i P

X = TP t+ E

Matrix T naziva se matrica rezultata (skora), matrica je ​​matrica reziduala.

Najjednostavniji način za pronalaženje matrica T i P- koristiti SVD dekompoziciju kroz standard MatLab funkcija pozvao svd .

funkcija = pcasvd(X)

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

%kraj pcasvd

5.3 PCA/NIPALS

Za izradu PCA rezultata i opterećenja koristi se NIPALS rekurzivni algoritam, koji izračunava jednu komponentu u svakom koraku. Prvo originalna matrica X transformira se (barem - centriran; vidi) i pretvara se u matricu E 0 , a=0. Zatim se primjenjuje sljedeći algoritam.

t 2. str t = t t Ea / t t t 3. str = str / (str t str) ½ 4. t = Ea str / str t str 5. Provjerite konvergenciju, ako ne, idite na 2

Nakon izračunavanja sljedećeg ( a th) komponente, pretpostavljamo ta=t i stra=str E a+1 = Eat str a na a+1.

Šifru NIPALS algoritma mogu napisati sami čitaoci, au ovom priručniku autori predstavljaju svoju verziju. Prilikom izračunavanja PCA, možete unijeti broj glavnih komponenti (broj varijablePC). Ako se ne zna koliko komponenti je potrebno, u komandnoj liniji treba napisati = pcanipals (X) i tada će program postaviti broj komponenti jednak najmanjoj od dimenzija originalne matrice X.

funkcija = pcanipals(X, brojPC)

% obračun broja komponenti
= veličina(X); P=; T=;

Ako je dužina (broj PC) > 0
pc = brojPC(1);
elseif (dužina(brojPC) == 0) & X_r< X_c
pc = X_r;
ostalo
pc = X_c;
kraj;

za k = 1:kom
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;

Dok je 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;
kraj

X = X - T1 * P1; P = kat(1, P, P1"); T = ;
kraj

Naučite kako izračunati PCA s dodatkom Chemometrics u vodiču

5.4PLS1

Najpopularnija metoda za multivarijantnu kalibraciju je metoda projekcije na latentne strukture (PLS). Ova metoda vrši simultanu dekompoziciju prediktorske matrice X i matrice odgovora Y:

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

Projekcija je izgrađena na konzistentan način - tako da se maksimizira korelacija između odgovarajućih vektora X-računi ta i Y-računi ua. Ako blok podataka Y uključuje više odgovora (tj. K>1), moguće je konstruisati dvije projekcije početnih podataka – PLS1 i PLS2. U prvom slučaju, za svaki od odgovora y k konstruiše se sopstveni projekcijski podprostor. Istovremeno, računi T (U) i opterećenja P (W, Q) zavisi od toga koji se odgovor koristi. Ovaj pristup se naziva PLS1. Za metodu PLS2 izgrađen je samo jedan prostor za projekciju, koji je zajednički za sve odgovore.

Detaljan opis PLS metode je dat u ovoj knjizi Za konstruisanje PLS1 rezultata i opterećenja koristi se rekurzivni algoritam. Prvo originalne matrice X i Y centar

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

i pretvaraju se u matricu E 0 i vektor f 0 , a=0. Zatim se na njih primjenjuje sljedeći algoritam

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. str t = t t Ea / t t t

Nakon izračunavanja sljedećeg ( a th) komponente, pretpostavljamo ta=t i stra=str. Da biste dobili sljedeću komponentu, morate izračunati ostatke E a+1 = Eat str t i primijeniti isti algoritam na njih, zamjenjujući indeks a na a+1.

Evo koda za ovaj algoritam, preuzetog iz knjige

funkcija = pls(x, y)
%PLS: izračunava PLS komponentu.
%Izlazni vektori su w, t, u, q i p.
%
% Odaberite vektor iz y kao početni vektor u.

u = y(:, 1);

% Kriterijum konvergencije je postavljen veoma visoko.
cri = 100;

% Naredbe odavde do kraja se ponavljaju do konvergencije.
dok (cri > 1e - 10)

% Svaki početni vektor u se čuva kao ustar.
uold = u; w = (u" * x)"; w = w/norm(w);
t = x*w; q = (t" * y)"/(t" * t);
u = y * q/(q" * q);

% Kriterij konvergencije je norma uold podijeljena normom u.
kri = norma(uold - u)/norma(u);
kraj;

% Nakon konvergencije, izračunajte p.
p = (t" * x)"/(t" * t);

% Kraj pls

O izračunavanju PLS1 s dodatkom HemometrijaDodati opisano u priručniku Metode projekcije u Excelu.

5.5PLS2

Za PLS2, algoritam je sljedeći. Prvo originalne matrice X i Y transformiraju (barem - centar; vidi), i pretvaraju se u matrice E 0 i F 0 , a=0. Zatim se na njih primjenjuje sljedeći algoritam.

1. Odaberite početni vektor 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. Provjerite konvergenciju, ako ne, idite na 2 8. str t = t t Ea / t t t

Nakon izračunavanja sljedećeg ( a th) PLS2 komponente moraju biti postavljene: ta=t, stra=p,wa=w, ua=u i q a = q. Da biste dobili sljedeću komponentu, morate izračunati ostatke E a+1 = Eatp t and Fa +1 = F atq t i primijeniti isti algoritam na njih, zamjenjujući indeks a na a+1.

Evo koda, koji je također pozajmljen iz knjige.

funkcija = pls(x, y, a)
% PLS: izračunava PLS komponentu.
% Izlazne matrice su W, T, U, Q i P.
% B sadrži koeficijente regresije i SS sume
% kvadrata za ostatke.
% a je broj komponenti.
%
% Za komponente: koristite sve naredbe za kraj.

Za i=1:a
% Izračunajte zbir kvadrata. Koristite funkciju ss.
sx = ;
sy = ;

% Koristite funkciju pls za izračunavanje jedne komponente.
= pls(x, y);

% Izračunajte ostatke.
x = x - t * p";
y = y - t * q";

% Sačuvajte vektore u matricama.
W = ;
T = ;
U = ;
Q = ;
P = ;
kraj;

% Izračunajte koeficijente regresije nakon petlje.
B=W*inv(P"*W)*Q";

% Dodajte konačni preostali SS zbroju vektora kvadrata.
sx=;
sy=;

% Napravite matricu ss vektora za X i Y.
SS = ;

% Izračunajte udio korištenog SS.
= veličina (SS);
tt = (SS * dijag(SS(1,:).^(-1)) - one(a, b)) * (-1)

%Kraj plsr

funkcija = ss(x)
%SS: izračunava zbir kvadrata matrice X.
%

ss=suma(suma(x. * x));
%kraj ss

O izračunavanju PLS2 s dodatkom HemometrijaDodati opisano u priručniku Metode projekcije u Excelu.

Zaključak

MatLab je vrlo popularan alat za analizu podataka. Prema istraživanju, koristi ga do trećina svih istraživača, dok program Unsrambler koristi samo 16% naučnika. Glavni nedostatak MatLaba je njegov visoka cijena. Osim toga, MatLab je dobar za rutinske proračune. Nedostatak interaktivnosti čini ga nezgodnim prilikom izvođenja pretraživanja, istraživačkih proračuna za nove, neistražene nizove podataka.

Nedostatak gore navedenih funkcija spremanja i učitavanja je to što rade s određenim formatima datoteka (obično mat-fajlovi) i ne dozvoljavaju učitavanje ili spremanje podataka u drugim formatima. U međuvremenu, može postojati potreba za učitavanjem informacija, na primjer, iz binarnih datoteka koje su kreirali drugi softverskih proizvoda za dalju obradu rezultata u MatLabu. U tu svrhu razvijene su funkcije

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

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

Evo<идентификатор файла>je pokazivač na datoteku za rad. Da biste dobili ID, koristite funkciju

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

gdje parametar<режим работы>može uzeti vrijednosti date u tabeli. 5.1.

Tabela 5.1. Načini rukovanja datotekama u MatLabu

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

opis

pisati (briše prethodni sadržaj datoteke)

dodaj (kreira fajl ako ne postoji)

čitanje i pisanje (ne kreira fajl ako ne postoji)

čitanje i pisanje (briše stari sadržaj ili kreira datoteku ako ne postoji)

pročitaj i dodaj (kreira fajl ako ne postoji)

dodatni parametar koji znači rad sa binarnim datotekama, na primjer, 'wb', 'rb' 'rb+', 'ab', itd.

Ako funkcija fopen() iz nekog razloga ne može ispravno otvoriti datoteku, vraća -1. Ispod je fragment programa za pisanje i čitanje podataka iz binarne datoteke:

A = ;

fid = fopen("my_file.dat", "wb"); % otvoren fajl za pisanje

error("Datoteka nije otvorena");
kraj

fwrite(fid, A, "double"); % upisivanja matrice u datoteku (40 bajtova)
fclose(fid); % zatvori fajl

fid = fopen("my_file.dat", "rb"); % otvoren fajl za čitanje
ako je fid == -1% provjeriti ispravnost otvaranja
error("Datoteka nije otvorena");
kraj

B = fread(fid, 5, "double"); % očitava 5 dvostrukih vrijednosti
disp(B); % prikaz na ekranu
fclose(fid); % zatvori fajl

Kao rezultat pokretanja ovog programa, u radnom direktoriju će se kreirati 40-bajtna datoteka my_file.dat, koja će sadržavati 5 vrijednosti tipa double, zapisanih kao niz bajtova (8 bajtova za svaku vrijednost). Funkcija fread() čita sekvencijalno pohranjene bajtove i automatski ih pretvara u dvostruke, tj. svakih 8 bajtova se tumače kao jedna dvostruka vrijednost.

U gornjem primjeru, broj elemenata (pet) je eksplicitno specificiran za čitanje iz datoteke. Međutim, često ukupan broj elemenata nije poznat unaprijed ili se mijenja tokom programa. U ovom slučaju, bilo bi bolje čitati podatke iz datoteke dok se ne dođe do kraja datoteke. MatLab ima funkciju za provjeru da li je dostignut kraj datoteke

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

koji vraća 1 kada se dostigne kraj datoteke i 0 u suprotnom. Prepišimo program da pročita proizvoljan broj dvostrukih elemenata iz ulazne datoteke.

fid = fopen("my_file.dat", "rb"); % otvoren fajl za čitanje
ako je fid == -1
kraj

B=0; % inicijalizacije varijable
cnt=1; % inicijalizacija brojača
while ~feof(fid) % petlja dok se ne dostigne kraj datoteke
= fread(fid, 1, "double"); %čitanje jednog
% dvostruke vrijednosti (V sadrži vrijednost
% elementa, N je broj pročitanih elemenata)
ako je N > 0 % ako je element uspješno pročitan, onda
B(cnt)=V; % formiraju vektor reda od vrijednosti V
cnt=cnt+1; % povećati brojač za 1
kraj
kraj
disp(B); % prikaza rezultata na ekranu
fclose(fid); % zatvori fajl

U ovom programu, vektor reda se dinamički formira kako se elementi čitaju ulazni fajl. MatLab automatski povećava dimenziju vektora ako je indeks sljedeći element 1 više od maksimuma. Međutim, na takvu proceduru se troši dosta kompjuterskog vremena, a program počinje da radi primetno sporije nego da je dimenzija vektora B od samog početka određena na 5 elemenata, npr.

Također treba napomenuti da je funkcija fread() napisana sa dva izlazna parametra V i N. Prvi parametar sadrži vrijednost pročitanog elementa, a drugi broj pročitanih elemenata. U ovom slučaju, vrijednost N će biti jednaka 1 svaki put kada se informacija ispravno pročita iz datoteke, a 0 kada se pročita servisni znak EOF, što znači kraj datoteke. Provjera u nastavku vam omogućava da pravilno formirate vektor vrijednosti B.

Također možete pohraniti nizove podataka koristeći funkcije fwrite() i fread(). Na primjer, s obzirom na niz

str = "Zdravo MatLab";

fwrite(fid, str, "int16");

Ovdje se koristi tip int16, jer kada se radi sa ruskim slovima, MatLab sistem koristi dvobajtnu reprezentaciju svakog znaka. Slijedi program za pisanje i čitanje podataka niza pomoću funkcija fwrite() i fread():

fid = fopen("my_file.dat", "wb");
ako je fid == -1
error("Datoteka nije otvorena");
kraj

str="Bok MatLab"; % string za pisanje
fwrite(fid, str, "int16"); % pisati u datoteku
fclose(fid);

fid = fopen("my_file.dat", "rb");
ako je fid == -1
error("Datoteka nije otvorena");
kraj

B=""; % inicijalizacija stringa
cnt=1;
dok ~feof(fid)
= fread(fid, 1, "int16=>char"); % očitane struje
Simbol % i konverzija
% to char
ako je N > 0
B(cnt)=V;
cnt=cnt+1;
kraj
kraj
disp(B); % prikaza string na ekranu
fclose(fid);

Rezultat pokretanja programa će izgledati ovako

Rad iz MatLab komandne linije je težak ako trebate unijeti mnogo naredbi i često ih mijenjati. Vođenje dnevnika sa naredbom dnevnika i spremanje radnog okruženja samo malo olakšava stvari. Najprikladniji način za izvršavanje MatLab komandi je korištenje M-fajlovi, u koji možete upisivati ​​komande, izvršavati ih sve odjednom ili u dijelovima, pohranjivati ​​ih u datoteku i koristiti ih kasnije. M-file editor je dizajniran za rad sa M-datotekama. Pomoću ovog uređivača možete kreirati vlastite funkcije i pozvati ih, uključujući i iz komandne linije.

Proširite meni File glavnom prozoru MatLaba i u paragrafu Novo izaberite podstavku M-fajl. Nova datoteka se otvara u prozoru uređivača M-fajla.

Unesite komande u editoru koje dovode do izgradnje dva grafikona u jednom grafičkom prozoru:

x = ;
f = exp(-x);
podzaplet (1, 2, 1)
plot(x, f)
g = sin(x);
podzaplet (1, 2, 2)
dijagram (x, g)

Sačuvajte sada datoteku pod imenom mydemo.m u poddirektorijum rad glavni MatLab direktorij odabirom stavke Sačuvaj kao meni File urednik. Da biste pokrenuli sve naredbe sadržane u datoteci, odaberite stavku Trči na meniju debug. Na ekranu će se pojaviti grafički prozor. figure br.1, koji sadrži grafove funkcija. Ako odlučite da nacrtate kosinus umjesto sinusa, onda jednostavno promijenite liniju g = sin(x) u M-datoteci u g = cos(x) i ponovo pokrenite sve naredbe.

Napomena 1

Ako se napravi greška pri kucanju i MatLab ne može prepoznati komandu, tada se naredbe izvršavaju sve dok se ne unese pogrešno, nakon čega se u komandnom prozoru prikazuje poruka o grešci.

Vrlo zgodna funkcija koju pruža M-file editor je izvršavanje nekih naredbi. Zatvorite grafički prozor figure br.1. Birajte mišem dok držite pritisnutu lijevu tipku ili tipkama sa strelicama dok držite pritisnutu tipku , prve četiri komande programa i izvršiti ih iz paragrafa Evaluate Odabir meni Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon koji odgovara izvršenim komandama. Imajte na umu da da biste izvršili neke od naredbi, morate ih odabrati i pritisnuti . Pokrenite preostale tri programske komande i pratite stanje grafičkog prozora. Vježbajte sami, otkucajte neke primjere iz prethodnih laboratorija u M-file editor i pokrenite ih.

Mogu se isporučiti pojedinačni blokovi M-fajla komentari, koji se preskaču tokom izvršavanja, ali su zgodni kada radite sa M-fajlom. Komentari u MatLab-u počinju sa znakom procenta i automatski su označeni zelenom bojom, na primjer:

% iscrtavanje sin(x) u posebnom prozoru

Više datoteka može biti otvoreno istovremeno u M-file editoru. Prijelaz između datoteka se vrši pomoću kartica s nazivima datoteka koje se nalaze na dnu prozora uređivača.

Otvaranje postojeće M-fajla se vrši pomoću stavke otvoren meni File radno okruženje ili M-file editor. Također možete otvoriti datoteku u uređivaču pomoću MatLab edit naredbe iz komandne linije, navodeći ime datoteke kao argument, na primjer:

Naredba za uređivanje bez argumenta rezultira kreiranjem nove datoteke.
Sve primjere koji se pojavljuju u ovoj i sljedećim laboratorijima najbolje je ukucati i sačuvati u M-datotekama, dopuniti ih komentarima i izvršiti iz M-file editora. Primena numeričkih metoda i programiranja u MatLabu zahteva kreiranje M-fajlova.

2. Vrste M-fajlova

M-fajlovi u MatLabu su dva tipa: program-file(Script M-Files) koji sadrži niz naredbi, i funkcijska datoteka(Function M-Files), koji opisuju korisnički definirane funkcije.

Datotečni program (procedura datoteke) koji ste kreirali čitajući prethodni pododjeljak. Sve varijable deklarirane u fajl-programu postaju dostupne u radnom okruženju nakon njegovog izvršenja. Izvršite datotečni program dat u pododjeljku 2.1 u uređivaču datoteka M? i otkucajte komandu who na komandnoj liniji da vidite sadržaj radnog okruženja. Opis varijabli će se pojaviti u komandnom prozoru:

» whos
Naziv Veličina Bajtovi Klasa
f 1x71 568 dvostruki niz
g 1x71 568 dvostruki niz
x 1x71 568 dupli niz
Ukupno je 213 elemenata koji koriste 1704 bajta

Varijable definirane u jednoj programskoj datoteci mogu se koristiti u drugim programskim datotekama i u naredbama koje se izvršavaju iz komandne linije. Naredbe sadržane u datotečnom programu izvode se na dva načina:

  • Iz M-file editora kao što je gore opisano.
  • Iz komandne linije ili druge programske datoteke, koristeći naziv M-datoteke kao naredbu.

Upotreba druge metode je mnogo praktičnija, posebno ako će se kreirana programska datoteka kasnije više puta koristiti. U stvari, kreirana M-fajl postaje komanda koju MatLab razumije. Zatvorite sve grafičke prozore i upišite mydemo u komandnu liniju, pojaviće se grafički prozor koji odgovara komandama programske datoteke mydemo.m. Nakon unosa naredbe mydemo, MatLab izvodi sljedeće radnje.

  • Provjerava da li je unesena naredba ime jedne od varijabli definiranih u vremenu izvođenja. Ako se unese varijabla, prikazuje se njena vrijednost.
  • Ako nije unesena varijabla, tada MatLab traži unesenu naredbu među ugrađenim funkcijama. Ako je naredba ugrađena funkcija, onda se izvršava.

Ako se ne unese ni varijabla ni ugrađena funkcija, onda MatLab počinje tražiti M-datoteku s imenom naredbe i ekstenzijom m. Pretraga počinje sa trenutni imenik(Trenutni direktorij), ako M-datoteka nije pronađena u njemu, onda MatLab pregledava direktorije instalirane u staze pretraživanja(Put). Pronađeni M-fajl se izvršava u MatLabu.

Ako nijedna od gore navedenih radnji nije bila uspješna, tada se u komandnom prozoru prikazuje poruka, na primjer:

» mydem
??? Nedefinirana funkcija ili varijabla "mydem".

U pravilu, M-fajlovi se pohranjuju u korisničkom direktoriju. Da bi ih MatLab sistem pronašao, morate postaviti putanje koje ukazuju na lokaciju M-fajlova.

Napomena 2

Zadržati vlastiti M-fajlovi izvan glavnog MatLab direktorija slijedi iz dva razloga. Prvo, prilikom ponovnog instaliranja MatLab-a, datoteke koje se nalaze u poddirektorijumima glavnog MatLab direktorija mogu biti uništene. Drugo, prilikom pokretanja MatLab-a, svi fajlovi poddirektorija alatne kutije se stavljaju u memoriju računara na neki optimalan način kako bi se povećale performanse. Ako ste napisali M-fajl u ovaj direktorij, onda ga možete koristiti tek nakon ponovnog pokretanja MatLaba.

3. Postavljanje staza

U MatLab verziji 6 .x određuju se trenutni direktorij i putevi pretraživanja. Ova svojstva se postavljaju pomoću odgovarajućeg dijaloški okviri ili komande iz komandne linije.

Trenutni direktorij se određuje u dijaloškom okviru Current Imenik radno okruženje. Prozor je prisutan u radnom okruženju ako je stavka odabrana Current Imenik meni pogled radno okruženje.
Trenutni direktorij se bira sa liste. Ako nije na listi, onda se može dodati iz dijaloškog okvira Pregledaj za folder, poziva se klikom na dugme koje se nalazi desno od liste. Sadržaj trenutnog direktorija je prikazan u tabeli datoteka.

Putanja pretraživanja su definirana u dijaloškom okviru set Put navigator staza, kojem se pristupa sa tačke set Put meni File radno okruženje.

Da biste dodali imenik, kliknite na dugme Dodati Folder Pregledaj za Put odaberite željeni direktorij. Dodavanje direktorija sa svim njegovim poddirektorijumima se vrši klikom na dugme Dodaj sa podmapama. MATLAB traži put. Redoslijed pretraživanja odgovara lokaciji staza u ovom polju, pretražuje se prvi direktorij, put do kojeg se nalazi na vrhu liste. Možete promijeniti redoslijed pretraživanja ili čak ukloniti putanju do direktorija, za što odaberite imenik u polju MATLAB traži put i definirajte njegovu poziciju pomoću sljedećih tipki:
pokret to Top - staviti na vrh liste;
pokret Gore - pomaknuti se za jednu poziciju;
Ukloni - ukloniti sa liste;
pokret Dole - pomeriti se za jednu poziciju naniže;
pokret to dnu - staviti na dno liste.

4. Naredbe za postavljanje staza.

Koraci za postavljanje staza u MatLab 6 .x duple komande. Trenutni direktorij se postavlja naredbom cd, na primjer cd c:\users\igor. Naredba cd, pozvana bez argumenta, ispisuje putanju do trenutnog direktorija. Putanja se postavlja pomoću naredbe path, koja se poziva s dva argumenta:

put (putanja, "c:\users\igor") - dodaje direktorij c:\users\igor sa najnižim prioritetom pretraživanja;
put ("c: \users\igor",path) - dodaje direktorij c:\users\igor sa najvišim prioritetom pretraživanja.

Korišćenje naredbe path bez argumenata dovodi do toga da se na ekranu prikaže lista puteva za pretragu. Možete ukloniti putanju sa liste koristeći naredbu rmpath:

rmpath("c:\users\igor") uklanja putanju do c:\users\igor sa liste putanja.

Napomena 3

Nemojte nepotrebno uklanjati putanje direktorija, posebno one za koje niste sigurni. Uklanjanje može rezultirati činjenicom da neke od funkcija definiranih u MatLabu postanu nedostupne.

Primjer. Kreirajte u korijenskom direktoriju diska D(ili bilo koji drugi pogon ili direktorij u kojem je studentima dozvoljeno da kreiraju vlastite direktorije) direktorij sa vašim prezimenom, npr. WORK_IVANOV, i tamo upišite M-datoteku mydemo.m pod imenom mydemo3.m. Postavite putanje datoteka i demonstrirajte pristupačnost datoteke iz komandne linije. Prijavite rezultate u laboratorijskom izvještaju.

Rješenje:

1. U korijenskom direktoriju diska D kreira se direktorij WORK_IVANOV.
2. M-datoteka mydemo.m je upisana u WORK_IVANOV direktorij pod imenom mydemo3.m.
3. Otvara se okvir za dijalog set Put meni File MatLab radno okruženje.
4. Taster je pritisnut Dodati Folder i u dijalogu koji se pojavi Pregledaj za Put izabran je direktorij WORK_IVANOV.
5. Dodavanje direktorija sa svim njegovim poddirektorijumima se vrši klikom na dugme Dodati sa podmape. U polju se pojavljuje put do dodanog direktorija MATLAB traži put.
6. Da sačuvate putanju, pritisnite taster Sačuvaj dijaloški okvir set Put.
7. Ispravnost svih radnji se provjerava upisivanjem naredbe mydemo3 iz komandne linije. Na ekranu će se pojaviti grafički prozor.

5. Funkcije datoteke

Datotečni programi o kojima smo gore govorili su niz MatLab komandi, nemaju ulazne ili izlazne argumente. Za upotrebu numeričkih metoda i programiranja sopstvene aplikacije u MatLabu, morate biti u mogućnosti pisati funkcije datoteke koje izvode potrebne radnje s ulaznim argumentima i vraćaju rezultat u izlaznim argumentima. Ovaj pododjeljak pruža nekoliko jednostavnih primjera koji će vam pomoći da shvatite kako raditi s funkcijama datoteka. Funkcijski fajlovi, poput datoteka procedura, kreiraju se u uređivaču M-datoteka.

5.1. Funkcije datoteke s jednim ulaznim argumentom

Pretpostavimo da je u proračunima često potrebno koristiti funkciju

Ima smisla jednom napisati funkcijsku datoteku, a zatim je pozvati gdje god je potrebno za procjenu ove funkcije. Otvorite u M-file editoru novi fajl i otkucajte tekst liste

funkcija f = myfun(x)
f= exp(-x)*sqrt((x^2+1)/(x^4+0.1));

Riječ funkcija u prvom redu to specificira dati fajl sadrži funkcijsku datoteku. Prvi red je zaglavlje funkcije, koji domaćini naziv funkcije i liste ulaznih i izlaznih argumenata. U primjeru na listi, ime funkcije je myfun, jedan ulazni argument je x, a jedan izlazni argument je f. Nakon naslova slijedi funkcionalno tijelo(u ovom primjeru sastoji se od jednog reda), gdje se izračunava njegova vrijednost. Važno je da se izračunata vrijednost upiše u f. Uključena tačka i zarez za sprečavanje izlaza dodatne informacije na ekran.

Sada spremite datoteku u svoj radni direktorij. Imajte na umu da je odabir stavke Sačuvaj ili Sačuvaj as meni File dovodi do pojave dijaloškog okvira za spremanje datoteke, u polju File ime koji već sadrži naziv myfun. Nemojte ga mijenjati, sačuvajte funkcijsku datoteku u datoteku s predloženim imenom.

Sada se kreirana funkcija može koristiti na isti način kao i ugrađene sin, cos i druge, na primjer, iz komandne linije:

»y=myfun(1.3)
Y =
0.2600

Poziv vlastitih funkcija može se izvršiti iz fajl-programa i iz druge fajl-funkcije.

Upozorenje

Direktorij koji sadrži funkcijsku datoteku mora biti trenutni, ili se putanja do njega mora dodati stazi pretraživanja, inače MatLab jednostavno neće pronaći funkciju ili će umjesto nje pozvati drugu s istim imenom (ako je u direktorije koji se mogu pretraživati).

Funkcijski fajl prikazan na listi ima jedan značajan nedostatak. Pokušaj evaluacije vrijednosti funkcije iz niza rezultira greškom, a ne nizom vrijednosti, kao što se događa kada se procjenjuju ugrađene funkcije.

» x = ;
» y = myfun(x)
??? Greška u korištenju ==> ^
Matrica mora biti kvadratna.
Greška u ==> C:\MATLABRll\work\myfun.m
Na liniji 2 ==> f = exp(-x)*sqrt((x^2+1)/(x^4+1));

Ako ste naučili kako raditi s nizovima, otklanjanje ovog nedostatka neće uzrokovati poteškoće. Vi samo trebate koristiti operacije po elementima kada izračunavate vrijednost funkcije.
Izmijenite tijelo funkcije kao što je prikazano na sljedećem popisu (ne zaboravite da sačuvate promjene u datoteci myfun.m).

funkcija f = myfun(x)
f = exp(-x).*sqrt((x.^2+1)./(x.^4+0.1));

Sada argument funkcije myfun može biti ili broj ili vektor ili matrica vrijednosti, na primjer:

» x = ;
» y = myfun(x)
Y =
0.2600 0.0001

Varijabla y, u koju je upisan rezultat poziva funkcije myfun, automatski postaje vektor tražene veličine.

Iscrtajte funkciju myfun na segmentu iz komandne linije ili pomoću programa za datoteke:

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

MatLab pruža još jedan način rada sa funkcijama datoteka - koristeći ih kao argumente za neke naredbe. Na primjer, da biste nacrtali graf, koristite specijalnu funkciju fplot, koja zamjenjuje gore navedeni niz naredbi. Kada se pozove fplot, ime funkcije čiji dijagram treba iscrtati je zatvoreno apostrofima, granice iscrtavanja su specificirane u vektoru reda od dva elementa

fplot("myfun", )

Iscrtajte myfun sa plotom i fplotom na istim osama, uz zadržavanje. Imajte na umu da graf iscrtan pomoću fplot preciznije odražava ponašanje funkcije, budući da sam fplot preuzima korak argumenta, smanjujući ga u područjima brze promjene prikazane funkcije. Prijavite rezultate u laboratorijskom izvještaju.

5.2. Funkcije datoteke s višestrukim ulaznim argumentima

Pisanje funkcija datoteke s višestrukim ulaznim argumentima gotovo je isto kao i pisanje jednog argumenta. Svi ulazni argumenti se stavljaju u listu razdvojenu zarezima. Na primjer, sljedeći popis sadrži funkcijsku datoteku koja izračunava dužinu vektora radijusa tačke u 3D prostoru
Ispis funkcije datoteke s više argumenata

funkcija r = radijus3(x, y, z)
r = sqrt(x.^2 + y.^2 + z.^2);

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

Pored funkcija s višestrukim ulaznim argumentima, MatLab vam omogućava kreiranje funkcija koje vraćaju više vrijednosti, tj. ima više izlaznih argumenata.

5.3. Funkcije datoteke s više izlaznih argumenata

Funkcije datoteke s više izlaznih argumenata korisne su za procjenu funkcija koje vraćaju više vrijednosti (u matematici se nazivaju vektorske funkcije). Izlazni argumenti se dodaju, odvojeni zarezima, na listu izlaznih argumenata, a sama lista je zatvorena u uglastim zagradama. Dobar primjer je funkcija koja pretvara vrijeme dato u sekundama u sate, minute i sekunde. Ova funkcijska datoteka je prikazana na sljedećem popisu.

Popis funkcije za pretvaranje sekundi u sate, minute i sekunde

funkcija = hms(sek)
sat = sprat(sec/3600);
minuta = sprat((sec-sat*3600)/60);
sekunda = sek-sat*3600 minuta*60;

Prilikom pozivanja funkcija datoteke s više izlaznih argumenata, rezultat bi trebao biti zapisan u vektor odgovarajuće dužine:

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

6. Osnove programiranja u MatLabu

Funkcijska datoteka i programska datoteka korišteni u prethodnim pododjeljcima su najjednostavniji primjeri programa.Sve MatLab naredbe sadržane u njima se izvršavaju sekvencijalno. Za rješavanje mnogih ozbiljnijih problema potrebno je pisati programe u kojima se radnje izvode ciklično ili se, ovisno o određenim uvjetima, izvršavaju različiti dijelovi programa. Razmotrimo glavne operatore koji određuju sekvence izvršavanja MatLab komandi. Operatori se mogu koristiti i u procedurama datoteka i u funkcijama, što vam omogućava da kreirate programe sa složenom strukturom grananja.

6.1. Naredba petlje za

Operator je dizajniran da izvrši određeni broj radnji koje se ponavljaju. Najjednostavnija upotreba for izjave je kako slijedi:

za count = start:step:final
MatLab komande
kraj

Ovdje je count varijabla petlje, start je njena početna vrijednost, final je njena konačna vrijednost, a step je korak za koji se broj povećava svaki put kada uđe u petlju. Petlja se završava čim vrijednost count postane veća od konačne. Varijabla petlje može uzeti ne samo vrijednosti cijelih brojeva, već i realne vrijednosti bilo kojeg predznaka. Analizirajmo primjenu operatora ciklusa for na nekim tipičnim primjerima.
Neka se traži da se izvede familija krivulja za , koja je data funkcijom u zavisnosti od parametra za vrijednosti parametara od -0,1 do 0,1.
Ukucajte tekst datoteke procedure u M-file editor i sačuvajte ga u FORdem1.m datoteci i pokrenite je za izvršenje (iz M-file editora ili iz komandne linije tako što ćete u njega upisati komandu FORdem1 i pritisnuti ):

% fajl-program za konstruisanje porodice krivulja
x = ;
za a = -0,1:0,02:0,1
y = exp(-a*x).*sin(x);
Čekaj
plot(x, y)
kraj

Napomena 4

M-file editor automatski predlaže postavljanje naredbi unutar petlje, uvučene od lijeve margine. Iskoristite ovu priliku za praktičnost rada sa tekstom programa.

Kao rezultat izvršavanja FORdem1, pojavit će se grafički prozor koji sadrži potrebnu porodicu krivulja.

Napišite programski fajl za izračunavanje sume

Algoritam za izračunavanje sume koristi akumulaciju rezultata, tj. prvo je zbir nula ( S= 0), zatim u varijablu k jedinica je upisana, 1/ k! se dodaje u S a rezultat se vraća nazad S. Dalje k povećava se za jedan, a proces se nastavlja sve dok zadnji član ne bude 1/10!. Datotečni program Fordem2, prikazan na sljedećem popisu, izračunava željeni iznos.

Ispis fajl-programa Fordem2 za izračunavanje sume

% fajl-program za obračun sume
% 1/1!+1/2!+ … +1/10!

% Resetujte S na akumuliranu količinu
S = 0;
% akumulacije količine u ciklusu
za k = 1:10
S = S + 1/faktorski(k);
Kraj
% ispis rezultata u komandni prozor S

Otkucajte programsku datoteku u M-file editoru, sačuvajte je u trenutnom direktoriju u datoteci Fordem2.m i izvršite. Rezultat će biti prikazan u komandnom prozoru, jer u poslednjem redu fajl-programa S sadrži bez tačke i zareza za prikaz vrijednosti varijable S

Imajte na umu da se preostali redovi programske datoteke, koji mogu uzrokovati prikazivanje međuvrijednosti, završavaju tačkom i zarezom kako bi se potisnuo izlaz u komandni prozor.

Prva dva reda sa komentarima nisu slučajno odvojena praznim redom od ostatka teksta programa. Prikazuju se kada korisnik, koristeći naredbu za pomoć iz komandne linije, dobije informaciju o tome šta Fordem2 radi.

>>helpFordem2
fajl-program za izračunavanje sume
1/1!+1/2!+ … +1/10!

Kada pišete datoteke programa i funkcije datoteka, nemojte zanemariti komentare!
Sve varijable koje se koriste u datotečnom programu postaju dostupne u radnom okruženju. To su takozvane globalne varijable. S druge strane, fajl program može koristiti sve varijable unesene u radnom okruženju.

Razmotrimo problem izračunavanja sume, sličan prethodnom, ali u zavisnosti od varijable x

Da biste izračunali ovaj iznos u programu za datoteke Fordem2, trebate promijeniti liniju unutar for petlje u

S = S + x.^k/faktorski(k);

Prije pokretanja programa, morate definirati varijablu x na komandnoj liniji sa sljedećim naredbama:

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

As x može biti vektor ili matrica, budući da su operacije po elementima korištene u programu za datoteke Fordem2 prilikom akumuliranja sume.

Prije pokretanja Fordem2, potrebno je dodijeliti varijablu x neku vrijednost, a da biste izračunali zbir, na primjer, iz petnaest pojmova, morat ćete unijeti izmjene u tekst programa datoteke. Mnogo je bolje napisati generičku funkciju datoteke koja će imati vrijednost kao ulazni argument x i gornja granica iznosa, i izlaz - vrijednost iznosa S(x). Funkcijska datoteka sumN prikazana je na sljedećem popisu.

Listing file-funkcija za izračunavanje sume

funkcija S = sumN(x, N)
% funkcija datoteke za izračunavanje sume
% x/1!+x^2/2!+ … +x^N/N!
% upotrebe: S = sumN(x, N)

% resetujte S na akumulirani iznos
S = 0;
% akumulacije količine u ciklusu
za m = 1:1:N
S = S + x.^m/faktorski(m);
kraj

Korisnik može saznati o korištenju funkcije sumN tako što u komandnu liniju upiše help sumN. Prva tri reda sa komentarima biće prikazana u komandnom prozoru, odvojeni od teksta funkcijske datoteke praznim redom.

Imajte na umu da varijable funkcije datoteke nisu globalne (m u funkcijskoj datoteci je sumN). Pokušaj pregleda vrijednosti varijable m iz komandne linije rezultira porukom da m nije definirano. Ako postoji globalna varijabla s istim imenom u radnom okruženju, definirana iz komandne linije ili u datotečnom programu, onda ona ni na koji način nije povezana s lokalnom varijablom u funkciji datoteke. U pravilu je bolje napisati vlastite algoritme u obliku funkcija datoteka tako da varijable koje se koriste u algoritmu ne mijenjaju vrijednosti globalnih varijabli okruženja istog imena.

For petlje mogu biti ugniježđene jedna unutar druge, ali varijable ugniježđenih petlji moraju biti različite.

Petlja for je korisna za izvođenje ponovljenih sličnih radnji kada je njihov broj unaprijed određen. Fleksibilnija while petlja vam omogućava da zaobiđete ovo ograničenje.

6.2. while naredba petlje

Razmotrimo primjer za izračunavanje sume, sličan primjeru iz prethodni stav. Potrebno je pronaći zbir niza za dati x(proširivanje u seriji):
.

Zbir se može akumulirati sve dok termini nisu premali, recimo više po modulu.Ovdje je neizostavna petlja for, jer broj pojmova nije unaprijed poznat. Rješenje je korištenje while petlje koja radi sve dok je uvjet petlje istinit:

uvjet petlje while
MatLab komande
kraj

U ovom primjeru, uvjet petlje pretpostavlja da je trenutni član veći od . Znak veće od (>) se koristi za pisanje ovog uslova. Tekst funkcije datoteke mysin, koja izračunava zbir niza, prikazan je na sljedećem popisu.

Listing file-function mysin, koja izračunava sinus proširenjem serije

funkcija S = mysin(x)
% Izračunavanje sinusa proširenjem serije
% Upotreba: y = mysin(x), -pi

S = 0;
k = 0;
dok abs(x.^(2*k+1)/faktorski(2*k+1))>1.0e-10
S = S + (-1)^k*x.^(2*k+1)/faktorski(2*k+1);
k = k + 1;
kraj

Imajte na umu da while petlja, za razliku od for, nema varijablu petlje, tako da smo morali dodijeliti nulu k prije početka petlje, i povećati k za jedan unutar petlje.
Uslov petlje while može sadržavati više od samog znaka >. Za postavljanje uslova za izvršenje ciklusa, dozvoljene su i druge relacione operacije, kao što je prikazano u tabeli. jedan.

Tabela 1. Operacije odnosa

Složeniji uslovi se specificiraju pomoću logičkih operatora. Na primjer, uvjet se sastoji u istovremenom ispunjavanju dvije nejednakosti i , a piše se pomoću logičkog operatora i

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

ili ekvivalentno sa &

(x >= -1) & (x< 2)

Logički operatori i primjeri njihove upotrebe dati su u tabeli. 2.

Tablica 2. Logički operatori

Operater

Pisanje u MatLab

Ekvivalentna notacija

Logika "I"

i (x< 3, k == 4)

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

Logično "ILI"

Ili (x==1,x==2)

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

Negativno "NE"

Kada se računa zbir beskonačnog niza, ima smisla ograničiti broj članova. Ako se niz razilazi zbog činjenice da njegovi članovi ne teže nuli, tada uslov za malu vrijednost trenutnog člana možda nikada neće biti ispunjen i program će se zapetljati. Izvršite zbrajanje dodavanjem ograničenja na broj pojmova u uvjetu while petlje mysin funkcijske datoteke:

dok (abs(x.^(2*k+1)/faktorski(2*k+1))>1.0e-10)&(k<=10000))

ili u ekvivalentnom obliku

dok i(abs(x.^(2*k+1)/faktorski(2*k+1))>1.0e-10), k<=10000)

Organizacija radnji koje se ponavljaju u obliku ciklusa čini program jednostavnim i razumljivim, međutim, često je potrebno izvršiti jedan ili drugi blok naredbi u zavisnosti od određenih uslova, tj. koristiti algoritam grananja.

6.3. Uslovna izjava if

Uslovni operator ako omogućava vam da kreirate algoritam grananja za izvršavanje komandi, u kojem, pod određenim uslovima, radi odgovarajući blok naredbi ili MatLab komandi.

Naredba if može se koristiti u svom jednostavnom obliku za izvršavanje bloka naredbi kada je neki uvjet ispunjen, ili u konstrukciji if-elseif-else za pisanje algoritama grananja.
Neka je potrebno procijeniti izraz . Recimo da računate u realnim brojevima i želite da prikažete upozorenje da je rezultat kompleksan broj. Prije izračunavanja funkcije, trebate provjeriti vrijednost argumenta x i prikazati upozorenje u komandnom prozoru ako modul x ne prelazi jedan. Ovdje je potrebno koristiti uslovni if ​​naredbu, čija primjena u najjednostavnijem slučaju izgleda ovako:

ako stanje
MatLab komande
kraj

Ako je uvjet ispunjen, tada se implementiraju MatLab komande smještene između if i end, a ako uvjet nije ispunjen, tada se vrši prijelaz na komande koje se nalaze nakon kraja. Prilikom snimanja stanja koriste se operacije date u tabeli 1. jedan.

Funkcijska datoteka koja provjerava vrijednost argumenta prikazana je na sljedećem popisu. Komanda upozorenja se koristi za prikaz upozorenja u komandnom prozoru.

Lista funkcija Rfun datoteke koja provjerava vrijednost argumenta

funkcija f = Rfun(x)
% izračunava sqrt(x^2-1)
% ispisuje upozorenje ako je rezultat složen
% upotrebe y = Rfun(x)

% provjera argumenata
ako abs(x)<1
upozorenje("složen rezultat")
kraj
% evaluacija funkcije
f = sqrt(x^2-1);

Sada pozivanje Rfun sa argumentom manjim od jedan će ispisati upozorenje u komandnom prozoru:

>> y = Rfun(0,2)
rezultat je složen
y=
0 + 0,97979589711327i

Funkcijska datoteka Rfun samo upozorava da je njena vrijednost složena i svi proračuni s njom se nastavljaju. Ako složeni rezultat znači grešku u proračunu, tada bi izvršavanje funkcije trebalo prekinuti pomoću naredbe error umjesto upozorenja.

6.4. Naredba o grani if-elseif-else

AT opšti slučaj primjena if-elseif-else izraza grane izgleda ovako:

ako je uslov 1
MatLab komande
elseif uslov 2
MatLab komande
elseif uslov 3
MatLab komande
. . . . . . . . . . .
elseif uslov N
MatLab komande
ostalo
MatLab komande
kraj

U zavisnosti od performansi jednog ili drugog N uslovima, odgovarajuća grana programa radi ako ništa od N uslove, onda se implementiraju MatLab komande postavljene nakon else. Nakon izvršenja bilo koje grane, naredba izlazi. Može biti bilo koji broj grana ili samo dvije. U slučaju dvije grane, koristi se završni else, a elseif se preskače. Izjava uvijek mora završiti sa end.
Primjer korištenja if-elseif-else naredbe prikazan je na sljedećem popisu.

funkcija ifdem(a)
% primjer korištenja if-elseif-else naredbe

ako (a == 0)
upozorenje ("a jednako nuli")
inače ako je a == 1
upozorenje("i jednako jedan")
inače ako je a == 2
upozorenje ("jednako dva")
inače ako je a >= 3
upozorenje("a, veće ili jednako tri")
ostalo
upozorenje("a je manje od tri, i nije jednako nuli, jedan, dva")
kraj

6.5. Operater podružnice prekidač

Naredba switch se može koristiti za izvođenje višestrukog odabira ili grananja. . To je alternativa naredbi if-elseif-else. Općenito, primjena naredbe switch grana izgleda ovako:

prekidač switch_expression
vrijednost slučaja 1
MatLab komande
vrijednost slučaja 2
MatLab komande
. . . . . . . . . . .
vrijednost slučaja N
MatLab komande
slučaj (vrijednost N+1, vrijednost N+2, ...)
MatLab komande
. . . . . . . . . . . .
slučaj (vrijednost NM+1, vrijednost NM+2,…)
inače
MatLab komande
kraj

AT dati operator prvo se procjenjuje vrijednost switch_expression (može biti skalarna numerička vrijednost ili niz znakova). Ova vrijednost se zatim uspoređuje sa vrijednostima: vrijednost 1, vrijednost 2, ..., vrijednost N, vrijednost N+1, vrijednost N+2, ..., vrijednost NM+1, vrijednost NM+2, ... ( koji takođe može biti numerički ili niz) . Ako se pronađe podudaranje, tada se izvršavaju MatLab naredbe koje slijede odgovarajuću ključnu riječ case. Inače, MatLab naredbe između else i end ključnih riječi se izvršavaju.

Redovi sa ključna riječ malih i velikih slova može biti koliko god želite, ali mora postojati jedan red sa ključnom riječi inače.

Nakon izvršenja bilo koje grane, prekidač izlazi, dok se vrijednosti ​​specificirane u drugim slučajevima ne provjeravaju.

Upotreba prekidača je ilustrovana sljedećim primjerom:

funkcija demswitch(x)
a = 10/5 + x
prekidač a
slučaj-1
upozorenje("a = -1")
slučaj 0
upozorenje("a = 0")
slučaj 1
upozorenje("a = 1")
slučaj (2, 3, 4)
upozorenje ("a je 2 ili 3 ili 4")
inače
upozorenje("a nije jednako -1, 0, 1, 2, 3, 4")
kraj

>>x=-4
demswitch(x)
a =
1
upozorenje: a = 1
>>x=1
demswitch(x)
a =
6
upozorenje: a nije jednako -1, 0, 1, 2, 3, 4

6.6. Izjava o prekidu petlje break

Prilikom organiziranja cikličkih proračuna treba voditi računa da se unutar ciklusa ne pojave greške. Na primjer, recimo da je dat niz x koji se sastoji od cijelih brojeva i potrebno je formirati novi niz y prema pravilu y(i) = x(i+1)/x(i). Očigledno, problem se može riješiti pomoću for petlje. Ali ako je jedan od elemenata originalnog niza jednak nuli, tada će podjela rezultirati inf, a naknadni proračuni mogu biti beskorisni. Ova situacija se može spriječiti izlaskom iz petlje ako je trenutna vrijednost x(i) nula. Sljedeći programski fragment pokazuje upotrebu naredbe break za prekid petlje:

za x = 1:20
z=x-8;
ako je z==0
break
kraj
y = x/z
kraj

Čim varijabla z postane 0, petlja se prekida.

Naredba break vam omogućava da prijevremeno prekinete izvršavanje for i while petlji. Izvan ovih petlji, naredba break ne radi.

Ako se naredba break koristi u ugniježđenoj petlji, onda izlazi samo iz unutrašnje petlje.

Referentna knjiga svojstava grafičkih objekata

standardni dijaloški okviri.

Funkcije za kreiranje dijaloških okvira

MATLAB definira 15 funkcija za kreiranje standardnih dijaloških okvira. Izgled dijaloških okvira može se prilagoditi specificiranjem ulaznih argumenata za ove funkcije. Ispod su primjeri dijaloških okvira i nazivi odgovarajućih funkcija s njihovom svrhom.

Dijaloški okviri za poruke:

errordlg - kreirajte dijaloški okvir s porukom o grešci;

helpdlg - kreiranje dijaloškog okvira za prikaz informacija;

warndlg - kreiranje dijaloškog okvira upozorenja;

msgbox - kreiranje dijaloškog okvira za prikaz poruke.

Okvir za dijalog za potvrdu(questdlg funkcija)

Dijaloški okvir za unos informacija(inputdlg funkcija)

Dijaloški okvir za odabir sa liste(listdlg funkcija)

Dijaloški okviri za podešavanje opcija štampanja

pagesetupdlg - prikazuje dijaloški okvir sa više stranica za postavljanje opcija stranice i način štampanja sadržaja grafičkog prozora;

printdlg - Prikazuje dijaloški okvir za odabir opcija štampanja i postavki štampača.

Dijaloški okviri za otvaranje i spremanje datoteke

uigetfile - Prikaži dijaloški okvir za otvaranje datoteke

uiputfile - prikaz dijaloga za spremanje datoteke

Dijaloški okvir za odabir direktorija(funkcija uigetdir)

Dijalog za odabir fonta(funkcija uisetfont)

Dijaloški okvir za odabir boja(funkcija uisetcolor)

Prozor sa trakom napretka(funkcija trake čekanja)

Pored navedenih funkcija, postoji i funkcija dijaloga dizajnirana da kreira prazan grafički prozor. Svojstva ovog grafičkog prozora mogu se postaviti korištenjem ulaznih argumenata funkcije dijaloga.

Razmotrimo upotrebu standardnih dijaloških okvira koristeći prozor za otvaranje datoteke kao primjer.

Primjer myview aplikacije sa dijalogom za otvaranje datoteke

Kreirajmo myview aplikaciju sa grafičkim korisničkim interfejsom koji vam omogućava da vidite grafičke datoteke. Prozor pokrenute aplikacije prikazan je na sl. 1. Pritiskom na dugme Otvori sliku otvara se standardni dijaloški okvir Select File to Open. Grafička datoteka odabrana u njemu se prikazuje u prozoru aplikacije. Klikom na dugme Zatvori sliku briše se prozor aplikacije myview.

Rice. 1. Prozor aplikacije myview.

U okruženju GUIDE, postavite ose i dva dugmeta na prazno polje prozora aplikacije kao što je prikazano na slici 2. U Inspektoru svojstava označite lijevo dugme oznakom btnOpen i postavite njegovo svojstvo String na Open Image. Slično za desno dugme: oznaka - btnClose i String - Zatvori sliku.

Osi će biti potrebne za prikaz slike pomoću funkcije slike. Koristićemo poziv niskog nivoa funkcije slike, koja pretpostavlja da je smer ose obrnut. y tako da slika ne bude naopako. Dakle, u inspektoru imovine promijenite smjer ose y postavljanjem svojstva YDir osi na obrnuto. Da biste sakrili linije mreže i osovine, učinite osi nevidljivima tako što ćete ih postaviti na Vidljivo vlasništvo isključeno.

Rice. 2. Priprema prozora aplikacije u okruženju GUIDE.

Sačuvajte aplikaciju pod imenom myview i programirajte događaje povratnog poziva dugmadi Otvori sliku i Zatvori sliku.

Kada korisnik klikne na Open Image, trebao bi se pojaviti dijalog za otvaranje datoteke i nakon odabira datoteke, slika bi trebala biti prikazana na osama. Koristimo standardni dijalog za otvaranje datoteke kreiran funkcijom uigetfile. Najjednostavniji način da ga nazovete je na sljedeći način:

Uigetfile

Ako je korisnik odabrao datoteku i zatvorio prozor pritiskom na dugme Otvori u prozoru, tada prvi izlazni argument FileName vraća ime datoteke (sa ekstenzijom), a drugi PathName vraća putanju do datoteke. Ako korisnik nije odabrao fajl (pritisnuo Odustani, ili zatvorio prozor sa dugmetom sa krstićem na naslovnoj traci, ili pritisnuo ), tada će varijabla FileName biti nula. Stoga, daljnje radnje zavise od vrijednosti FileName.

Ako je datoteka odabrana, onda

1) formira puni naziv datoteke;

3) prikazati sliku na osi koristeći funkciju slike.

Ako datoteka nije odabrana, ništa ne treba raditi.

Događaj povratnog poziva dugmeta Close Image može se sastojati od samo jedne izjave - poziva cla funkcije za brisanje osi.

Programirajte podfunkcije za rukovanje događajem povratnog poziva dugmadi Otvori sliku i Zatvori sliku na sljedeći način.

Funkcija btnOpen_Callback(hObject, eventdata, handles) % Rukovanje događajem povratnog poziva dugmeta Open Image % Dobiti ime datoteke i putanju = uigetfile; % Provjera da li je datoteka odabrana ako je FileName~=0 % Formiranje pune putanje do datoteke Puno ime = ; % Čitanje slike iz grafičke datoteke Pict = imread(FullName); % Nacrtajte sliku na osi image("CData", Pict) završna funkcija btnClose_Callback(hObject, eventdata, handles) % Rukovanje događajem povratnog poziva dugmeta Close Image % Obrišite kla osi

Pokrenite aplikaciju myview. Kada kliknete na dugme Otvori sliku, pojavljuje se dijalog Odaberi datoteku za otvaranje. Međutim, u okviru koji prikazuje sadržaj trenutni folder grafičke datoteke nisu vidljive. To je zato što, prema zadanim postavkama, filter datoteka (padajuća lista tipova datoteka) sadrži string "Sve MATLAB datoteke" i vidljive su samo datoteke sa ekstenzijama prihvaćenim u MATLAB-u. Naravno, svaki put kada otvorite slikovnu datoteku, možete odabrati red "Sve datoteke (*.*)" u padajućoj listi Tip datoteke da biste prikazali sve datoteke u trenutnoj mapi. Ali mnogo je bolje odmah kreirati dijaloški okvir za otvaranje datoteke prilagođen određenim ekstenzijama. Na primjer, da biste prikazali datoteke sa ekstenzijama bmp i jpg, trebali biste pozvati funkciju uigetfile sa ulaznim argumentom - nizom koji sadrži šablone sa željenim ekstenzijama *.bmp i *.jpg odvojene tačkom i zarezom:

Uigetfile("*.bmp;*.jpg");

U podfunkciji btnOpen_Callback, promijenite referencu na uigetfile u gore navedeno i osigurajte da padajuća lista vrste datoteka dijaloga za otvaranje datoteke sadrži samo dva niza: "*.bmp;*.jpg" (podrazumevano) i "Sve datoteke (*.*)".

Funkcija uigetfile omogućava fleksibilniju kontrolu nad postavkama filtera datoteka. Pogledat ćemo ih u odjeljku opisa funkcija za kreiranje standardnih dijaloških okvira. Hajde sada da razgovaramo o tome kako implementirati mogućnost odabira više datoteka odjednom u standardnom dijaloškom okviru za otvaranje datoteke.

Odabir više datoteka u dijaloškom okviru za otvaranje datoteke. Razmjena podataka između podfunkcija GUI aplikacije.

U ovom dijelu ćemo razmotriti dva pitanja:

1) kako organizovati izbor nekoliko fajlova u standardnom otvorenom prozoru datoteke i pročitati njihov sadržaj u odgovarajući niz;

Odgovor na prvo pitanje je jednostavan. Moramo pozvati funkciju uigetfile s dodatnim parom ulaznih argumenata "MultiSelect" i "on":

Uigetfile(..., "MultiSelect", "on")

Ovisno o izboru korisnika, izlazni argumenti će biti sljedećih tipova.

  • Ako je korisnik odabrao više datoteka u dijaloškom okviru za otvaranje datoteke (isticanjem ili klikom i držanjem ili ), tada će FileName postati niz ćelija, čija svaka ćelija sadrži niz s imenom datoteke (i ekstenzijom), a PathName će biti niz koji sadrži putanju do ovih datoteka (puta do svih datoteka je ista, tako da PathName ne bi trebao biti niz ćelija).
  • Ako korisnik odabere jednu datoteku u dijaloškom okviru za otvaranje datoteke, tada će FileName biti niz sa imenom datoteke (sa ekstenzijom), a PathName će biti niz sa putanjom do datoteke (pogledajte prethodni odjeljak).
  • Ako nije napravljen nijedan odabir, tada je FileName null.

Drugi problem (razmjena podataka između podfunkcija za rukovanje događajima) često se javlja prilikom programiranja GUI aplikacija. Rešava se na sledeći način. Podaci koje je potrebno sačuvati prilikom izvršavanja neke podfunkcije upisuju se u polja strukture ručki. Zatim, u istoj podfunkciji, struktura ručki se pohranjuje pomoću funkcije guidata:

guidata (gcbo, ručke)

Da biste primili podatke u drugoj podfunkciji, trebali biste se obratiti odgovarajućem polju strukture ručki. Na primjer, aplikacija ima dvije podfunkcije btnA_Callback i btnB_Callback. Prilikom izvršavanja podfunkcije btnA_Callback kreiran je numerički niz koji će biti potreban u podfunkciji btnB_Callback. Tada bi ove podfunkcije trebale imati sljedeći oblik.

Funkcija btnA_Callback(hObject, eventdata, handles) . . . handles.data = ; guidata(gcbo, ručke) . . . funkcija btnB_Callback(hObject, eventdata, handles) . . . bar(handles.data) . . .

Pogledajmo aplikaciju myview kreiranu u prethodnom odeljku i proširimo njene mogućnosti. Nadograđena aplikacija bi trebala omogućiti otvaranje nekoliko grafičkih datoteka odjednom i njihovo pregledavanje jedne po jedne. Nakon odabira nekoliko grafičkih datoteka u prozoru aplikacije, prikazuje se samo jedan, a klikom na dugme (nazovimo ga Next) dolazi do pojave sljedeće slike.

U okruženju GUIDE, na prazno mesto prozora aplikacije myview (pogledajte sliku 2 u prethodnom odeljku), dodajte dugme sa oznakom btnNext i oznakom Next (pogledajte sliku 1). U Inspektoru svojstava, učinite ga nedostupnim tako što ćete svojstvo Omogući isključiti. Biće dostupan tokom rada aplikacije ako je korisnik odabrao nekoliko grafičkih datoteka za pregled.

Rice. 1. Prozor aplikacije Myview sa dugmetom Dalje

Sada moramo modifikovati podfunkciju btnOpen_Callback da upravlja događajem povratnog poziva dugmeta Open Image i programira događaj povratnog poziva dugmeta Next. Prilikom rukovanja odabirom datoteke (ili datoteke) od strane korisnika u dijaloškom okviru za otvaranje datoteke, razmotrite sve mogućnosti: odabrano više datoteka, odabrana samo jedna datoteka, nijedna datoteka nije odabrana.

Ako je odabrano više grafičkih datoteka (tj. niz FileName je niz ćelija), tada pročitajte slike u niz ćelija i pohranite ih u polje Pict strukture ručki. Broj otvorenih grafičkih datoteka (tj. dužina niza FileName) će biti pohranjen u polju ImageNum strukture ručki. Osim toga, potreban nam je broj trenutne slike, da bismo zapamtili koji ćemo kreirati CurImage polje strukture ručki.

Nakon otvaranja fajlova, prikazaćemo sadržaj prvog u prozoru aplikacije. Ako je otvoreno više datoteka, tada ćemo dugme Sljedeće učiniti dostupnim, a ako je samo jedan, onda ćemo učiniti Sljedeći nedostupnim.

Prilikom rukovanja događajem povratnog poziva dugmeta Sljedeće, obrisati ćemo ose i prikazati sljedeću sliku na njima. Ako je trenutna slika posljednja, prikažite prvu.

Ispod je tekst podfunkcija btnOpen_Callback i btnNext_Callback. Podfunkcija btnClose_Callback ostaje nepromijenjena.

Funkcija btnOpen_Callback(hObject, eventdata, handles) % Rukovanje događajem povratnog poziva dugmeta Open Image % Dobijte nazive datoteka i putanje (ili jedno ime datoteke i putanju) = uigetfile("*.bmp;*.jpg", "MultiSelect" , "on "); % Saznajte koliko je datoteka odabrano ako je iscell(FileName) % FileName je niz ćelija, tako da je odabrano nekoliko datoteka % upišite broj odabranih datoteka u polje ImageNum ručke strukture ručke.ImageNum = length(FileName); % Za svaki fajl u petlji formiramo puno ime % i čitamo njegov sadržaj u k-tu ćeliju niz ćelija, % koji je pohranjen u Pict polju ručke strukture handles.Pict = ; % prvo učini niz praznim za k=1:handles.ImageNum FullName = ; handles.Pict(k) = imread(Puno ime); kraj % Prva slika je trenutna ručka.CurImage = 1; % Prikažite ga na slici osi("CData", handles.Pict(handles.CurImage)) % Pohranite strukturu ručki da biste joj pristupili u btnNext_Callback podfunkciju guidata(gcbo, handles) % Omogućite Sljedeći set gumba(handles.btnNext, "Enable ", "on") else % Odabrana je samo jedna datoteka ili nijedna ako je FileName~=0 % Odabran je jedan fajl, formiramo punu putanju do njega FullName = ; % Čitanje slike u varijablu Pict (nema potrebe za strukturom ručki) Pict = imread(FullName); % Prikaži sliku na slici osi("CData", Pict) % Onemogući Sljedeći set gumba(handles.btnNext, "Enable", "off") end end funkcije btnNext_Callback(hObject, eventdata, handles) % Rukovanje događajem povratnog poziva dugmeta Otvori sliku % Provjerite koja je slika trenutna ako handles.CurImage

Bilješka

Myview aplikacija se može dodatno poboljšati, na primjer, nakon odabira datoteka i prije prikazivanja prve, dobro je očistiti ose. Također treba pretpostaviti da je korisnik izabrao negrafičke datoteke.

Pomoć o funkcijama za kreiranje dijaloških okvira.

Kreiranje dijaloškog okvira greške - errordlg

Za kreiranje standardnog dijaloškog okvira greške koristite funkciju errordlg. Najčešća opcija poziva

h = errordlg("Tekst poruke", "Naslov prozora").

h je pokazivač na kreirani grafički prozor sa porukom o grešci. na primjer

h = errordlg("Deljenje nulom", "Kalkulator");

Vodi do ovog prozora sa pokazivačem h:

Prozor ostaje na ekranu dok se ne zatvori pomoću dugmeta OK, tastera, dugmeta sa krstićem na naslovnoj traci ili korišćenjem kontekstnog menija naslova.

Prozor poruke o grešci nije modalan (omogućava vam navigaciju do drugih prozora MATLAB aplikacija). Da biste ga učinili modalnim, nakon kreiranja prozora sa funkcijom errordlg, postavite svojstvo WindowStyle grafičkog prozora na "modal": set(h, "WindowStyle", "modal")

Drugi način za kreiranje modalnog okvira s porukom o grešci je korištenje funkcije msgbox, koja je opisana u nastavku.

Veličina prozora se bira automatski u zavisnosti od dužine redova teksta, veoma dugi redovi se prelamaju. Da biste primili višelinijsku poruku razbijenu u redove na zadati način, morate navesti ćelijski niz linija:

h = errordlg(("Pogrešan format podataka";"ili"; "nepodudarni podaci"), "dlgname")

Sekvencijalno kreiranje prozora sa porukama o grešci sa istim naslovom:

h = errordlg("Deljenje nulom", "Kalkulator"); ... h = errordlg("Neispravan rad", "Kalkulator");

dovodi do stvaranja različitih prozora sa porukama o greškama. Da biste aktivirali prozor (postavite ga na vrh drugih prozora) i prikazali novu poruku u njemu, umjesto kreiranja novog prozora, pruža se poziv errordlg s trećim argumentom "on":

h = errordlg("Deljenje nulom", "Kalkulator"); ... h = errordlg(" Neispravna operacija ", "Kalkulator", "uključeno"); % aktivirati stari prozor

Naravno, ako je stari prozor zatvoren, onda h = errordlg(..., "on") jednostavno kreira novi.

Nakon što se prikaže dijaloški okvir o grešci, aplikacija nastavlja s radom. Često se postavlja pitanje: kako obustaviti izvršavanje dok se dijaloški okvir ne zatvori. Ovo se radi pomoću funkcije waitfor, koja pauzira aplikaciju dok se određeni grafički objekt ne ukloni. Pointer na ovaj objekt (u našem slučaju prozor greške) se prosljeđuje kao ulazni argument funkciji waitfor:

h = errordlg("Deljenje nulom", "Kalkulator"); set(h, "WindowStyle", "modal") waitfor(h) a=1; ....

Kreiranje dijaloškog okvira upozorenja - warndlg

Warndlg funkcija radi na isti način kao errordlg (vidi gore), ali ne postoji način da se pozove s trećim "on" ulaznim argumentom. Na primjer,

vodi do takvog prozora sa pokazivačem h

Prozor upozorenja razlikuje se od prozora poruke o grešci samo po ikoni:

Ponovo pozivanje warndlg sa istim ulaznim argumentima rezultira kreiranjem novog prozora, čak i ako stari još nije zatvoren.

Kreiranje dijaloškog okvira sa informacijama pomoći - helpdlg

Helpdlg funkcija radi na isti način kao warndlg (vidi gore). Na primjer,

h = warndlg("Datoteka je zastarjela", "Preprocesor")

vodi do ovog prozora sa pokazivačem h:

koji se od prozora upozorenja razlikuje samo po ikoni:

Ponovo pozivanje helpdlg-a sa istim naslovom prozora će ponovo aktivirati stari prozor ako nije zatvoren. Ako je zatvoren, kreira se novi.

Višelinijski tekst poruke, modalitet prozora i obustavljanje izvršavanja aplikacije dok se prozor ne zatvori, sve se radi na isti način kao kada se poziva errordlg.

Kreiranje okvira za poruke - generička funkcija msgbox

Funkcija msgbox vam omogućava da kreirate okvire za grešku, upozorenje i pomoć o kojima smo gore govorili. Da biste dobili višeredni tekst, morate navesti niz ćelija stringova kao prvi argument. Osim toga, moguće je kreirati prozor sa proizvoljnom ikonom. Modalitet prozora i kreiranje novog sa istim naslovom kontrolišu se msgbox ulaznim argumentima. Funkcija msgbox vraća pokazivač na prozor koji kreira.

h = msgbox("Vrlo ozbiljna greška!", "Program", "greška")- kreira prozor sa porukom o grešci i standardnom ikonom (slično errordlg).

c = ("Veoma ozbiljna greška!"; "Nemoj nikome reći"); h = msgbox(c, "program", "greška")- slično prethodnom, ali se poruka sastoji od dva reda.

h = msgbox("Zadnje upozorenje!", "Program", "upozorenje")- kreira prozor sa upozorenjem i standardnom ikonom (slično warndlg).

h = msgbox("Pomozi sebi...", "Program", "pomoć")- kreira prozor sa informacijama pomoći i standardnom ikonom (slično helpdlg).

h = msgbox("Ovdje nema slike", "Program", "nema")- kreira prozor sa tekstualnim informacijama bez ikone.

h = msgbox("Tekst poruke", "Naslov prozora", "prilagođeno", slika, mapa boja)- kreira prozor sa ikonom korisnika, na primjer:

= imread("phone.gif"); % pročitana slika i mapa boja iz datoteke h = msgbox("Neko te zove", "Telefon", "prilagođeno", slika, mapa)

vodi do ovog prozora

Posljednji ulazni argument ("modal", "nemodal" ili "replace") kontrolira izgled prozora i način na koji se novi prozor sa istim naslovom prikazuje. Ako nije naveden način prikaza novog prozora, uvijek se kreira novi prozor.

primjeri:

h = msgbox("Vrlo ozbiljna greška!", "Program", "modal")- prikazuje modalni standardni prozor sa porukom o grešci

h = msgbox("Neko te zove", "Telefon", "prilagođeno", slika, mapa, "modal")- prikazuje modalni prozor sa datom slikom za ikonu i mapu boja.

h = msgbox("Vrlo ozbiljna greška!", "Program", "greška", "zamijeni")- zamjenjuje prethodni prozor naslovom Program, ako ga nema, onda kreira novi. Prilikom izvršavanja naredbi

h = msgbox("Vrlo ozbiljna greška!", "Program", "greška") h = msgbox("Nešto je čudno", "Program", "upozori", "zamijeni")

drugi prozor će zamijeniti prvi.

Dijalog za potvrdu - funkcija questdlg

Funkcija questdlg kreira modalni dijalog za potvrdu sa nekoliko dugmadi. Prilikom kreiranja prozora, bilo koji od gumba može imati fokus. Funkcija questdlg vraća korisnikov izbor (string sa imenom pritisnutog dugmeta) kao izlazni argument ili prazan string ako je prozor zatvoren bez pritiskanja nijednog dugmeta. Da biste dobili višeredni tekst, trebali biste koristiti niz ćelija stringova. Ako je naveden dugačak niz, on se automatski prelama.

primjeri:

button = questdlg("Jeste li sigurni?")- kreiranje standardnog prozora za potvrdu sa dugmadima Da, Ne, Otkaži. Da dugme u fokusu (podrazumevano).

button = questdlg("Jeste li sigurni?", "Program")- kreiranje standardnog prozora za potvrdu sa naslovom i dugmadima Da, Ne, Otkaži.

button = questdlg("Jeste li sigurni?", "Program", "Ne")- kreiranje standardnog prozora za potvrdu sa naslovom i dugmadima Da, Ne, Otkaži. Nema dugmeta u fokusu.

button = questdlg("Jeste li sigurni?", "Program", "Da", "Možda", "Možda")- kreiranje standardnog prozora za potvrdu sa naslovom i dva dugmeta Da i Možda. Dugme Možda je u fokusu.

button = questdlg("Jeste li sigurni?", "Program", "Da", "Ne", "Ne znam", "Ne")- kreiranje standardnog prozora za potvrdu sa naslovom i tri dugmeta Da, Ne i ne znam, dugme Ne je u fokusu.

Dijaloški okvir za unos informacija (inputdlg funkcija)

Funkcija inputdlg kreira dijaloški okvir sa navedenim brojem redova unosa. Broj ulaznih linija i njihova naslova određuju se ulaznim argumentima. Prozor sadrži dugmad OK i Cancel. Ako je korisnik kliknuo OK, tada je izlazni argument funkcije inputdlg niz ćelija koji sadrži informacije koje je korisnik unio u redove za unos. Ako je prozor zatvoren klikom na dugme Otkaži ili na bilo koji drugi način (osim dugmeta U redu), onda je izlazni argument prazan niz ćelija.

primjeri:

M = inputdlg(("VRIJEME" "VRIJEDNOSTI"))- kreira dijaloški okvir

Ako, na primjer, korisnik unese 0,1 0,3 0,55 4,5 u red VRIJEME i 2,3 9,55 2,1 0,7 u red VRIJEDNOSTI i pritisne OK, tada će niz ćelija M imati sljedeće vrijednosti.

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

Možete koristiti str2num da ih pretvorite u numeričke vektore:

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

M=inputdlg(("TIME" "VRIJEDNOSTI"), "Ulazni podaci") - kreira dijaloški okvir s naslovom Ulazni podaci.

Da biste mogli da unesete višeredni tekst, mora se navesti treći ulazni argument - broj redova u svakoj oblasti za unos:

M = inputdlg(("matrica A" "matrica B"), "ulazni podaci", 3)- ako je treći argument broj veći od jedan, tada sva polja za unos imaju istu visinu i imaju trake za pomicanje.

Ako se unos završi pritiskom na dugme OK, tada svaka ćelija niza M sadrži niz znakova. U nizu znakova ima onoliko redova koliko je uneseno u odgovarajuće polje za unos.

M = inputdlg(("vektor A" "Matrica B"), "Ulazni podaci", )- da biste zasebno postavili visinu ulaznih područja, navedite broj redova svake ulazne oblasti u vektoru stupca kao treći ulazni argument:

M = inputdlg(("vektor A" "Matrica B"), "Ulazni podaci",)- da biste podesili dužinu polja za unos u znakovima (u ovom slučaju 100 znakova), treći ulazni argument bi trebao biti matrica:

M = inputdlg(("Ime" "Godina"), "Informacije", , (char("John","Smith") "1990"))- da bi se dobio prozor sa popunjenim poljima (da bi se korisniku uputio ulazni format), naveden je četvrti ulazni argument. To mora biti niz ćelija iste veličine kao i prvi ulazni argument:

M = inputdlg(("Ime" "Godina"), "Informacije", , (char("John","Smith") "1990"), "uključeno")- posljednji peti ulazni argument "on" znači da korisnik može promijeniti veličinu dijaloškog okvira.

Dijaloški okvir za izbor sa liste - funkcija listdlg

Funkcija listdlg kreira dijaloški okvir sa okvirom liste datih nizova i dugmadima za odabir i poništavanje odabira. Redovi liste dati su nizom ćelija. Podržan je višestruki izbor stavki liste. Izlazni argumenti vraćaju: Selection - broj ili vektor sa brojevima selektovanih redova i ok - informacije o tome da li je selekcija završena pritiskom na dugme OK (ok = 1), ili je prozor zatvoren na drugi način (ok = 0). Ako je ok = 0, onda je Selection prazan niz. Prema zadanim postavkama, više stavki na listi je dozvoljeno da se izabere (pritiskom na tipku Ctrl) i postoji dugme Odaberi sve za odabir svih stavki.

= listdlg("ListString", ("Linearni"; "Kvadratični"; "Kubični"))- kreira dijaloški okvir za odabir sa listom od tri linije: Linearna, Kvadratna, Kubna. Ako je korisnik odabrao, na primjer, Kvadratno i pritisnuo tipku OK, onda Selection = 2 i ok = 1. Ako je korisnik izabrao Linear i Cubic i pritisnuo tipku OK, onda Selection = i ok = 1, itd.

Listdlg funkciji se može pristupiti u općem obliku:

= listdlg("ListString", niz ćelija nizova, param1, val1, param2, val2, ...)

Parametri i njihove moguće vrijednosti su sljedeći:

  • "SelectionMode" - način odabira reda na listi, vrijednosti: "single" (za odabir samo jednog reda) ili "multiple" (podrazumevano, za odabir više redova);
  • "ListSize" - veličina područja liste u pikselima, vrijednost je postavljena vektorom [visina širine] (podrazumevano);
  • "InitialValue" - početni izbor redova, vrijednost je vektor sa brojevima redova koji će biti odabrani kada se prikaže okvir sa listom (podrazumevano 1);
  • "Ime" - naslov prozora, vrijednost se daje kao string (prazan string po defaultu);
  • "PromptString" - tekst iznad liste, vrijednosti: niz ili niz stringova ili ćelije iz stringova (za višeredni tekst). Podrazumevano, prazan niz ćelija.
  • "OKString" - natpis na dugmetu za izbor i zatvaranje prozora, vrednost je niz (podrazumevano je "OK");
  • "CancelString" - natpis na dugmetu za zatvaranje prozora bez odabira, vrednost je niz (podrazumevano je "Cancel");
  • "uh" - visina dugmadi prozora, vrijednost je postavljena u pikselima (18 po defaultu);
  • "fus" - udaljenost između dugmadi i liste, vrijednost je postavljena u pikselima (18 po defaultu);
  • "ffs" - udaljenost od granice prozora do liste, vrijednost je postavljena u pikselima (8 po defaultu).
Na primjer, naredba

= listdlg("ListString", ("Linearni"; "Kvadratični"; "Kubični"),... "Ime", "Approximation", "ListSize", , "PromptString", "Odaberi metod", "fus", 5)

rezultira u sljedećem combobox dijalogu:

Dijaloški okvir za podešavanje opcija stranice i načina na koji se štampa sadržaj grafičkog prozora - funkcija pagesetupdlg

pagesetupdlg - poziva dijalog Postavljanje stranice za trenutni grafički prozor (ako nema prozora, kreira se novi).

pagesetupdlg(hF) - poziva dijaloški okvir za podešavanje stranice za grafički prozor sa hF pokazivačem.

Postavke napravljene u dijalogu Page Setup utiču na svojstva odgovarajućeg grafičkog prozora: PaperSize, PaperType, PaperPosition, itd.

Funkcija pagesetupdlg vam omogućava da konfigurišete postavke samo za jedan grafički prozor, tj. hF ne može biti vektor pokazivača. Da biste istovremeno postavili glavne parametre nekoliko grafičkih prozora, koristite funkciju pagedlg, čiji ulazni argument može biti vektor pokazivača na grafičke prozore.

Prozor Podešavanje stranice je modalan; izvršavanje aplikacije je suspendovano dok se prozor ne zatvori.

Dijaloški okvir za izbor opcija štampanja i postavki štampača - funkcija printdlg

printdlg - pozovite standardni Windows dijaloški okvir za štampanje trenutnog grafičkog prozora (ako nema prozora, kreira se novi).

printdlg(hF) - pozovite standardni Windows dijaloški okvir za štampanje grafičkog prozora sa hF pokazivačem.

printdlg("-crossplatform", hF) - pozovite dijaloški okvir MATLAB Print da odštampate grafički prozor sa hF ručkom.

Dijalog za štampanje je modalan, izvršavanje aplikacije je suspendovano dok se prozor ne zatvori.

Otvaranje dijaloga datoteke - funkcija uigetfile

= uigetfile- prikazuje dijaloški okvir za otvaranje datoteke sa sadržajem trenutnog direktorija. Filter datoteka je postavljen na SVE MATLAB datoteke, što uzrokuje da se prikazuju samo oni fajlovi čije ekstenzije podržava MATLAB. U padajućoj listi Tipovi datoteka možete odabrati samo M-datoteke, ili samo grafičke prozore, itd., ili sve datoteke.

Ako je korisnik odabrao datoteku (klikom na ikonu datoteke i pritiskom na dugme Otvori, ili dvostrukim klikom na ikonu datoteke, ili upisivanjem naziva datoteke u liniju Naziv datoteke i pritiskom na dugme Otvori), tada FName sadrži string sa imenom datoteke i ekstenzijom, a PName je putanja do datoteke. Ako korisnik nije odabrao datoteku i zatvorio prozor, tada je FName = 0 i PName = 0. Nakon poziva funkcije uigetfile, provjerite da li je datoteka odabrana. Ako je tako, spojite ove redove da dobijete puno ime datoteke:

= uigetfile; if ~ isequal(FName, 0) FullName = strcat(PName, FName); % zatim pročitajte podatke sa kraja datoteke

Filter datoteka naveden u prvom ulaznom argumentu funkcije uigetfile, na primjer

= uigetfile("*.txt");

kreira dijaloški okvir za otvaranje datoteke čija lista vrste datoteka sadrži dva niza: "*.txt" i "Sve datoteke (*.*)". Možete navesti više od jedne ekstenzije, ali tada morate koristiti niz ćelija nizova:

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

Da biste stavili opis tipova datoteka na listu Tipovi datoteka, morate navesti niz ćelija od dvije kolone. Svaki od njegovih redova specificira ekstenziju datoteke i njen opis (u ovom slučaju, red "Sve datoteke (*.*)" se ne dodaje na listu tipova datoteka u dijaloškom okviru za otvaranje datoteke):

Filter=("*.txt", "Tekstualne datoteke (*.txt)"; "*.dat", "Datoteke podataka (*.dat)"; "*.res", "Rezultati (*.res)") ; = uigetfile(Filter);

Niz s imenom datoteke se također može koristiti kao filter, tada se nalazi u redu File name kada se pojavi dijaloški okvir za otvaranje datoteke, a njegova ekstenzija se uzima kao zadana ekstenzija i pojavljuje se na listi Files of Type zajedno sa " Sve datoteke (*.*) ".

Ako trebate znati koji tip datoteke je korisnik odabrao na popisu Files of Type, onda biste trebali pogledati uigetfile sa tri izlazna argumenta:

= uigetfile(Filter);

FilterIndex sadrži broj tipa datoteke.

Za posao prilagođeni naslov prozora za otvaranje datoteke (umjesto Odaberi datoteku za otvaranje), poziva se funkcija uigetfile sa drugim ulaznim argumentom:

= uigetfile(Filter, "Otvori datoteku");

A da biste postavili navedeno ime datoteke u niz Ime datoteke prilikom kreiranja otvorenog prozora datoteke, morate ga navesti u trećem ulaznom argumentu (ime datoteke može biti potpuno kvalificirano):

= uigetfile(Filter, "Otvori datoteku", "input.txt")

Tako možete prikazati sadržaj bilo koje mape, na primjer, korijenski direktorij diska D:

= uigetfile(Filter, "Otvori datoteku", "d:\")

Bilješka
Ako želimo da otvorimo MATLAB fajlove na način na koji uigetfile predlaže podrazumevano, ali specificiramo prilagođeni naslov prozora (i podrazumevanu fasciklu ili datoteku u dijalogu za otvaranje datoteke), onda prvi ulazni argument, filter, ne može biti izostavljen. Mora biti prazan niz:

= uigetfile("", "Otvori datoteku", "d:\");

Kako bi korisnik mogao odaberite više datoteka, trebali biste pozvati uigetfile na jedan od sljedećih načina:

= uigetfile("MultiSelect", "on"); ili = uigetfile("*.dat", "MultiSelect", "on") ; ili = uigetfile("*.dat", "Otvori datoteku", "d:\", "MultiSelect", "on")

Ako je korisnik odabrao više datoteka u dijaloškom okviru, tada je izlazni argument FName niz ćelija sa imenima odabranih datoteka (PName ostaje string, naravno, pošto su datoteke odabrane u istom folderu). Da biste dobili niz ćelija s punim nazivima datoteka, poslužit će sljedeći kod (funkcija strcat može spojiti string s nizom stringova ćelija):

= uigetfile("MultiSelect", "on"); if ~isequal(FName, 0) FullName = strcat(PName, FName); kraj

MATLAB funkcije za otvaranje datoteka različitih formata

Budući da je riječ o otvaranju datoteka, prikladno je dati glavne MATLAB funkcije dizajnirane za rad sa datotekama različitih formata.

opterećenje- čitanje podataka iz binarne ili tekstualne datoteke.

otvoren- otvaranje fajla. Način otvaranja zavisi od produžetka:

  • proširenje m- datoteka se otvara u M-file editoru;
  • proširenje mdl- model je otvoren u Simulink-u;
  • proširenje mat- upisivanje binarnih podataka iz datoteke u polja strukture, nazivi polja strukture se poklapaju sa imenima varijabli snimljenih u datoteci;
  • proširenje sl- otvara se grafički prozor;
  • proširenje str- ako postoji m-fajl sa istim imenom, onda se otvara u uređivaču M-datoteka;
  • ekstenzije htm, html- fajl se otvara u prozoru pretraživača MATLAB sistema pomoći;
  • proširenje pdf- datoteka se otvara u Adobe Acrobat-u (zahteva otvaranje po asocijaciji u Windows-u);
Da biste otvorili datoteku s nestandardnom ekstenzijom, možete napisati vlastitu funkciju, koja će biti pozvana prema zadanim postavkama. Njegovo ime je formirano od riječi open i ekstenzije, na primjer, da biste otvorili datoteke s ekstenzijom dtm, trebali biste napisati opendtm funkciju. Primjer. Pretpostavimo da trebamo otvoriti binarne datoteke s ekstenzijom dtm koja sadrži vrijednosti dvije varijable čija imena mogu biti različita. Vrijednosti ovih varijabli moraju biti zapisane u varijable vremena i podataka radnog stola. Zatim pišemo opendtm funkcijsku datoteku:

funkcija opendtm(fname) % čitanje podataka u strukturu S = load("-mat", fname); % saznati imena polja strukture (imena varijabli) F = imena polja(S); % Dodijelite vrijednosti varijablama radnog prostora time i data assignin("base", "time", S.(F(1))) assignin("base", "data", S.(F(2)))

Evo kako možete koristiti opendtm funkciju:

A = 1:10; B = sqrt(A); save("my.dtm", "A", "B") % upisi A i B u datoteku u binarnom obliku open("my.dtm") % otvorenih poziva opendtm i vrijeme i podaci se kreiraju u radnoj površini

Bilješka. Funkcija uiopen kombinuje snagu uigetfile i open - kreira dijaloški okvir otvorene datoteke, a zatim poziva open da ga otvori.

winopen - otvaranje datoteke u Windows-u od strane aplikacije koja je povezana sa datom ekstenzijom, na primjer: winopen("art.doc") - otvaranje art.doc u MS Word-u; winopen("my.txt") - otvori moj.txt u notepadu; winopen("all.htm") - otvori all.htm u web pretraživaču.

notebook- otvaranje ili kreiranje M-knjige u MS Wordu.

objaviti- izvršavanje M-datoteke podijeljene u ćelije i pohranjivanje rezultata u specificiranom formatu: html, doc, ppt, xml, rpt, latex.

dos i sistem- izvršavanje naredbi (vidi također!), pokretanje izvršnih datoteka, na primjer:

sistem ("kalc")- pokrenite kalkulator.

uiimport- otvara prozor Čarobnjak za uvoz za uvoz podataka iz različitih formata.

uvoz podataka- uvoz podataka u zavisnosti od ekstenzije datoteke, takođe koristan za čitanje podataka iz tekstualne datoteke sa razgraničenjima.

csvread- čitanje numeričkih podataka iz tekstualne datoteke razdvojene zarezima.

dlmread- čitanje numeričkih podataka iz tekstualne datoteke sa specificiranim graničnikom.

textread, textscan- čitanje podataka iz tekstualne datoteke određenog formata.

xlsread- čitanje podataka iz MS Excel datoteka.

wavread- čitanje audio wav datoteke.

aviread- čitanje avi datoteke.

imread- čitanje grafičkih datoteka.

Pored navedenih funkcija, postoje funkcije niskog nivoa za rad sa datotekama. Njihova imena počinju slovom f:

fclose- zatvaranje fajla.

feof- provjerite da li ste stigli do kraja datoteke.

strah- dobijanje informacija o poslednjoj grešci tokom unosa-izlaza.

fgetl- čitanje reda iz tekstualne datoteke bez terminatora reda.

fgets- čitanje reda iz tekstualne datoteke sa znakom za kraj reda.

fopen- otvaranje fajla.

fprintf- formatiranje snimka u datoteku.

fred- čitanje iz binarne datoteke.

frewind- skoči na početak datoteke.

fscanf- format čitanja iz datoteke.

fseek- skočiti na određenu poziciju u datoteci.

ftell- dobijanje trenutne pozicije u datoteci.

fwrite- pisanje u binarnu datoteku.

Sve funkcije za čitanje podataka su navedene u sistemu pomoći: MATLAB: Funkcije -- Lista kategorija: File I/O.

Dijalog za spremanje datoteke - funkcija uiputfile

Upotreba uiputfile je slična uigetfile o kojoj se raspravljalo gore. Na isti način se postavlja filter ekstenzije, naslov prozora, datoteka ili zadana putanja. Razlika je u tome što ne postoji opcija "MultiSelect" u uiputfile-u (nije potrebna prilikom spremanja). Također, ako korisnik odabere ime postojeće datoteke u dijaloškom okviru za spremanje datoteke, pojavit će se okvir za potvrdu. Odabirom Da zatvara se dijalog za spremanje datoteke, a Ne vraća vas u prozor za spremanje datoteke. Provjera radnji korisnika i dobivanje potpuno kvalificiranog imena datoteke se radi na potpuno isti način kao u slučaju uigetfile.

MATLAB funkcije za spremanje podataka u datoteke

Hajde da navedemo glavne MATLAB funkcije dizajnirane za skladištenje podataka različitih tipova.

spasiti- pohranjivanje podataka u tekstualne i binarne datoteke

Bilješka.
Funkcija uisave kombinuje snagu uigetfile-a i save-a - kreira dijaloški okvir za spremanje datoteke koji će sačuvati sve varijable radnog okruženja.

csvwrite- upisivanje numeričkih podataka u tekstualnu datoteku odvojenih zarezima.

dlmwrite- upisivanje numeričkih podataka u tekstualnu datoteku kroz specificirani graničnik.

xlswrite- snimanje podataka u MS Excel formatu.

wavwrite- snimanje wav datoteke.

avifile- kreira avi datoteku i vraća identifikator za nju, koji se koristi u drugim funkcijama: addframe, close.

movie2avi- kreiranje avi-datoteke iz matrice, čija svaka kolona pohranjuje informacije o jednom kadru (vidi funkcije: movie, getframe, im2frame).

imwrite- pisanje grafičke datoteke.

Pored navedenih funkcija, postoje funkcije niskog nivoa za rad sa datotekama čija imena počinju slovom f (pogledajte odeljak "MATLAB funkcije za otvaranje datoteka različitih formata" iznad).

Dijalog za odabir direktorija - funkcija uigetdir

Funkcija uigetdir otvara dijaloški okvir Potraži mapu i vraća putanju do odabranog direktorija ili null ako korisnik nije napravio odabir. Provjera da li je direktorij odabran vrši se na potpuno isti način kao u funkciji uigetfile za dijalog za otvaranje datoteke. Načini za pozivanje uigetdira:

dname=uigetdir- Otvara dijaloški okvir za odabir direktorija koji naglašava trenutni MATLAB direktorij.

dname = uigetdir("startpath")- otvara dijaloški okvir za odabir direktorija u kojem je odabran navedeni direktorij, na primjer: dname = uigetdir("c:\").

dname = uigetdir("startpath", "text")- otvara dijaloški okvir za odabir direktorija u kojem je odabran navedeni direktorij i postavlja navedeni tekst iznad prozora sa hijerarhijskom strukturom direktorija. Ako želite da otvorite dijaloški okvir za odabir direktorija koji naglašava trenutni MATLAB direktorij, morate dati prazan string umjesto prvog ulaznog argumenta: dname = uigetdir("", "text").

MATLAB funkcije za manipuliranje katalozima

Daljnje akcije nakon što korisnik odabere ime direktorija uključuju korištenje MATLAB funkcija dizajniranih za rad s direktorijima.

cd- promijeniti trenutni MATLAB direktorij

dir- prikazivanje sadržaja direktorija u komandnom prozoru ili pisanje informacija o sadržaju u niz struktura.

put, rmpath- upravljanje MATLAB putevima pretraživanja.

Bilješke.
Funkcija pathtool prikazuje poseban Set Path dijaloški okvir za kontrolu MATLAB puteva pretraživanja.
Funkcija pregledača datoteka prikazuje poseban dijalog Current Directory sa sadržajem trenutnog direktorija, mogućnošću odabira novog tekućeg direktorija i otvaranjem datoteka u MATLAB-u.

Sve funkcije za rad sa katalozima u MATLAB-u su navedene u sistemu pomoći pod MATLAB: Funkcije -- Kategorijska lista: Desktop alati i razvojno okruženje: Radni prostor, Putanja za pretragu i Operacije datoteka.

Dijalog za odabir fonta - funkcija uisetfont

Funkcija uisetfont može se koristiti u dvije svrhe:
1) kreiranje dijaloga za odabir fonta i upisivanje informacija o odabranom fontu (naziv, veličina, stil) u strukturu;
2) kreiranje dijaloškog okvira za odabir fonta i mijenjanje tekstualnih objekata, oznaka osa ili kontrola u skladu sa postavkama napravljenim u ovom prozoru.

S=uisetfont- dovodi do pojave dijaloškog okvira za odabir fonta i, ako je izbor napravljen u njemu, vraća se struktura S, čija polja imaju sljedeće značenje:

S.FontName - niz sa imenom fonta; S.FontUnits - mjerne jedinice ("points"); S.FontSize - veličina; S.FontWeight - težina ("normalno" ili "podebljano"); S.FontAngle - stil ("normalni" ili "kurziv").

Ako korisnik nije izabrao font i zatvorio prozor, onda je S nula.

S = uisetfont(S0)- dovodi do pojave dijaloškog okvira za odabir fonta, u kojem se odabire zadani font u skladu sa vrijednostima polja strukture S0, na primjer:

S0.FontName = "Arial"; S0.FontUnits = "points"; S0.FontSize = 20; S0.FontWeight = "podebljano"; S0.FontAngle = "normalno"; S = uisetfont(S0)

S = uisetfont("Naslov prozora") ili S = uisetfont(S0, "Naslov prozora")- isto kao i prethodne opcije, samo prozor za odabir fonta ima dati naslov.

uisetfont(h)- pozovite dijaloški okvir za odabir fonta za tekstualni objekt, osi ili kontrolu sa h pokazivačem.

uisetfont(h, "Naslov prozora")- isto što i uisetfont(h), samo polje za odabir fonta ima dati naslov.

S = uisetfont(h), S = uisetfont(h, "Naslov prozora")- kao i dvije prethodne opcije, samo se informacija o izboru korisnika dodatno vraća u strukturi S.

Primjer promjene fonta grafičkih objekata

hA = osi; % kreirajte grafiku osi(rand(10)) % iscrtajte grafikon hT = title("Random Graph") % dodajte naslov % otvorite dijaloški okvir za odabir fonta za raspored osi uisetfont(hA, "Postavi font za osi "); % otvaranje dijaloškog okvira za odabir fonta naslova uisetfont(hT, "Postavi font za naslov"); Dijalog za odabir boja - funkcija uisetcolor

Funkcija uisetcolor, poput uisetfonta, može se koristiti u dvije svrhe:
1) kreiranje dijaloga za odabir boje i upisivanje odabrane boje u vektor u RGB formatu;
2) kreiranje dijaloškog okvira za odabir boje i mijenjanje grafičkih objekata koji imaju svojstvo Color u skladu sa postavkama napravljenim u ovom prozoru.

C = uisetcolor- kreiranje dijaloškog okvira za odabir boje (trenutna boja u njemu je po defaultu bijela) i upisivanje odabrane boje u C vektor u RGB formatu. Ako korisnik nije napravio izbor, onda je C nula.

C = uisetcolor(C0)- isto kao i prethodna verzija, samo u dijaloškom okviru za odabir boje, trenutna boja je boja specificirana C0 vektorom u RGB-u. Ako korisnik nije napravio izbor, onda je C isto što i C0.

C = uisetcolor("Naslov prozora"), C = uisetcolor(C0, "Naslov prozora")- isto kao i prethodna verzija, samo dijalog za odabir boje ima dati naslov.

uisetcolor(h)- otvaranje dijaloškog okvira za odabir boje za postavljanje boje grafičkog objekta sa pokazivačem h (grafički objekat mora imati svojstvo Color).

uisetcolor(h, "Naslov prozora")- slično prethodnom, ali dijaloški okvir ima zadati naslov.

C = uisetcolor(h) ili C = uisetcolor(h, "Naslov prozora")- isto kao i prethodne dvije metode. Osim promjene boje objekta, odabrana boja se upisuje u vektor C u RGB formatu.

Primjer promjene boje grafičkih objekata.

hA = osi; % kreiranje osa % plot x = 0:0.1:10; y = sin(x); hL = plot(x,y) hT = title("Random Graph") % dodati naslov % otvoren dijaloški okvir za odabir boje linije uisetcolor(hL, "Odaberi boju linije") % otvoren dijaloški okvir za odabir boje naslova uisetcolor(hT, "Odaberi boju naslova") % otvoren dijaloški okvir za odabir boje osi uisetcolor(hA, "Odaberi boju osi")

Prozor sa trakom napretka - funkcija čekanja

Funkcija trake čekanja kreira prozor sa trakom napretka i omogućava vam da ga ažurirate.

h = traka čekanja(x, "tekst")- prikazuje prozor sa trakom napretka i navedenim tekstom iznad trake. Dužina trake napretka je proporcionalna vrijednosti x, koja mora biti između 0 i 1. Izlazni argument h je pokazivač na grafički prozor sa trakom napretka.

traka za čekanje (x, h)- povećava dužinu trake napretka sa pokazivačem h u skladu sa vrijednošću x.

% kreirati prozor sa praznom trakom napretka h = waitbar(0, "Rješavanje problema s vlastitim vrijednostima..."); za i=1:100 A = rand(30); L = eig(A); traka čekanja(i/100) % ažuriranje trake napretka kraj % brisanje grafičkog prozora sa trakom napretka zatvori (h)

Boja trake se može mijenjati, s obzirom da je traka poligon objekt, potomak osi, koje su potomak grafičkog prozora kreiranog funkcijom čekanja. primjer:

% kreirati prozor sa praznom trakom napretka h = waitbar(0, "Rješavanje problema s vlastitim vrijednostima..."); % traženje pokazivača na poligon objekat hP = findobj(h, "Type", "patch"); % postavlja boju unutrašnjosti i ivice skupa poligonskih objekata (hP, "FaceColor", "g", "EdgeColor", "g") za i=1:1000 čekanja (i/1000, h) end close( h)

Svojstva samog prozora se također mogu promijeniti korištenjem pokazivača na njega i činjenice da funkcija čekanja vam omogućava da postavite svojstva prozora u ulaznim argumentima, na primjer:

h = traka čekanja(0, "Jednostavno bijelo", "Boja", "w", "Naziv", "program");

Kreiranje dijaloškog okvira sa dugmadima - funkcija menija

Funkcija menija kreira prozor sa tekstom i dugmadima raspoređenim u kolonu sa datim oznakama. Nakon što korisnik klikne na dugme, njegov broj se vraća u izlazni argument funkcije menija.

dugme = meni("Odaberi metodu", "Njutn", "Gaus", "Zeidel")

Ako korisnik nije napravio izbor, tada je dugme = 0.

Top Related Articles