Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Programet
  • Grafika përshkruese. Kompjuteri im nuk po shfaq shtesat e skedarëve, çfarë duhet të bëj? Kutitë standarde të dialogut

Grafika përshkruese. Kompjuteri im nuk po shfaq shtesat e skedarëve, çfarë duhet të bëj? Kutitë standarde të dialogut

Skedarët janë objekte mjaft të zakonshme në sistemin MATLAB. Disa nga llojet e skedarëve janë diskutuar tashmë në kapitujt e mëparshëm. Ky mësim mbulon vetitë e skedarit që janë të pavarura nga lloji i tyre dhe zbatohen për çdo skedar.

Skedari zakonisht disa koleksione të dhënash, të bashkuara me një emër. Lloji i skedarit zakonisht përcaktohet nga shtrirja e tij. Ne e konsiderojmë skedarin në tërësi, megjithëse fizikisht në disk mund të përfaqësohet nga disa zona - ata thonë se në këtë rast skedari është i fragmentuar.

Para se të përdorni ndonjë skedar, ai duhet të jetë hapur, dhe në fund të përdorimit - mbyllur... Shumë skedarë mund të hapen dhe të lexohen në të njëjtën kohë. Le të shqyrtojmë komandat për hapjen dhe mbylljen e skedarëve.

  • Ekipi emër i hapur, ku emri duhet të përmbajë një grup karakteresh ose një ndryshore simbolike, hap skedarë në varësi të analizës së parametrit të emrit dhe zgjerimit në emrin e emrit:
    • e ndryshueshme- hap një grup të emërtuar me emër në Redaktuesin Array;
    • .mat- hap skedarin, ruan variablat në strukturën në zona e punës;
    • .fik- e hap atë në Property Editor;
    • .m- hap skedarin m në editor-debugger;
    • .mdl- hap modelin në Simulink;
    • .R- hap, nëse ka, një skedar m me të njëjtin emër;
    • .html- hapet dokument HTML në shfletuesin e ndihmës.

Nëse skedarët me ekstension ekzistojnë në shtegun MATLAB, atëherë skedari që kthehet me komandën emri i cili hapet, nëse jo, atëherë skedari nga sistemi i skedarëve... Nëse skedari nuk ka një shtesë emri, atëherë ai hapet nga programi, formati i skedarit të të cilit do të ishte zbuluar nga funksioni cili ("emri i skedarit"). Si parazgjedhje, openother thirret për të gjithë skedarët me mbaresa të ndryshme nga ato të listuara sipër. Open thërret funksionet orepxxx, ku xxx është zgjerimi i skedarit. Përjashtimet janë variablat e hapësirës së punës për të cilat thirret openvar dhe grafika për të cilën thirret openim. Duke krijuar skedarë t të quajtur orepxxx, përdoruesit mund të ndryshojnë trajtimin e skedarëve dhe të shtojnë shtesa të reja në listë. Skedarët e hapur me open duhet të mbyllen nga redaktuesit e thirrur nga onxxx.

  • = uigetfile (FILTERSPEC. Titulli)... Hap një dialog me emrin Titulli dhe një filtër FILTERSPEC (për shembull, një grup qelizash që përmban shtesa skedarësh) dhe kthen skedarin e zgjedhur nga përdoruesi dhe rrugën drejt tij. Kthen FILENAME = 0 nëse skedari nuk ekziston ose nëse përdoruesi ka klikuar Cancel. = uigetfile (FILTERSPEC, Title. X. Y) vendos kutinë e dialogut në pikën X, Y (koordinatat në piksel).

Uigetfile ("*. M; *. Fig; *. Mat: *. Mdl", "Të gjithë skedarët e MATLAB (* .m, * .fig, * .mat. * .Mdl)") ...

  • = uiputfile (FILTERSPEC. TITLE) e ruan skedarin në një dialog të kontrolluar nga përdoruesi. Parametrat janë të njëjtë si në funksionin uigetfile.
  • Ekipi UI hapur hap një dialog dhe nëse përdoruesi ka zgjedhur një skedar me një shtrirje të njohur, e thërret atë duke përdorur open, ose nëse emri i skedarit ka një shtrirje të panjohur, atëherë thirret uigetfile. Argumentet hyrëse në uiopen mund të jenë mat lab, load, figure, simullink, editor. Pa argumente hyrëse ose me një matlab të argumentit të hyrjes, kutia e dialogut ju kërkon të zgjidhni * .m, * .fig, * .mat, * .mdl (nëse është instaluar Simulink), * .cdr (nëse është instaluar rrjedha e gjendjes), * .rtw, *. tmf, * .tlc, * .c, * .h, * .ads, * .adb (nëse është instaluar Workshop në kohë reale). Me argumentin e ngarkesës - * .mat. Me argumentin e figurës ofrohen * .fig; simul ink - * .mdl, redaktori - * .m, * .mdt * .cdr, * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb.

Figura e hapur

  • Ekipi uiload hap një skedar në një dialog të kontrolluar nga përdoruesi duke përdorur komandën ngarkesës.

Funksioni import UI nis Magjistari i importit(Import Wizard), i cili importon nga një skedar në dosjen aktuale ose në kujtesën e Windows. Ajo përputhet me zgjedhjen Të dhënat e importit nga menyja Skedari ose zgjedhje Paste Speciale nga menyja Redakto MATLAB.

  • importi UI (FILENAME)- hap magjistarin e importit duke hapur FILENAME. Magjistari i importit tregon të dhëna për parapamje... Të dhënat dhe paraqitja e tyre si variabla MATLAB shfaqen në dritaren e shikimit. Të dhënat aktuale, teksti dhe titujt paraqiten ndryshe Variablat MATLAB... Për të dhënat ASCII, duhet të siguroheni që magjistari i importit të njeh kufizuesit e kolonave. Më vete, mund të njohë vetëm një skedë, hapësirë, presje ose pikëpresje. Duhet të klikoni në butonin Tjetra dhe në dritaren tjetër ose konfirmoni zgjedhjen e ndarësit të bërë nga Wizard, ose zgjidhni Të tjera dhe futni çdo ndarës.
  • import UI ("-file")- së pari shfaq dialogun e përzgjedhjes së skedarit.
  • import UI ("-pastespecial")- së pari shfaq përmbajtjen e kujtesës së Windows për shikim paraprak.
  • S = import UI (...) ruan variablat që rezultojnë si fusha të strukturës S.
  • Ekipi uisave- ruajtja e kontrolluar nga përdoruesi (komanda e ruajtjes përshkruhet në mësimin 2) me një dialog Windows.
  • Funksioni kursen- ruan një vizatim ose model Simulink në formatin e dëshiruar në një medium ruajtjeje ose në një pajisje të aktivizuar me printim.
  • Funksioni saveas (H, "FILENAME")- ruan të dhënat në përputhje me komandën e përshkruesit grafikë H në skedarin FILENAME. Formati i skedarit përcaktohet nga zgjerimi i emrit FILENAME.
  • Funksioni saveas (H. "EMRI FILE". "FORMAT")- kryen të njëjtën gjë, por me parametrin FORMAT (formati specifikohet në të njëjtën mënyrë si shtesa e emrit të skedarit dhe mund të ndryshojë nga ai). FORMAT ka përparësi ndaj zgjerimit të emrit të skedarit. Parametrat e funksionit:
    • "fik"- ruani figurën (grafin) në një skedar binar fig;
    • "m" ose "mfig"- ruani figurën në një skedar binar fig dhe krijoni një skedar m për ta ngarkuar atë;
    • "mmat"- ruani vizatimin në një skedar m si një sekuencë komandash për krijimin e vizatimeve. Mund të mos mbështesë veçoritë më të fundit grafike.

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

Komanda ose funksioni fshij fshin një skedar ose objekt grafik.

). Në mesin e fondeve Qëllimi i përgjithshëm e përdorur në kimiometri, një vend të veçantë zë Paketa MatLab... Popullariteti i tij është jashtëzakonisht i lartë. Kjo për shkak se MatLab është përpunim i fuqishëm dhe i gjithanshëm shumëdimensional i të dhënave. Vetë struktura e paketës e bën atë një mjet të përshtatshëm për kryerjen e llogaritjeve të matricës. Gama e problemeve, studimi i të cilave mund të kryhet në Ndihmë MatLab, mbulon: analizën e matricës, përpunimin e sinjalit dhe imazhit, rrjetet nervore dhe shume te tjere. MatLab është një gjuhë nivel të lartë, e cila është me kod të hapur, gjë që e bën të mundur përdoruesit me përvojë kuptojnë algoritmet e programuara. Një gjuhë e thjeshtë programimi e integruar e bën të lehtë krijimin e algoritmeve tuaja. Për shumë vite të përdorimit të MatLab, sasi e madhe funksionet dhe ToolBox (paketat e mjeteve të specializuara). Më i popullarizuari është PLS ToolBox nga Eigenvector Research, Inc.

1. Informacion bazë

1.1. Ambient pune MatLab

Për të nisur programin, klikoni dy herë në ikonën. Mjedisi i punës i paraqitur në figurë do të hapet para jush.

Hapësira e punës MatLab 6.x paksa i ndryshëm nga mjedisi i punës i versioneve të mëparshme, ai ka një ndërfaqe më të përshtatshme për të hyrë në shumë elementë ndihmës

Hapësira e punës MatLab 6.x përmban elementët e mëposhtëm:

    një shirit veglash me butona dhe një listë rënëse;

    Dritarja me skeda Launch Pad dhe Hapësira e punës nga të cilat mund të aksesoni modulet e ndryshme të ToolBox dhe përmbajtjet e hapësirës së punës;

    dritare me skeda Historia e komandave dhe Drejtoria aktuale, i destinuar për shikimin dhe rikthimin e komandave të futura më parë, si dhe për vendosjen e drejtorisë aktuale;

    dritarja e komandës, e cila përmban prompt "dhe një kursor vertikal që vezullon;

    shiriti i statusit.

Nëse në Ambienti i punës MatLab 6.x disa dritare të paraqitura në figurë mungojnë, më pas zgjidhni artikujt e duhur në menynë View: Dritarja e komandës, Historia e komandave, Drejtoria aktuale, Hapësira e punës, Hapësira e nisjes.

Komandat duhet të shtypen në dritaren e komandës. Ju nuk keni nevojë të shkruani "karakterin" për të treguar linjën e komandës. Për të parë zonën e punës, është i përshtatshëm të përdorni shiritat e lëvizjes ose butonat Home, End për të lëvizur majtas ose djathtas dhe PageUp, PageDown për të lëvizur lart ose poshtë. Nëse papritmas, pasi të keni lëvizur në zonën e punës të dritares së komandës, linja e komandës me kursorin vezullues u zhduk, thjesht shtypni Enter.

Është e rëndësishme të mbani mend se grupi i çdo komande ose shprehjeje duhet të përfundojë duke shtypur Enter, në mënyrë që MatLab të ekzekutojë këtë komandë ose të llogarisë shprehjen.

1.2. Llogaritjet më të thjeshta

Shkruani 1 + 2 në vijën e komandës dhe shtypni Enter. Si rezultat, sa vijon shfaqet në dritaren e komandës MatLab:

Oriz. 2 Paraqitja grafike e analizës së komponentit kryesor

Çfarë bëri MatLab? Së pari, ajo llogariti shumën 1 + 2, më pas shkruajti rezultatin në variablin special ans dhe printoi vlerën e tij, të barabartë me 3, në dritaren e komandës. Poshtë përgjigjes është një linjë komande me një kursor që vezullon, që tregon se MatLab është gati për llogaritjet e mëtejshme. Mund të shkruani shprehje të reja në vijën e komandës dhe të gjeni vlerat e tyre. Nëse duhet të vazhdoni të punoni me shprehjen e mëparshme, për shembull, llogaritni (1 + 2) /4.5, atëherë mënyra më e lehtë është të përdorni rezultatin tashmë ekzistues, i cili ruhet në variablin ans. Shkruani ans / 4.5 (një pikë përdoret kur futni thyesat dhjetore) dhe shtypni Hyni, doli qe

Oriz. 3 Paraqitja grafike e analizës së komponentit kryesor

1.3. Echo komandat

Çdo ekzekutim i komandës në MatLab ka jehonë. Në shembullin e mësipërm, kjo është përgjigja ans = 0.6667. Shpesh jehona e bën të vështirë perceptimin e punës së programit dhe më pas mund të fiket. Për ta bërë këtë, komanda duhet të përfundojë me një pikëpresje. për shembull

Oriz. 4 Shembull i hyrjes në funksionin ScoresPCA

1.4. Ruajtja e mjedisit të punës. Skedarët MAT

Mënyra më e lehtë për të ruajtur të gjitha vlerat e variablave është të përdorni artikullin Save Workspase As në menynë File. Shfaqet kutia e dialogut Save Workspase Variables, në të cilën duhet të specifikoni drejtorinë dhe emrin e skedarit. Si parazgjedhje, sugjerohet që skedari të ruhet në nëndrejtorinë e punës së direktoriumit kryesor MatLab. Programi do të ruajë rezultatet e punës në një skedar me shtrirjen mat. Tani mund ta mbyllni MatLab. Në seancën tjetër, për të rivendosur vlerat e variablave, hapni këtë skedar të ruajtur duke përdorur nën-artikullin Open të menysë File. Tani të gjitha variablat e përcaktuara në seancën e mëparshme janë sërish të disponueshme. Ato mund të përdoren në komandat e futura rishtazi.

1.5. Revistë

MatLab ka aftësinë për të shkruar komanda dhe rezultate të ekzekutueshme në një skedar teksti (të mbajë një regjistër të punës), i cili më pas mund të lexohet ose printohet nga një redaktues teksti. Për të filluar regjistrimin, përdorni komandën ditar... Si argument komandues ditar duhet të specifikoni emrin e skedarit në të cilin do të ruhet regjistri i punës. Komandat e shtypura më tej dhe rezultatet e ekzekutimit të tyre do të shkruhen në këtë skedar, për shembull, një sekuencë komandash

kryen veprimet e mëposhtme:

    hap regjistrin në skedarin exampl-1.txt;

    kryen llogaritjet;

    ruan të gjitha variablat në skedarin MAT work-1.mat;

    ruan regjistrin në skedarin exampl-1.txt në nëndrejtorinë e punës së direktoriumit rrënjësor MatLab dhe mbyll MatLab;

Shikoni përmbajtjen e skedarit exampl-1.txt në disa redaktori i tekstit... Skedari do të përmbajë tekstin e mëposhtëm:

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

Kurseni punën-1

1.6. Sistemi i ndihmës

Dritarja e ndihmës MatLab shfaqet pasi zgjidhni opsionin Help Window në menunë Help ose duke klikuar butonin e pyetjeve në shiritin e veglave. I njëjti veprim mund të kryhet duke shtypur komandën ndihmëwin... Për të shfaqur një dritare ndihme për seksione individuale, shkruani tema helpwin... Dritarja e ndihmës ju ofron të njëjtin informacion si komanda e ndihmës, por ndërfaqja me dritare ofron lidhje më të përshtatshme për temat e tjera të ndihmës. Duke përdorur adresën e faqes së internetit Math Works, mund të identifikoheni në serverin e firmës dhe të merrni informacionin më të fundit për pyetjet tuaja. Mund të njiheni me produktet e reja softuerike ose të gjeni një përgjigje për problemet tuaja në faqen e mbështetjes teknike.

2. Matricat

2.1. Skalarët, vektorët dhe matricat

Skalarët, vektorët dhe matricat mund të përdoren në MatLab. Për të futur një skalar, mjafton t'i caktoni vlerën e tij disa ndryshoreve, për shembull

Vini re se MatLab bën dallimin midis shkronjave të mëdha dhe të vogla, kështu që p dhe P janë variabla të ndryshëm. Për të futur vargje (vektorë ose matrica), elementet e tyre mbyllen në kllapa katrore. Pra, për të futur një vektor rreshti 1 × 3, përdorni komandën e mëposhtme, në të cilën elementët e rreshtit ndahen me hapësira ose presje.

Kur futni një vektor kolone, ndani artikujt me një pikëpresje. Për shembull,

Është i përshtatshëm për të futur matrica me madhësi të vogël direkt nga linja e komandës. Ndërsa shkruani, një matricë mund të mendohet si një vektor kolone, secili element i së cilës është një vektor rreshti.

ose një matricë mund të mendohet si një vektor rreshti, secili element i të cilit është një vektor kolone.

2.2. Aksesimi i elementeve

Elementet e matricës aksesohen duke përdorur dy indekse - numrat e rreshtave dhe kolonave, të mbyllura brenda kllapa të rrumbullakëta, për shembull, komanda B (2,3) do të kthejë elementin e rreshtit të dytë dhe kolonës së tretë të matricës B. Për të zgjedhur një kolonë ose rresht nga një matricë, përdorni numrin e kolonës ose rreshtit të matricës si një nga indekset dhe zëvendësoni indeksin tjetër me një dy pika. Për shembull, ne shkruajmë rreshtin e dytë të matricës A në vektorin z

Ju gjithashtu mund të nënvizoni blloqet e matricave duke përdorur një dy pika. Për shembull, zgjidhni nga matrica P bllokun e shënuar me ngjyrë

Nëse keni nevojë të shikoni variablat e mjedisit të punës, në vijën e komandës duhet të shkruani komandën kushs .

Mund të shihni që hapësira e punës përmban një skalar (p), katër matrica (A, B, P, P1) dhe një vektor rreshti (z).

2.3. Operacionet bazë të matricës

Kur përdorni operacionet e matricës, mbani mend se për mbledhje ose zbritje, matricat duhet të jenë të së njëjtës madhësi dhe kur shumëzohen, numri i kolonave në matricën e parë duhet të jetë i barabartë me numrin e rreshtave në matricën e dytë. Mbledhja dhe zbritja e matricave, si dhe numrave dhe vektorëve, kryhet duke përdorur shenjat plus dhe minus

dhe shumëzimi tregohet me një yll *. Prezantoni një matricë 3 × 2

Shumëzimi i një matrice me një numër kryhet gjithashtu duke përdorur një yll, dhe ju mund të shumëzoni me një numër si në të djathtë ashtu edhe në të majtë. Një matricë katrore ngrihet në një fuqi numër të plotë duke përdorur operatorin ^

Kontrolloni rezultatin tuaj duke shumëzuar matricën P me vetveten.

2.4. Krijimi i matricave të veçanta

Mbushja e një matrice drejtkëndore me zero bëhet nga funksioni i integruar zero

Matrica e identitetit krijohet duke përdorur funksionin syri

Një matricë e përbërë nga njësh formohet si rezultat i thirrjes së funksionit ato

MatLab ofron mundësinë për të mbushur matricat me numra të rastit. Rezultati i funksionit randiështë një matricë numrash të shpërndarë në mënyrë të barabartë ndërmjet zeros dhe njës, dhe funksioneve randn- matrica e numrave të shpërndarë sipas ligjit normal me zero mesatare dhe variancë njësi.

Funksioni diag formon një matricë diagonale nga një vektor duke renditur elementët në mënyrë diagonale.

2.5. Llogaritjet e matricës

MatLab përmban shumë funksione të ndryshme për të punuar me matrica. Kështu, për shembull, një matricë transpozohet duke përdorur një apostrof "

Matrica e anasjelltë gjendet duke përdorur funksionin inv për matricat katrore

3. Integrimi i MatLab dhe Excel

Integrimi i MatLab dhe Excel lejon përdoruesin e Excel të aksesojë funksione të shumta MatLab për përpunimin e të dhënave, llogaritjet e ndryshme dhe vizualizimin e rezultatit. Shtesa excllink.xla zbaton këtë përmirësim të Excel. Për komunikimin ndërmjet MatLab dhe Excel, përcaktohen funksione të veçanta.

3.1. Konfigurimi i Excel

Përpara se të konfiguroni Excel për të punuar së bashku me MatLab, duhet të siguroheni që Excel Link është përfshirë në versionin e instaluar të MatLab. Skedari shtesë excllink.xla duhet të gjendet në nëndirektorinë exclink të drejtorisë kryesore të MatLab ose në nëndrejtorinë e kutisë së veglave. Nisni Excel dhe zgjidhni Shtesat nga menyja e Veglave. Do të hapet një kuti dialogu që përmban informacione rreth disponueshme ky moment superstrukturat. Përdorni butonin Browse për të specifikuar shtegun për në skedarin excllink.xla. Linja shfaqet në listën e shtesave në kutinë e dialogut Excel Link 2.0 për përdorim me MatLab me vendosjen e flamurit. Klikoni OK, shtesa e kërkuar është shtuar në Excel.

Vini re se Excel tani ka një shirit veglash Excel Link që përmban tre butona: putmatrix, getmatrix, evalstring. Këta butona zbatojnë veprimet kryesore të kërkuara për zbatimin e marrëdhënies midis Excel dhe MatLab - shkëmbimi i të dhënave të matricës dhe ekzekutimi i komandave MatLab nga mjedisi Excel. Kur Excel riniset, shtesa excllink.xla lidhet automatikisht.

Puna e koordinuar e Excel dhe MatLab kërkon disa cilësime të tjera, të cilat pranohen në Excel si parazgjedhje (por mund të ndryshohen). Në menunë Tools, shkoni te Opsionet, hapet kutia e dialogut Opsionet. Zgjidhni skedën e Përgjithshme dhe sigurohuni që flamuri i stilit të referencës R1C1 është i fikur, d.m.th. qelizat numërohen A1, A2, etj. Në skedën Edit, duhet të vendoset zgjedhja Lëviz pas Enter.

3.2. Shkëmbimi i të dhënave midis MatLab dhe Excel

Filloni Excel, kontrolloni që të gjitha cilësimet e nevojshme janë bërë siç përshkruhet në seksionin e mëparshëm (MatLab duhet të jetë i mbyllur). Futni një matricë në qelizat A1 deri në C3, përdorni një pikë për të ndarë numrat dhjetorë në përputhje me kërkesat e Excel.

Zgjidhni të dhënat e qelizave në fletë dhe shtypni butonin putmatrix, shfaqet një dritare Excel me një paralajmërim se MatLab nuk po funksionon. Klikoni OK, prisni që MatLab të hapet.

Një kuti dialogu Excel shfaqet me një linjë hyrëse që synon të përcaktojë emrin e ndryshores së mjedisit të punës MatLab, në të cilin duhet të eksportohen të dhënat nga qelizat e zgjedhura të Excel. Futni, për shembull, M dhe mbyllni dritaren me butonin OK. Shkoni te dritarja e komandës MatLab dhe sigurohuni që një variabël M është krijuar në mjedisin e prodhimit, që përmban një grup tre-nga-tre:

Kryeni disa operacione në MatLab me matricën M, për shembull, kthejeni atë në të kundërt.

Thirrni inv për të përmbysur matricën, si çdo komandë tjetër MatLab, mund ta kryeni direkt nga Excel. Shtypja e butonit evalstring, i vendosur në panelin Excel Link, çon në shfaqjen e një kutie dialogu, në vijën hyrëse të së cilës duhet të shkruani komandën MatLab.

IM = inv (M).

Rezultati është i ngjashëm me atë të marrë gjatë ekzekutimit të komandës në mjedisin MatLab.

Kthehuni në Excel, bëni qelizën A5 aktuale dhe klikoni butonin getmatrix. Shfaqet një kuti dialogu me një linjë hyrëse që ju kërkon të vendosni emrin e ndryshores që do të importohet në Excel. V në këtë rast një variabël i tillë është IM. Klikoni OK, qelizat A5 deri në A7 janë të mbushura me elementë të matricës së kundërt.

Pra, për të eksportuar një matricë në MatLab, duhet të zgjidhni qelizat e duhura të fletës Excel, dhe për import, mjafton të specifikoni një qelizë, e cila do të jetë elementi i sipërm majtas i grupit të importuar. Pjesa tjetër e elementeve do të shkruhen në qelizat e fletës sipas madhësisë së grupit, duke mbishkruar të dhënat që ato përmbajnë, kështu që duhet të keni kujdes kur importoni vargje.

Qasja e mësipërme është më e shumta në një mënyrë të thjeshtë shkëmbimi i informacionit ndërmjet aplikacioneve - të dhënat fillestare përmbahen në Excel, më pas eksportohen në MatLab, përpunohen atje në një farë mënyre dhe rezultati importohet në Excel. Përdoruesi transferon të dhëna duke përdorur butonat në shiritin e veglave Excel Link. Informacioni mund të paraqitet në formën e një matrice, d.m.th. zona drejtkëndore e fletës së punës. Qelizat e renditura në një rresht ose kolonë eksportohen në vektorët e rreshtave dhe vektorët e kolonave të MatLab, përkatësisht. Importimi i vektorëve të rreshtave dhe vektorëve të kolonave në Excel funksionon në mënyrë të ngjashme.

4. Programimi

4.1. M-skedarët

Puna nga linja e komandës MatLab është e vështirë nëse duhet të futni shumë komanda dhe t'i ndryshoni ato shpesh. Mbajtja e një ditari me një urdhër ditar dhe ruajtja e ambientit të punës e bën punën pak më të lehtë. Më së shumti në një mënyrë të përshtatshme Ekzekutimi i grupeve të komandave MatLab është përdorimi i skedarëve M, në të cilët mund të shtypni komanda, t'i ekzekutoni të gjitha menjëherë ose në pjesë, t'i ruani në një skedar dhe t'i përdorni më vonë. Redaktori i skedarëve M është menduar për të punuar me skedarët M. Me ndihmën e tij, ju mund të krijoni funksionet tuaja dhe t'i telefononi ato, duke përfshirë nga dritarja e komandës.

Hapni menynë File të dritares kryesore të MatLab dhe në artikullin New zgjidhni nën-artikullin M-file. Skedari i ri hapet në dritaren e redaktuesit të skedarit M, e cila është paraqitur në figurë.

Ekzistojnë dy lloje të skedarëve M në MatLab: skedari i programit ( Skript M-Files) që përmban një sekuencë komandash dhe funksionesh skedarësh ( Funksioni M-Files) që përshkruajnë funksionet e përcaktuara nga përdoruesi.

4.2. Program skedari

Shkruani komandat në redaktues që çojnë në ndërtimin e dy grafikëve në një dritare grafike

Tani ruani skedarin me emrin mydemo.m në nëndrejtorinë e punës së direktoriumit kryesor MatLab duke zgjedhur artikullin Ruaj si në menynë File të redaktuesit. Për të ekzekutuar të gjitha komandat që përmban skedari, zgjidhni artikullin Run në menynë Debug. Një dritare grafike do të shfaqet në ekran. Figura 1 që përmban grafikët e funksioneve.

Komandat e skedarit të programit dalin në dritaren e komandës. Për të shtypur daljen, përfundoni komandat me një pikëpresje. Nëse bëhet një gabim gjatë shtypjes dhe MatLab nuk mund ta njohë komandën, atëherë komandat ekzekutohen derisa të futet gabimisht, pas së cilës shfaqet një mesazh gabimi në dritaren e komandës.

Shumë mundësi e përshtatshme e ofruar nga redaktori i skedarit M është ekzekutimi i një pjese të komandave. Mbyllni dritaren e grafikës Figura 1... Zgjidhni me miun duke mbajtur butonin e majtë, ose me tastet me shigjeta ndërsa tasti është shtypur Zhvendosja, katër komandat e para dhe ekzekutojini ato nga artikulli Tekst. Ju lutemi vini re se vetëm një grafik shfaqet në dritaren grafike, që korrespondon me komandat e ekzekutuara:. Mos harroni se për të ekzekutuar disa nga komandat, zgjidhni ato dhe shtypni tastin F9.

Blloqet individuale të skedarit M mund të pajisen me komente që anashkalohen gjatë ekzekutimit, por janë të përshtatshëm kur punoni me skedarin M. Komentet fillojnë me një shenjë përqindjeje dhe theksohen automatikisht me të gjelbër, për shembull:

Një skedar ekzistues M hapet duke përdorur artikullin Open të menysë File të mjedisit të punës ose redaktuesin e skedarit M.

4.3. Funksioni i skedarit

Skedar-programi i mësipërm është vetëm një sekuencë komandash MatLab, ai nuk ka argumente hyrëse dhe dalëse. Për të përdorur metoda numerike dhe kur programoni aplikacionet tuaja në MatLab, duhet të jeni në gjendje të kompozoni funksione skedari që kryejnë veprimet e nevojshme me argumente hyrëse dhe të ktheni rezultatin e veprimit në argumentet e daljes. Le të shohim disa shembuj të thjeshtë për t'ju ndihmuar të kuptoni se si të punoni me funksionet e skedarëve.

Përqendrimi përdoret shpesh në përpunimin paraprak të të dhënave të analizës së kimiometrisë me shumë variacione. Ka kuptim të shkruani një funksion skedari një herë, dhe më pas ta thërrisni atë kudo që është e nevojshme të përqendrohet. Hapni një skedar të ri në redaktuesin e skedarit M dhe shkruani

Fjala funksion në rreshtin e parë specifikon që ky skedar përmban një skedar funksioni. Rreshti i parë është titulli i funksionit, i cili përmban emrin e funksionit dhe listën e argumenteve hyrëse dhe dalëse. Në shembull, emri i funksionit është në qendër, një argument hyrës është X dhe një dalje është Xc. Pas titullit vijojnë komentet dhe më pas trupi i funksionit (në këtë shembull ai përbëhet nga dy rreshta), ku llogaritet vlera e tij. Është e rëndësishme që vlera e llogaritur të shkruhet në Xc. Sigurohuni që të përfshini një pikëpresje për të parandaluar shfaqjen e informacionit të panevojshëm në ekran. Tani ruani skedarin në drejtorinë tuaj të punës. Vini re se zgjedhja e "Ruaj" ose "Ruaj" si artikull në menynë "Skedari" sjell një kuti dialogu të ruajtjes së skedarit, fusha e emrit të skedarit tashmë përmban përqendrimin e emrit. Mos e ndryshoni atë, ruajeni skedarin e funksionit në një skedar me emrin e sugjeruar!

Tani funksioni i krijuar mund të përdoret në të njëjtën mënyrë si sinoni i integruar, cos dhe të tjerët. Funksionet e veta mund të thirren nga një skedar programi dhe nga një funksion tjetër skedari. Mundohuni të shkruani vetë një funksion skedari që do të shkallëzojë matricat, d.m.th. ndani secilën kolonë me devijimin standard për atë kolonë.

Ju mund të shkruani një skedar funksioni me disa argumente hyrëse, të cilat vendosen në një listë të ndarë me presje. Ju gjithashtu mund të krijoni funksione që kthejnë vlera të shumta. Për ta bërë këtë, argumentet e daljes shtohen të ndara me presje në listën e argumenteve të daljes dhe vetë lista mbyllet në kllapa katrore. Një shembull i mirë është një funksion që konverton një kohë në sekonda në orë, minuta dhe sekonda.

Kur thirrni funksione skedari me disa argumente dalëse, rezultati duhet të shkruhet në një vektor me gjatësinë përkatëse.

4.4 Krijimi i një orari

MatLab ka mundësi të shumta për grafikimin e vektorëve dhe matricave, si dhe për krijimin e komenteve dhe printimin e grafikëve. Le të përshkruajmë disa funksione të rëndësishme grafike.

Funksioni komplot ka forma të ndryshme të lidhura me parametrat hyrës, për shembull grafiku (y) krijon një grafik linear pjesë-pjesë të varësisë së elementeve y nga indekset e tyre. Nëse dy vektorë jepen si argumente, atëherë grafiku (x, y) do të vizatojë y kundrejt x. Për shembull, për të vizatuar funksionin sin nga 0 në 2π, bëni sa më poshtë

Programi ka ndërtuar një grafik varësie që shfaqet në dritare Figura 1

MatLab cakton automatikisht ngjyrën e vet për çdo grafik (përveç rasteve kur përdoruesi e bën atë), gjë që ju lejon të dalloni midis grupeve të të dhënave.

Ekipi prit ju lejon të shtoni kthesa në një grafik ekzistues. Funksioni nënplot ju lejon të shfaqni grafikët e shumtë në një dritare

4.5 Printimi i grafikëve

Artikulli Print në menynë File dhe komanda shtypur printoni grafikë MatLab. Menyja Print sjell një kuti dialogu që ju lejon të zgjidhni opsionet standarde të zakonshme të printimit. Ekipi shtypur siguron më shumë fleksibilitet në daljen e daljes dhe ju lejon të kontrolloni printimin nga skedarët M. Rezultati mund të dërgohet direkt në printerin e paracaktuar ose të ruhet në një skedar të caktuar.

5. Shembuj programesh

Ky seksion rendit algoritmet më të zakonshme të përdorura në analizën e të dhënave shumëdimensionale. Konsiderohen të dyja metodat më të thjeshta të transformimit të të dhënave, përqendrimit dhe shkallëzimit, si dhe algoritmet për analizën e të dhënave - PCA, PLS.

5.1. Përqendrimi dhe shkallëzimi

Analiza shpesh kërkon transformimin e të dhënave origjinale. Metodat më të përdorura të transformimit të të dhënave janë përqendrimi dhe shkallëzimi i çdo ndryshoreje sipas devijimit standard. Në kodin e funksionit për centrimin e matricës është dhënë. Prandaj, vetëm kodi i funksionit është paraqitur më poshtë, i cili peshore të dhëna. Ju lutemi vini re se matrica origjinale duhet të jetë në qendër

funksioni Xs = shkallëzim (X)
% shkallëzim: matrica e daljes është Xs
% matrica X duhet të jetë në qendër

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

% fundi i shkallëzimit

5.2. SVD / PCA

Mënyra më e njohur për të kompresuar të dhënat në analiza multivariateështë analiza e komponentit kryesor (PCA). Matematikisht, PCA është një dekompozim i matricës origjinale X, d.m.th. paraqitjen e tij si produkt i dy matricave T dhe P

X = TP t + E

Matricë T quhet matrica e rezultateve, matrica quhet matrica e mbetur.

Mënyra më e thjeshtë për të gjetur matricat T dhe P- përdorni dekompozimin SVD përmes standardit Funksioni MatLab thirrur svd .

funksion = pcasvd (X)

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

% fundi i pcasvd

5.3 PCA / NIPALS

Për të ndërtuar llogaritë dhe ngarkesat PCA, përdoret algoritmi i përsëritur NIPALS, i cili llogarit një komponent në çdo hap. Matrica fillestare së pari X transformohet (të paktën - në qendër; shih) dhe shndërrohet në matricë E 0 , a= 0. Pastaj zbatohet algoritmi i mëposhtëm.

t 2. fq t = t t Ea / t t t 3. fq = fq / (fq t fq) ½ 4. t = Ea fq / fq t fq 5. Kontrolloni konvergjencën, nëse jo, atëherë shkoni te 2

Pas llogaritjes së radhës ( a th) komponentët, supozojmë ta=t dhe fqa=fq E a+1 = Eat fq aa+1.

Kodi i algoritmit NIPALS mund të shkruhet nga vetë lexuesit; në këtë tutorial, autorët japin versionin e tyre. Kur llogaritni PCA, mund të futni numrin e komponentëve kryesorë (numri i ndryshueshëmPC). Nëse nuk e dini se sa komponentë nevojiten, duhet të shkruani = pcanipals (X) në vijën e komandës dhe më pas programi do të vendosë numrin e komponentëve të barabartë me dimensionet më të vogla të matricës origjinale. X.

funksioni = pcanipals (X, numriPC)

% llogaritja e numrit të komponentëve
= madhësia (X); P =; T =;

Nëse e majta (numri PC)> 0
pc = numriPC (1);
elseif (gjatësia (numri PC) == 0) & X_r< X_c
pc = X_r;
tjetër
pc = X_c;
fundi;

për k = 1: pc
P1 = rand (X_c, 1); T1 = X * P1; d0 = T1 "* T1;
P1 = (T1 "* X / (T1" * T1)) "; P1 = P1 / normë (P1); T1 = X * P1; d = T1" * T1;

Ndërsa d - d0> 0,0001;
P1 = (T1 "* X / (T1" * T1)); P1 = P1 / normë (P1); T1 = X * P1; d0 = T1 "* T1;
P1 = (T1 "* X / (T1" * T1)); P1 = P1 / normë (P1); T1 = X * P1; d = T1 "* T1;
fund

X = X - T1 * P1; P = mace (1, P, P1"); T =;
fund

Si të llogarisni PCA duke përdorur shtesën Chemometrics mbulohet në tutorial

5.4 PLS1

Metoda më e popullarizuar për kalibrimin me shumë variacione është metoda e projeksionit latent (PLS). Kjo metodë kryen një zbërthim të njëkohshëm të matricës parashikuese X dhe matricat e përgjigjes Y:

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

Projeksioni është ndërtuar në mënyrë konsistente - në mënyrë që të maksimizohet korrelacioni midis vektorëve përkatës X-llogaritë ta dhe Y-llogaritë ua... Nëse blloku i të dhënave Y përfshin përgjigje të shumta (d.m.th. K> 1), mund të ndërtoni dy projeksione të të dhënave fillestare - PLS1 dhe PLS2. Në rastin e parë, për secilën nga përgjigjet y k ndërtohet nënhapësira e saj e projeksionit. Në të njëjtën kohë, llogaritë T (U) dhe ngarkesës P (W, P) varet nga cila përgjigje përdoret. Kjo qasje quhet PLS1. Për metodën PLS2, ndërtohet vetëm një hapësirë ​​projeksioni, e cila është e zakonshme për të gjitha përgjigjet.

Një përshkrim i detajuar i metodës PLS është dhënë në këtë libër.Për të ndërtuar llogaritë dhe ngarkesat PLS1, përdoret një algoritëm i përsëritur. Matricat fillestare së pari X dhe Y qendër

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

dhe ato kthehen në një matricë E 0 dhe vektor f 0 , a= 0. Pastaj ndaj tyre zbatohet algoritmi i mëposhtëm

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

Pas llogaritjes së radhës ( a th) komponentët, supozojmë ta=t dhe fqa=fq... Për të marrë komponentin tjetër, duhet të llogaritni mbetjet E a+1 = Eat fq t dhe aplikoni të njëjtin algoritëm për to, duke zëvendësuar indeksin aa+1.

Këtu është kodi për këtë algoritëm, marrë nga libri

funksion = pls (x, y)
% PLS: llogarit një komponent PLS.
% Vektorët e daljes janë w, t, u, q dhe p.
%
% Zgjidhni një vektor nga y si vektor fillestar u.

u = y (:, 1);

% Kriteri i konvergjencës është vendosur shumë i lartë.
kri = 100;

% Komandat nga këtu në fund përsëriten deri në konvergjencë.
ndërsa (kri> 1e - 10)

% Çdo vektor fillestar u ruhet si u vjetër.
uold = u; w = (u "* x)"; w = w / normë (w);
t = x * w; q = (t "* y)" / (t "* t);
u = y * q / (q "* q);

% Kriteri i konvergjencës është norma e u-uold pjesëtuar me normën e u.
kri = normë (uold - u) / normë (u);
fundi;

% Pas konvergjencës, njehsoni p.
p = (t "* x)" / (t "* t);

% Fundi i pls

Rreth llogaritjes së PLS1 me një shtesë KimiometriaShtoje ne të përshkruara në manualin Metodat e projektimit në sistemin Excel.

5.5 PLS2

Për PLS2, algoritmi është si më poshtë. Matricat fillestare së pari X dhe Y transformohen (të paktën - në qendër; shih), dhe ato kthehen në matrica E 0 dhe F 0 , a= 0. Pastaj ndaj tyre zbatohet algoritmi i mëposhtëm.

1. Zgjidhni vektorin fillestar 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. Kontrolloni konvergjencën, nëse jo, atëherë shkoni te 2 8. fq t = t t Ea / t t t

Pas llogaritjes së radhës ( a-th) Komponentët PLS2 duhet të vendosen: ta=t, fqa=p, wa=w, ua=u dhe q a = q... Për të marrë komponentin tjetër, duhet të llogaritni mbetjet E a+1 = Eat fq t dhe Fa +1 = F atq t dhe aplikoni të njëjtin algoritëm për to, duke zëvendësuar indeksin aa+1.

Këtu është kodi, i cili gjithashtu është huazuar nga libri.

funksion = plsr (x, y, a)
% PLS: llogarit një komponent PLS.
% Matricat e daljes janë W, T, U, Q dhe P.
% B përmban koeficientët e regresionit dhe SS shumat e
% katrorë për mbetjet.
% a është numri i komponentëve.
%
% Për një komponent: përdorni të gjitha komandat për të përfunduar.

Për i = 1: a
% Llogaritni shumën e katrorëve. Përdorni funksionin ss.
sx =;
sy =;

% Përdorni funksionin pls për të llogaritur një komponent.
= pls (x, y);

% Llogaritni mbetjet.
x = x - t * p ";
y = y - t * q ";

% Ruani vektorët në matrica.
W =;
T =;
U =;
Q =;
P =;
fundi;

% Llogaritni koeficientët e regresionit pas ciklit.
B = W * inv (P "* W) * Q";

% Shtoni SS-në përfundimtare të mbetur në shumën e vektorëve katrorë.
sx =;
sy =;

% Bëni një matricë të vektorëve ss për X dhe Y.
SS =;

% Llogaritni fraksionin e SS të përdorur.
= madhësia (SS);
tt = (SS * diag (SS (1,:). ^ (- 1)) - ato (a, b)) * (-1)

% Fundi i plsr

funksion = ss (x)
% SS: llogarit shumën e katrorëve të një matrice X.
%

ss = shuma (shuma (x. * x));
% Fundi i ss

Rreth llogaritjes së PLS2 me një shtesë KimiometriaShtoje ne të përshkruara në manualin Metodat e projektimit në sistemin Excel.

konkluzioni

MatLab është një mjet shumë i njohur për analizën e të dhënave. Sipas sondazhit, ai përdoret nga një e treta e të gjithë studiuesve, ndërsa programi Unsrambler përdoret nga vetëm 16% e shkencëtarëve. Disavantazhi kryesor i MatLab është ai cmim i larte... Përveç kësaj, MatLab është i mirë për llogaritjet rutinë. Mungesa e interaktivitetit e bën atë të papërshtatshëm gjatë kryerjes së kërkimit, llogaritjeve kërkimore për grupe të reja, të paeksploruara të të dhënave.

Disavantazhi i funksioneve të përshkruara të ruajtjes dhe ngarkimit është se ato punojnë me formate të caktuara skedarësh (zakonisht skedarë mat) dhe nuk lejojnë ngarkimin ose ruajtjen e të dhënave në formate të tjera. Ndërkohë, ekziston nevoja për të ngarkuar informacione, për shembull, nga skedarët binare të krijuar nga të tjerët. produkte softuerike për përpunimin e mëtejshëm të rezultateve në MatLab. Për këtë qëllim janë zhvilluar funksione

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

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

Këtu<идентификатор файла>është një tregues i skedarit për të punuar. Për të marrë identifikuesin, përdoret funksioni

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

ku parametri<режим работы>mund të marrë vlerat e treguara në tabelë. 5.1.

Tabela 5.1. Mënyrat e punës me skedarë në MatLab

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

përshkrim

shkruani (fshin përmbajtjen e mëparshme të skedarit)

shtoj (krijon një skedar nëse nuk ekziston)

lexoni dhe shkruani (nuk krijon një skedar nëse nuk ekziston)

lexo dhe shkruaj (pastron përmbajtjen e vjetër ose krijon një skedar nëse nuk ekziston)

lexo dhe shto (krijon një skedar nëse nuk ekziston)

një parametër shtesë që nënkupton punën me skedarë binare, për shembull, 'wb', 'rb' 'rb +', 'ab', etj.

Nëse funksioni fopen () për ndonjë arsye nuk mund ta hapë skedarin saktë, atëherë ai kthen -1. Më poshtë është një fragment i programit për shkrimin dhe leximin e të dhënave nga një skedar binar:

A =;

fid = fopen ("my_file.dat", "wb"); % hap skedarin për shkrim

gabim ("Skedari nuk hapet");
fund

fwrite (fid, A, "dyfish"); % e shkrimit të matricës në skedar (40 bajt)
fclose (fid); % mbyll skedarin

fid = fopen ("my_file.dat", "rb"); % hap skedarin për lexim
nëse fid == -1% kontrolloni nëse hapja është e saktë
gabim ("Skedari nuk hapet");
fund

B = fread (fid, 5, "dyfish"); % lexoi 5 vlera të dyfishta
disp (B); % shfaqja në ekran
fclose (fid); % mbyll skedarin

Si rezultat i funksionimit të këtij programi, në dosjen e punës do të krijohet një skedar 40-byte my_file.dat, i cili do të përmbajë 5 vlera të dyfishta të shkruara si një sekuencë bajtash (8 bajt për secilën vlerë). Funksioni fread () lexon bajtet e ruajtura në mënyrë sekuenciale dhe i konverton automatikisht në tip dyfish, d.m.th. çdo 8 bajt interpretohen si një vlerë e dyfishtë.

Në shembullin e dhënë, numri i elementeve (pesë) për t'u lexuar nga skedari është treguar në mënyrë eksplicite. Megjithatë, numri i përgjithshëm i elementeve shpesh nuk dihet paraprakisht, ose ndryshon gjatë funksionimit të programit. Në këtë rast, do të ishte më mirë të lexohen të dhënat nga skedari derisa të arrihet fundi i skedarit. Ekziston një funksion në MatLab për të kontrolluar nëse është arritur fundi i skedarit

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

e cila kthen 1 kur të arrihet fundi i skedarit dhe 0 në të kundërt. Le të rishkruajmë programin për të lexuar një numër arbitrar të elementeve të dyfishta nga skedari hyrës.

fid = fopen ("my_file.dat", "rb"); % hap skedarin për lexim
nëse fid == -1
fund

B = 0; % inicializimi i ndryshores
cnt = 1; % inicializimi i numëruesit
ndërsa ~ feof (fid)% loop derisa të arrihet fundi i skedarit
= fread (fid, 1, "dyfish"); % lexuar një
% vlerë e dyfishtë (V përmban vlerën
% e artikullit, N - numri i artikujve të lexuar)
nëse N> 0% nëse elementi është lexuar me sukses, atëherë
B (cnt) = V; % formojnë një vektor rreshti nga vlerat V
cnt = cnt + 1; % rrit numëruesin me 1
fund
fund
disp (B); % shfaqja e rezultatit në ekran
fclose (fid); % mbyll skedarin

Në këtë program, një vektor rreshti formohet në mënyrë dinamike ndërsa lexohen elementët skedari hyrës... MatLab rrit automatikisht dimensionin e vektorëve nëse indeksi artikulli tjetër 1 më shumë se maksimumi. Sidoqoftë, një procedurë e tillë kërkon shumë kohë makinerie dhe programi fillon të funksionojë dukshëm më ngadalë sesa nëse dimensioni i vektorit B që në fillim ishte përcaktuar i barabartë me 5 elementë, për shembull, si ky

Duhet të theksohet gjithashtu se funksioni fread () është shkruar me dy parametra dalës V dhe N. Parametri i parë përmban vlerën e artikullit të lexuar, dhe i dyti përmban numrin e artikujve të lexuar. Në këtë rast, vlera N do të jetë e barabartë me 1 sa herë që informacioni lexohet nga skedari saktë, dhe 0 kur lexohet karakteri i shërbimit EOF, që do të thotë fundi i skedarit. Kontrolli i mëposhtëm ju lejon të gjeneroni saktë një vektor të vlerave B.

Të dhënat e vargut gjithashtu mund të ruhen duke përdorur funksionet fwrite () dhe fread (). Për shembull, duke pasur parasysh vargun

str = "Përshëndetje MatLab";

fwrite (fid, str, "int16");

Lloji int16 përdoret këtu, pasi kur punoni me shkronja ruse, sistemi MatLab përdor një paraqitje prej dy bajtësh të secilit karakter. Më poshtë është një program për shkrimin dhe leximin e të dhënave të vargut duke përdorur funksionet fwrite () dhe fread ():

fid = fopen ("my_file.dat", "wb");
nëse fid == -1
gabim ("Skedari nuk hapet");
fund

str = "Përshëndetje MatLab"; % varg për të shkruar
fwrite (fid, str, "int16"); % shkruani në skedar
fclose (fid);

fid = fopen ("my_file.dat", "rb");
nëse fid == -1
gabim ("Skedari nuk hapet");
fund

B = ""; % inicializimi i vargut
cnt = 1;
ndërsa ~ feof (fid)
= fread (fid, 1, "int16 => char"); % e leximit të rrymës
% karakter dhe konvertim
% atë në char
nëse N> 0
B (cnt) = V;
cnt = cnt + 1;
fund
fund
disp (B); % shfaqja e linjës në ekran
fclose (fid);

Rezultati i ekzekutimit të programit do të duket si

Puna nga linja e komandës MatLab është e vështirë nëse duhet të futni shumë komanda dhe t'i ndryshoni ato shpesh. Mbajtja e një ditari me komandën ditar dhe ruajtja e ambientit të punës vetëm sa i lehtëson gjërat paksa. Mënyra më e përshtatshme për të ekzekutuar komandat MatLab është përdorimi M-skedarët, në të cilin mund të shkruani komanda, t'i ekzekutoni të gjitha menjëherë ose në pjesë, t'i ruani në një skedar dhe t'i përdorni më vonë. Redaktori i skedarëve M është menduar për të punuar me skedarët M. Duke përdorur këtë redaktues, ju mund të krijoni funksionet tuaja dhe t'i telefononi ato, duke përfshirë nga linja e komandës.

Zgjero menunë Skedari të dritares kryesore të MatLab dhe në paragrafin I ri zgjidhni nën-artikullin M-skedar... Skedari i ri hapet në dritaren e redaktuesit të skedarit M.

Shkruani komandat në redaktues që çojnë në ndërtimin e dy grafikëve në një dritare grafike:

x =;
f = exp (-x);
nënplot (1, 2, 1)
komplot (x, f)
g = mëkat (x);
nënplot (1, 2, 2)
komplot (x, g)

Ruani tani një skedar me emrin mydemo.m në një nëndrejtori puna të drejtorisë kryesore MatLab duke zgjedhur artikullin Ruaj si menu Skedari redaktor. Për të ekzekutuar të gjitha komandat e përfshira në skedar, zgjidhni artikullin Vraponi në meny Korrigjimi. Një dritare grafike do të shfaqet në ekran. Figura nr.1, që përmban grafikët e funksioneve. Nëse vendosni të vizatoni kosinusin në vend të sinusit, atëherë thjesht ndryshoni rreshtin g = sin (x) në skedarin M në g = cos (x) dhe ekzekutoni përsëri të gjitha komandat.

Vërejtje 1

Nëse bëhet një gabim gjatë shtypjes dhe MatLab nuk mund ta njohë komandën, atëherë komandat ekzekutohen derisa të futet gabimisht, pas së cilës shfaqet një mesazh gabimi në dritaren e komandës.

Një veçori shumë e përshtatshme e ofruar nga redaktori i skedarit M është ekzekutimi i disa komandave. Mbyllni dritaren e grafikës Figura Nr.1. Zgjidhni me miun duke mbajtur butonin e majtë, ose me tastet e shigjetave duke mbajtur të shtypur , katër komandat e para të programit dhe ekzekutojini ato nga pika Vlerësoni Përzgjedhja menu Teksti. Ju lutemi vini re se vetëm një tabelë shfaqet në dritaren grafike, që korrespondon me komandat e ekzekutuara. Mos harroni se për të ekzekutuar disa nga komandat, zgjidhni ato dhe shtypni ... Ekzekutoni tre komandat e mbetura të programit dhe monitoroni gjendjen e dritares grafike. Praktikoni vetë, shkruani çdo shembull nga laboratorët e mëparshëm në redaktuesin e skedarit M dhe ekzekutoni ato.

Blloqe individuale të skedarit M mund të sigurohen komente, të cilat anashkalohen gjatë ekzekutimit, por janë të përshtatshëm kur punoni me një skedar M. Komentet në MatLab fillojnë me një shenjë përqindjeje dhe theksohen automatikisht me të gjelbër, për shembull:

% duke vizatuar mëkatin (x) në një dritare të veçantë

Shumë skedarë mund të hapen në të njëjtën kohë në redaktuesin e skedarëve M. Kalimi midis skedarëve kryhet duke përdorur faqeshënuesit me emrat e skedarëve të vendosur në fund të dritares së redaktuesit.

Hapja e një skedari ekzistues M bëhet duke përdorur artikullin Hapur menu Skedari mjedisi i punës, ose redaktori i skedarëve M. Ju gjithashtu mund ta hapni skedarin në redaktues duke përdorur komandën e redaktimit MatLab nga rreshti i komandës, duke specifikuar emrin e skedarit si argument, për shembull:

Komanda edit pa argument krijon një skedar të ri.
Të gjithë shembujt që gjenden në këtë dhe në laboratorët e mëposhtëm shtypen dhe ruhen më së miri në skedarët M, plotësohen me komente dhe ekzekutohen nga redaktori i skedarit M. Aplikimi i metodave numerike dhe programimi në MatLab kërkon krijimin e skedarëve M.

2. Llojet e skedarëve M

Ekzistojnë dy lloje të skedarëve M në MatLab: skedar programi(Script M-Files) që përmban një sekuencë komandash, dhe skedar-funksionet(Funksioni M-Files), të cilat përshkruajnë funksionet e përcaktuara nga përdoruesi.

Keni krijuar një skedar programi (skedar procedurash) kur lexoni nënseksionin e mëparshëm. Të gjitha variablat e deklaruara në skedarin e programit bëhen të disponueshme në mjedisin e prodhimit pas ekzekutimit të tij. Ekzekutoni programin e skedarëve të paraqitur në nënseksionin 2.1 në redaktuesin e skedarit M? dhe shkruani whos në vijën e komandës për të parë përmbajtjen e mjedisit të punës. Përshkrimi i variablave do të shfaqet në dritaren e komandës:

"Kush
Klasa e madhësisë së emrit të bytes
f 1x71 568 grup i dyfishtë
g 1x71 568 grup i dyfishtë
x 1x71 568 grup i dyfishtë
Totali i përgjithshëm është 213 elementë duke përdorur 1704 bajt

Variablat e përcaktuar në një skedar programi mund të përdoren në programe të tjera skedarësh dhe në komandat e ekzekutuara nga linja e komandës. Ekzekutimi i komandave të përfshira në programin e skedarëve kryhet në dy mënyra:

  • Nga redaktori i skedarit M siç përshkruhet më sipër.
  • Nga linja e komandës ose skedari tjetër i programit, ndërsa emri i skedarit M përdoret si komandë.

Përdorimi i metodës së dytë është shumë më i përshtatshëm, veçanërisht nëse skedari i programit i krijuar do të përdoret në mënyrë të përsëritur më vonë. Në fakt, skedari M i gjeneruar bëhet një komandë që MatLab e kupton. Mbyllni të gjitha dritaret grafike dhe shkruani mydemo në vijën e komandës, shfaqet një dritare grafike që korrespondon me komandat në skedarin e programit mydemo.m. Pas futjes së komandës mydemo MatLab kryen veprimet e mëposhtme.

  • Kontrollon nëse komanda e futur është emri i ndonjë prej variablave të përcaktuar në mjedisin e prodhimit. Nëse futet një ndryshore, atëherë shfaqet vlera e saj.
  • Nëse nuk futet një ndryshore, atëherë MatLab kërkon komandën e futur midis funksioneve të integruara. Nëse komanda rezulton të jetë një funksion i integruar, atëherë ai ekzekutohet.

Nëse nuk futet një ndryshore ose një funksion i integruar, atëherë MatLab fillon të kërkojë për një skedar M me emrin e komandës dhe shtrirjen m... Kërkimi fillon me drejtoria aktuale(Direktoria aktuale), nëse skedari M nuk gjendet në të, atëherë MatLab kërkon drejtoritë e instaluara në shtigjet e kërkimit(Rrugë). Skedari M i gjetur ekzekutohet në MatLab.

Nëse asnjë nga veprimet e mësipërme nuk çoi në sukses, atëherë një mesazh shfaqet në dritaren e komandës, për shembull:

»Mydem
??? Funksion ose variabël i padefinuar "mydem".

Në mënyrë tipike, skedarët M ruhen në drejtorinë e përdoruesit. Në mënyrë që MatLab t'i gjejë ato, duhet të vendosni shtigjet që tregojnë vendndodhjen e skedarëve M.

Vërejtje 2

Mbaj skedarët e vet M jashtë direktoriumit kryesor MatLab vijon për dy arsye. Së pari, kur riinstaloni MatLab, skedarët që gjenden në nëndrejtoritë e drejtorisë kryesore MatLab mund të shkatërrohen. Së dyti, gjatë fillimit të MatLab, të gjithë skedarët e nëndirektorisë së kutisë së veglave vendosen në memorien e kompjuterit në një mënyrë optimale për të rritur performancën e punës. Nëse e keni shkruar skedarin M në këtë direktori, atëherë do të jetë e mundur ta përdorni atë vetëm pasi të rindizni MatLab.

3. Vendosja e shtigjeve

Në versionet 6 të MatLab .x përcaktohen direktoria aktuale dhe shtigjet e kërkimit. Këto veti vendosen ose duke përdorur të përshtatshmen kutitë e dialogut ose me komanda nga linja e komandës.

Drejtoria aktuale përcaktohet në një kuti dialogu Aktuale Drejtoria Ambienti i punës. Dritarja është e pranishme në mjedisin e punës nëse artikulli zgjidhet Aktuale Drejtoria menu Pamje Ambienti i punës.
Drejtoria aktuale zgjidhet nga lista. Nëse nuk është në listë, atëherë mund të shtohet nga kutia e dialogut Shfletoni për Dosja, thirret duke klikuar në butonin që ndodhet në të djathtë të listës. Përmbajtja e drejtorisë aktuale shfaqet në tabelën e skedarëve.

Shtigjet e kërkimit përcaktohen në kutinë e dialogut Set Rrugë navigator i rrugës, i aksesuar nga pika Set Rrugë menu Skedari Ambienti i punës.

Për të shtuar një drejtori, klikoni butonin Shtoni Dosja Shfletoni për Rrugë zgjidhni drejtorinë e kërkuar. Shtimi i një drejtorie me të gjitha nëndrejtoritë e saj kryhet duke klikuar në butonin Shto me nëndosjet. MATLAB kërkimi rrugë. Rendi i kërkimit korrespondon me vendndodhjen e shtigjeve në këtë fushë, me direktorinë e vendosur në krye të listës duke parë së pari. Rendi i kërkimit mund të ndryshohet ose rruga drejt një drejtorie mund të fshihet fare, për të cilën zgjidhni direktorinë në fushë MATLAB kërkimi rrugë dhe përcaktoni pozicionin e tij duke përdorur butonat e mëposhtëm:
Lëvizni te Top - lëvizni në krye të listës;
Lëvizni Lart - ngjit një pozicion lart;
Hiq - hiqni nga lista;
Lëvizni Poshtë - lëvizni poshtë një pozicion;
Lëvizni te Poshtë - vënë në fund të listës.

4. Komandat për vendosjen e shtigjeve.

Hapat për të vendosur shtigjet në MatLab 6 .x dublikuar nga komandat. Drejtoria aktuale vendoset me komandën cd, për shembull cd c: \ users \ igor. Komanda cd, e thirrur pa argument, printon shtegun për në drejtorinë aktuale. Për të vendosur shtigje, përdorni komandën path, të thirrur me dy argumente:

rruga (shtegu, "c: \ users \ igor") - shton direktoriumin c: \ users \ igor me prioritetin më të ulët të kërkimit;
shteg ("c: \ users \ igor", shteg) - shton direktoriumin c: \ users \ igor me prioritetin më të lartë të kërkimit.

Përdorimi i komandës rrugë pa argumente rezulton në një listë të shtigjeve të kërkimit të shfaqura në ekran. Ju mund të hiqni një shteg nga lista duke përdorur komandën rmpath:

rmpath ("c: \ users \ igor") heq shtegun për në direktorinë c: \ users \ igor nga lista e shtigjeve.

Vërejtje 3

Mos i fshini pa nevojë shtigjet drejt drejtorive, veçanërisht ato për qëllimin e të cilave nuk jeni të sigurt. Heqja mund të çojë në faktin se disa nga funksionet e përcaktuara në MatLab do të bëhen të padisponueshme.

Shembull. Krijo në direktorinë rrënjë të diskut D(ose ndonjë disk ose drejtori tjetër ku studentët lejohen të krijojnë drejtoritë e tyre) një direktori me mbiemrin tuaj, për shembull WORK_IVANOV, dhe shkruani skedarin M mydemo.m nën emrin mydemo3.m atje. Vendosni shtigjet në skedar dhe demonstroni se skedari është i aksesueshëm nga linja e komandës. Raportoni rezultatet në raportin e laboratorit.

Opsioni i zgjidhjes:

1. Në direktorinë rrënjë të diskut Dështë krijuar drejtoria WORK_IVANOV.
2. Dosja M-mydemo.m me emrin mydemo3.m është shkruar në direktorinë WORK_IVANOV.
3. Hapet një kuti dialogu. Set Rrugë menu Skedari mjedisi i punës MatLab.
4. Shtypet butoni Shtoni Dosja dhe në dialogun që shfaqet Shfletoni për Rrugëështë zgjedhur drejtoria WORK_IVANOV.
5. Shtimi i një drejtorie me të gjitha nëndrejtoritë e tij kryhet duke shtypur butonin Shtoni me Nëndosjet. Rruga drejt drejtorisë së shtuar shfaqet në fushë MATLAB kërkimi rrugë.
6. Për të mësuar përmendësh shtegun, shtypni tastin Ruaj kuti dialogu Set Rrugë.
7. Kontrollimi i korrektësisë së të gjitha veprimeve duke shtypur komandën mydemo3 nga rreshti i komandës. Një dritare grafike do të shfaqet në ekran.

5. Funksionet e skedarit

Programet e skedarëve të mësipërm janë një sekuencë komandash MatLab, ato nuk kanë argumente hyrëse dhe dalëse. Për metodat numerike dhe programimin aplikacionet e veta në MatLab, ju duhet të jeni në gjendje të kompozoni funksione skedari që kryejnë veprimet e nevojshme me argumentet hyrëse dhe të ktheni rezultatin në argumentet e daljes. Në këtë nënseksion, diskutohen disa shembuj të thjeshtë për t'ju ndihmuar të kuptoni se si të punoni me funksionet e skedarëve. Funksionet e skedarit, si procedurat e skedarëve, krijohen në redaktuesin e skedarit M.

5.1. Skedari funksionon me një argument hyrës

Supozoni se në llogaritjet shpesh është e nevojshme të përdoret funksioni

Ka kuptim të shkruani një funksion skedari një herë, dhe pastaj ta thërrisni atë kudo që është e nevojshme për të vlerësuar këtë funksion. Hapni në redaktuesin e skedarit M skedar i ri dhe shkruani tekstin e listimit

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

Fjala funksion në rreshtin e parë e specifikon atë këtë skedar përmban një skedar funksioni. Rreshti i parë është kreu i funksionit, e cila pret emri i funksionit dhe listat e argumenteve hyrëse dhe dalëse. Në shembullin e paraqitur në listë, emri i funksionit është myfun, një argument hyrës është x dhe një dalje është f. Titulli pasohet nga funksioni i trupit(në këtë shembull, ai përbëhet nga një rresht), ku llogaritet vlera e tij. Është e rëndësishme që vlera e llogaritur të shkruhet në f. Pikëpresje për të parandaluar daljen informacione të panevojshme në ekran.

Tani ruani skedarin në drejtorinë tuaj të punës. Ju lutemi vini re se zgjedhja e artikullit Ruaj ose Ruaj si menu Skedariçon në shfaqjen e një dialog box-i për ruajtjen e skedarit, në fushë Skedari emri e cila tashmë përmban emrin myfun. Mos e ndryshoni atë, ruajeni skedarin e funksionit në një skedar me emrin e sugjeruar.

Tani funksioni i krijuar mund të përdoret në të njëjtën mënyrë si sinin e integruar, cos dhe të tjerët, për shembull, nga linja e komandës:

"Y = myfun (1.3)
Y =
0.2600

Funksionet e veta mund të thirren nga një skedar programi dhe nga një funksion tjetër skedari.

Paralajmërim

Drejtoria që përmban skedarin e funksionit duhet të jetë aktual, ose shtegu drejt tij duhet të shtohet në shtigjet e kërkimit, përndryshe MatLab thjesht nuk do ta gjejë funksionin, ose në vend të kësaj do të thërrasë një tjetër me të njëjtin emër (nëse ndodhet në drejtoritë e disponueshme për kërkim).

Funksioni i skedarit i paraqitur në listë ka një pengesë të rëndësishme. Përpjekja për të llogaritur vlerat e funksionit nga një grup rezulton në një gabim, jo ​​një grup vlerash, siç ndodh kur vlerësohen funksionet e integruara.

"X =;
"Y = myfun (x)
??? Gabim duke përdorur ==> ^
Matrica duhet të jetë katrore.
Gabim në ==> C: \ MATLABRll \ work \ myfun.m
Në rreshtin 2 ==> f = exp (-x) * sqrt ((x ^ 2 + 1) / (x ^ 4 + 1));

Nëse keni studiuar punën me vargje, atëherë eliminimi i kësaj mangësie nuk do të shkaktojë vështirësi. Thjesht duhet të përdorni operacione elementare kur llogaritni vlerën e një funksioni.
Modifikoni trupin e funksionit siç tregohet në listën e mëposhtme (mos harroni të ruani ndryshimet në skedarin myfun.m).

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

Tani argumenti i funksionit myfun mund të jetë ose një numër ose një vektor ose një matricë vlerash, për shembull:

"X =;
"Y = myfun (x)
Y =
0.2600 0.0001

Ndryshorja y, në të cilën është shkruar rezultati i thirrjes së funksionit myfun, bëhet automatikisht një vektor i madhësisë së kërkuar.

Paraqitni funksionin myfun në një segment nga linja e komandës ose duke përdorur një program skedari:

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

MatLab ofron një mundësi më shumë për të punuar me funksionet e skedarëve - duke i përdorur ato si argumente për disa komanda. Për shembull, një funksion i veçantë fplot përdoret për vizatimin e një grafiku, i cili zëvendëson sekuencën e komandave të paraqitura më sipër. Kur thërrisni fplot, emri i funksionit, grafiku i të cilit dëshironi të vizatoni është i mbyllur me apostrofa, kufijtë e vizatimit specifikohen në një vektor rreshti me dy elementë.

fplot ("myfun",)

Komplotoni parcelat myfun me komplot dhe fplot në të njëjtat akse me mbajtje. Ju lutemi vini re se grafiku i vizatuar me fplot pasqyron më saktë sjelljen e funksionit, pasi vetë fplot zgjedh hapin e argumentit, duke e ulur atë në zonat e ndryshimit të shpejtë të funksionit të shfaqur. Raportoni rezultatet në raportin e laboratorit.

5.2. Skedari funksionon me argumente të shumta hyrëse

Shkrimi i funksioneve të skedarit me disa argumente hyrëse është praktikisht i njëjtë si në rastin e një argumenti. Të gjitha argumentet e hyrjes vendosen në një listë të ndarë me presje. Për shembull, lista e mëposhtme përmban një funksion skedari që llogarit gjatësinë e vektorit të rrezes së një pike në hapësirën tredimensionale
Listimi i një funksioni skedari me disa argumente

funksioni r = rrezja 3 (x, y, z)
r = sqrt (x. ^ 2 + y. ^ 2 + z. ^ 2);

»R = rrezja 3 (1, 1, 1)
R =
1.732

Përveç funksioneve me argumente të shumta hyrëse, MatLab ju lejon të krijoni funksione që kthejnë vlera të shumta, d.m.th. duke pasur argumente të shumta në dalje.

5.3. Skedari funksionon me argumente të shumta dalëse

Funksionet e skedarëve me argumente të shumta dalëse janë të dobishme kur vlerësohen funksionet që kthejnë vlera të shumta (në matematikë ato quhen funksionet vektoriale). Argumentet e daljes i shtohen listës së argumenteve dalëse, të ndara me presje, dhe vetë lista është e mbyllur në kllapa katrore. Një shembull i mirë është një funksion që konverton një kohë në sekonda në orë, minuta dhe sekonda. Ky funksion skedari shfaqet në listën e mëposhtme.

Lista e funksionit për konvertimin e sekondave në orë, minuta dhe sekonda

funksion = hms (sek)
orë = dysheme (sek / 3600);
minutë = dysheme ((sek-orë * 3600) / 60);
e dyta = sekondë-orë * 3600-minuta * 60;

Kur thirrni funksionet e skedarit me disa argumente dalëse, rezultati duhet të shkruhet në një vektor me gjatësinë e duhur:

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

6. Bazat e programimit në MatLab

Funksionet e skedarit dhe skedari i programit të përdorur në nënseksionet e mëparshme janë shembujt më të thjeshtë të programeve.Të gjitha komandat e MatLab të përfshira në to ekzekutohen në mënyrë sekuenciale. Për të zgjidhur shumë probleme më serioze, është e nevojshme të shkruhen programe në të cilat veprimet kryhen në mënyrë ciklike ose, në varësi të kushteve të caktuara, ekzekutohen pjesë të ndryshme të programeve. Le të shqyrtojmë operatorët kryesorë që vendosin sekuencën e ekzekutimit të komandave MatLab. Operatorët mund të përdoren si në procedurat e skedarëve ashtu edhe në funksione, gjë që ju lejon të krijoni programe me një strukturë komplekse të degëzuar.

6.1. Operatori i ciklit për

Operatori është krijuar për të kryer një numër të caktuar veprimesh të përsëritura. Përdorimi më i thjeshtë i deklaratës for është si më poshtë:

për numërim = fillim: hap: përfundimtar
Komandat e MatLab
fund

Këtu count është ndryshorja e ciklit, fillimi është vlera e tij fillestare, përfundimtare është vlera përfundimtare dhe hapi është hapi me të cilin numërimi rritet sa herë që futet cikli. Cikli përfundon sapo numërimi bëhet më i madh se përfundimtar. Variabla e lakut mund të marrë jo vetëm vlera të plota, por edhe vlera reale të çdo shenje. Le të analizojmë përdorimin e operatorit for loop duke përdorur disa shembuj tipikë.
Le të kërkohet të nxirret një familje kurbash për, e cila jepet nga një funksion në varësi të parametrit për vlerat e parametrave nga -0.1 në 0.1.
Shkruani tekstin e procedurës së skedarit në redaktuesin e skedarit M dhe ruajeni në skedarin FORdem1.m dhe ekzekutoni atë (nga redaktori i skedarit M ose nga linja e komandës duke shtypur komandën FORdem1 në të dhe shtypni ):

% skedar-program për ndërtimin e një familje kurbash
x =;
për një = -0.1: 0.02: 0.1
y = exp (-a * x) * sin (x);
prit
komplot (x, y)
fund

Vërejtje 4

Redaktori i skedarit M ofron automatikisht vendosjen e deklaratave brenda qarkut, të futura nga skaji i majtë. Përdoreni këtë mundësi për lehtësinë e punës me tekstin e programit.

Si rezultat i ekzekutimit të FORdem1, do të shfaqet një dritare grafike, e cila përmban familjen e kërkuar të kurbave.

Shkruani një skedar programi për të llogaritur shumën

Algoritmi për llogaritjen e shumës përdor akumulimin e rezultatit, d.m.th. në fillim shuma është e barabartë me zero ( S= 0), pastaj në një ndryshore k Futet 1, llogaritet 1 / k! është shtuar në S dhe rezultati futet përsëri S... Me tutje k rritet me një dhe procesi vazhdon derisa termi i fundit të bëhet 1/10 !. Programi i skedarëve Fordem2, i paraqitur në listën e mëposhtme, llogarit shumën e kërkuar.

Listimi i programit të skedarëve Fordem2 për llogaritjen e shumës

% skedar-program për llogaritjen e shumës
% 1/1!+1/2!+ … +1/10!

% Zero S për të grumbulluar shumën
S = 0;
% akumulimi i sasisë në cikël
për k = 1:10
S = S + 1 / faktorial (k);
fund
% nxjerr rezultatin në dritaren e komandës S

Shkruani skedarin e programit në redaktuesin e skedarit M, ruajeni në drejtorinë aktuale në skedarin Fordem2.m dhe ekzekutojeni. Rezultati do të shfaqet në dritaren komanduese, sepse në rreshtin e fundit të skedarit të programit S përmban pa pikëpresje për të nxjerrë vlerën e ndryshores S

Vini re se pjesa tjetër e rreshtave në skedarin e programit, të cilat mund të kenë shkaktuar shfaqjen e vlerave të ndërmjetme, mbyllen me një pikëpresje për të shtypur daljen në dritaren e komandës.

Dy rreshtat e parë me komente nuk ndahen rastësisht nga një rresht bosh nga pjesa tjetër e tekstit të programit. Janë ato që shfaqen kur përdoruesi, duke përdorur komandën e ndihmës nga linja e komandës, merr informacion se çfarë po bën Fordem2.

>> ndihmë Fordem2
skedar-program për llogaritjen e shumës
1/1!+1/2!+ … +1/10!

Kur shkruani programe skedarësh dhe funksione skedarësh, mos i lini pas dore komentet!
Të gjitha variablat e përdorur në skedarin e programit bëhen të disponueshme në mjedisin e prodhimit. Ato janë të ashtuquajturat variabla globale. Nga ana tjetër, të gjitha variablat e futura në mjedisin e punës mund të përdoren në një skedar programi.

Konsideroni problemin e llogaritjes së shumës, i ngjashëm me atë të mëparshëm, por në varësi të ndryshores x

Për të llogaritur këtë shumë në programin e skedarëve Fordem2, duhet të ndryshoni linjën brenda ciklit for në

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

Para se të filloni programin, duhet të përcaktoni variablin x në vijën e komandës me komandat e mëposhtme:

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

Si x mund të jetë një vektor ose një matricë, pasi operacionet element pas elementi janë përdorur për të grumbulluar shumën në programin skedar Fordem2.

Para se të filloni Fordem2, sigurohuni që t'i caktoni variablit x disa vlera, dhe për të llogaritur shumën, për shembull, të pesëmbëdhjetë termave, do të duhet të bëni ndryshime në tekstin e skedarit të programit. Është shumë më mirë të shkruhet një funksion i skedarit gjenerik që ka një vlerë si argumente hyrëse x dhe kufiri i sipërm i shumës, dhe fundjava është vlera e shumës S(x). Funksioni i skedarit sumN shfaqet në listën e mëposhtme.

Listimi i funksionit të skedarit për llogaritjen e shumës

funksioni S = shuma N (x, N)
% file-funksion për llogaritjen e shumës
% x / 1! + x ^ 2/2! +… + x ^ N / N!
% e përdorimit: S = shumaN (x, N)

% zero S për të grumbulluar shumën
S = 0;
% akumulimi i sasisë në cikël
për m = 1: 1: N
S = S + x. ^ M / faktorial (m);
fund

Përdoruesi mund të mësojë rreth përdorimit të funksionit sumN duke shtypur help sumN në vijën e komandës. Dritarja e komandës do të shfaqë tre rreshtat e parë me komente, të ndara nga teksti i funksionit të skedarit me një rresht bosh.

Vini re se variablat e funksionit skedar nuk janë globale (m në shumën e funksionit të skedarit N). Përpjekja për të parë vlerën e m nga linja e komandës rezulton në një mesazh që thotë se m është i papërcaktuar. Nëse në mjedisin e punës ekziston një variabël global me të njëjtin emër, i përcaktuar nga linja komanduese ose në programin skedar, atëherë ai nuk lidhet në asnjë mënyrë me variablin lokal në funksionin skedar. Si rregull, është më mirë të hartoni algoritmet tuaja në formën e funksioneve të skedarëve në mënyrë që variablat e përdorur në algoritëm të mos ndryshojnë vlerat e të njëjtave variabla globale të mjedisit të punës.

For sythe mund të vendosen brenda njëri-tjetrit, ndërsa variablat e sytheve të mbivendosur duhet të jenë të ndryshëm.

Cikli for është i dobishëm për kryerjen e veprimeve të përsëritura, të ngjashme kur numri është i paracaktuar. Një lak më fleksibël ndërsa ju lejon të kapërceni këtë kufizim.

6.2. Ndërsa deklarata e ciklit

Konsideroni një shembull për llogaritjen e një shume, të ngjashëm me shembullin nga paragrafi i mëparshëm... Kërkohet të gjendet shuma e një serie për një të dhënë x(zgjerimi i serisë):
.

Shuma mund të grumbullohet për sa kohë që termat nuk janë shumë të vogla, le të themi më shumë në modul. Liku for është i domosdoshëm këtu, pasi numri i termave nuk dihet paraprakisht. Mënyra për të dalë është përdorimi i një cikli while, i cili funksionon për sa kohë që plotësohet kushti i ciklit:

ndërsa gjendja e lakut
Komandat e MatLab
fund

Në këtë shembull, kushti i ciklit siguron që termi aktual është më i madh. Shenja më e madhe se (>) përdoret për të regjistruar këtë gjendje. Teksti i funksionit të skedarit mysin që llogarit shumën e një serie tregohet në listën e mëposhtme.

Listimi i funksionit të skedarit mysin që llogarit zgjerimin sinus sipas serisë

funksioni S = mysin (x)
% Llogaritni zgjerimin sinus me seri
% Përdorimi: y = mysin (x), -pi

S = 0;
k = 0;
ndërsa abs (x. ^ (2 * k + 1) / faktorial (2 * k + 1))> 1.0e-10
S = S + (-1) ^ k * x. ^ (2 * k + 1) / faktorial (2 * k + 1);
k = k + 1;
fund

Vini re se cikli while, ndryshe nga for, nuk ka një variabël loop, kështu që ne duhej të caktonim zero përpara se të fillonte cikli, dhe brenda ciklit e rritëm k me një.
Kushti i ciklit while mund të përmbajë më shumë se vetëm shenjën>. Për të vendosur kushtet për ekzekutimin e ciklit, lejohen edhe operacione të tjera të relacionit, të dhëna në tabelë. një.

Tabela 1. Operacionet e marrëdhënieve

Kushtet më komplekse janë specifikuar duke përdorur operatorë logjikë. Për shembull, kushti konsiston në përmbushjen e njëkohshme të dy pabarazive dhe, dhe shkruhet duke përdorur operatorin logjik dhe

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

ose në mënyrë të barabartë me &

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

Operatorët logjikë dhe shembujt e përdorimit të tyre janë dhënë në tabelë. 2.

Tabela 2. Operatorët logjikë

Operatori

Duke shkruar në MatLab

Shënim ekuivalent

"DHE" logjike

dhe (x< 3, k == 4)

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

"OR" logjike

Ose (x == 1, x == 2)

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

Duke mohuar "JO"

Kur llogaritni shumën e një serie të pafundme, ka kuptim të kufizoni numrin e termave. Nëse seria ndryshon për shkak të faktit se anëtarët e saj nuk priren në zero, atëherë kushti për një vlerë të vogël të termit aktual mund të mos përmbushet kurrë dhe programi do të qarkullojë. Kryeni përmbledhjen duke shtuar një kufi në numrin e termave kushtit të qarkut while të funksionit të skedarit mysin:

ndërsa (abs (x. ^ (2 * k + 1) / faktorial (2 * k + 1))> 1.0e-10) & (k<=10000))

ose në formë ekuivalente

ndërsa dhe (abs (x. ^ (2 * k + 1) / faktorial (2 * k + 1))> 1.0e-10), k<=10000)

Organizimi i veprimeve të përsëritura në formën e sytheve e bën programin të thjeshtë dhe të kuptueshëm; megjithatë, shpesh kërkohet të ekzekutohet një ose një bllok tjetër komandash në varësi të kushteve të caktuara, d.m.th. përdorni degëzimin e algoritmit.

6.3. Deklarata e kushtëzuar nëse

Operator i kushtëzuar nëse ju lejon të krijoni një algoritëm degëzimi për ekzekutimin e komandave, në të cilin, kur plotësohen disa kushte, funksionon blloku përkatës i operatorëve ose komandat MatLab.

Deklarata if mund të përdoret në formën e saj të thjeshtë për të ekzekutuar një bllok komandash kur plotësohet një kusht i caktuar, ose në një konstrukt if-elseif-else për të shkruar algoritme degëzimi.
Le të vlerësohet shprehja. Supozoni se po kryeni llogaritjet në zonën e sferës dhe dëshironi të shfaqni një paralajmërim se rezultati është një numër kompleks. Përpara se të vlerësoni funksionin, duhet të kontrolloni vlerën e argumentit x dhe të printoni një paralajmërim në dritaren e komandës nëse moduli x nuk e kalon një. Këtu është e nevojshme të përdoret operatori i kushtëzuar nëse, aplikimi i të cilit në rastin më të thjeshtë duket si ky:

nëse kusht
Komandat e MatLab
fund

Nëse kushti plotësohet, atëherë zbatohen komandat MatLab të vendosura ndërmjet if dhe endit, dhe nëse kushti nuk plotësohet, atëherë ndodh kalimi në komandat e vendosura pas përfundimit. Kur regjistroni një gjendje, përdoren operacionet e paraqitura në tabelë. një.

Funksioni i skedarit që kontrollon vlerën e argumentit është paraqitur në listën e mëposhtme. Komanda paralajmëruese përdoret për të shfaqur një paralajmërim në dritaren e komandës.

Listimi i funksionit të skedarit Rfun që kontrollon vlerën e argumentit

funksioni f = Rfun (x)
% llogarit sqrt (x ^ 2-1)
% shfaq një paralajmërim nëse rezultati është kompleks
% e përdorimit y = Rfun (x)

% kontrolloni argumentin
nëse abs (x)<1
paralajmërim ("rezultati është kompleks")
fund
% vlerësimi i funksionit
f = sqrt (x ^ 2-1);

Tani thirrja e Rfun në një argument më të vogël se një do të nxjerrë një paralajmërim në dritaren e komandës:

>> y = Rfun (0.2)
rezultati është kompleks
y =
0 + 0,97979589711327i

Skedari i funksionit Rfun vetëm paralajmëron se vlera e tij është komplekse dhe të gjitha llogaritjet me të vazhdojnë. Nëse rezultati kompleks nënkupton një gabim në llogaritje, atëherë funksioni duhet të ndërpritet duke përdorur komandën e gabimit në vend të paralajmërimit.

6.4. Operatori i degëzimit if-elseif-else

V rast i përgjithshëm aplikimi i operatorit të degës if-elseif-else është si më poshtë:

nëse kushti 1
Komandat e MatLab
gjendja ndryshe 2
Komandat e MatLab
ndryshe gjendja 3
Komandat e MatLab
. . . . . . . . . . .
gjendja ndryshe N
Komandat e MatLab
tjetër
Komandat e MatLab
fund

Në varësi të performancës së njërit apo tjetrit prej N kushteve, dega përkatëse e programit funksionon nëse asnjë prej tyre N kushte, atëherë zbatohen komandat MatLab të vendosura pas else. Pas ekzekutimit të njërës prej degëve, operatori del. Mund të ketë aq degë sa të doni, ose vetëm dy. Në rastin e dy degëve, përdoret pjesa tjetër dhe pjesa tjetër anashkalohet. Deklarata duhet të përfundojë gjithmonë me fund.
Një shembull i përdorimit të operatorit if-elseif-else është paraqitur në listën e mëposhtme.

funksioni ifdem (a)
% shembull i përdorimit të operatorit if-elseif-else

nëse (a == 0)
paralajmërim ("baraz me zero")
ndryshe a == 1
paralajmërim ("është i barabartë me një")
ndryshe a == 2
paralajmërim ("baraz me dy")
ndryshe a> = 3
paralajmërim ("a, është më e madhe ose e barabartë me tre")
tjetër
paralajmërim ("a është më pak se tre, dhe jo e barabartë me zero, një, dy")
fund

6.5. Operatori i degës kaloni

Deklarata switch mund të përdoret për të kryer përzgjedhje ose degëzim të shumëfishtë. . Është një alternativë ndaj operatorit if-elseif-else. Në përgjithësi, aplikimi i ndërprerësit të operatorit të degëzimit duket si ky:

switch switch_shprehje
vlera e rastit 1
Komandat e MatLab
vlera e rastit 2
Komandat e MatLab
. . . . . . . . . . .
vlera e rastit N
Komandat e MatLab
rasti (vlera N + 1, vlera N + 2, ...)
Komandat e MatLab
. . . . . . . . . . . .
rasti (vlera NM + 1, vlera NM + 2, ...)
ndryshe
Komandat e MatLab
fund

V këtë operator vlera e switch_expression vlerësohet së pari (mund të jetë një vlerë numerike skalare ose një varg karakteresh). Kjo vlerë krahasohet më pas me vlerat e mëposhtme: vlera 1, vlera 2,…, vlera N, vlera N + 1, vlera N + 2,…, vlera NM + 1, vlera NM + 2,… (që mund të jenë edhe numerike ose varg) ... Nëse gjendet një përputhje, atëherë komandat MatLab pas fjalës kyçe të rastit përkatës ekzekutohen. Përndryshe, komandat MatLab të vendosura midis fjalëve kyçe ndryshe dhe fund ekzekutohen.

Linjat me fjalë kyçe rasti mund të jetë aq sa dëshironi, por duhet të ketë një rresht me fjalën kyçe ndryshe.

Pas ekzekutimit të ndonjë prej degëve, çelësi del, ndërsa vlerat e specifikuara në raste të tjera nuk kontrollohen.

Shembulli i mëposhtëm ilustron përdorimin e ndërprerësit:

ndërprerësi i funksionit (x)
a = 10/5 + x
kaloni a
rasti -1
paralajmërim ("a = -1")
rasti 0
paralajmërim ("a = 0")
rasti 1
paralajmërim ("a = 1")
rasti (2, 3, 4)
paralajmërim ("a është 2 ose 3 ose 4")
ndryshe
paralajmërim ("a nuk është e barabartë me -1, 0, 1, 2, 3, 4")
fund

>> x = -4
ndërprerësi (x)
a =
1
paralajmërim: a = 1
>> x = 1
ndërprerësi (x)
a =
6
paralajmërim: a nuk është e barabartë me -1, 0, 1, 2, 3, 4

6.6. Deklarata e ndërprerjes së ciklit thyej

Gjatë organizimit të llogaritjeve ciklike, duhet pasur kujdes për të shmangur gabimet brenda lakut. Për shembull, supozoni se ju jepet një grup x i përbërë nga numra të plotë, dhe ju duhet të formoni një grup të ri y sipas rregullit y (i) = x (i + 1) / x (i). Natyrisht, detyra mund të realizohet duke përdorur një lak for. Por nëse një nga elementët e grupit origjinal është i barabartë me zero, atëherë ndarja do të rezultojë në inf dhe llogaritjet pasuese mund të jenë të padobishme. Kjo situatë mund të parandalohet duke dalë nga cikli nëse vlera aktuale e x (i) është e barabartë me zero. Pjesa e mëposhtme e kodit demonstron përdorimin e deklaratës break për të ndërprerë një lak:

për x = 1:20
z = x-8;
nëse z == 0
thyej
fund
y = x / z
fund

Sapo z të bëhet 0, cikli ndërpritet.

Deklarata break ju lejon të ndërprisni para kohe ekzekutimin e sytheve for dhe while. Jashtë këtyre cikleve, deklarata break nuk funksionon.

Nëse deklarata e ndërprerjes përdoret në një lak të ndërthurur, atëherë ai del vetëm nga cikli i brendshëm.

Referenca e vetive të objektit grafik

Kutitë standarde të dialogut.

Funksionet për krijimin e kutive të dialogut

MATLAB përcakton 15 funksione për krijimin e kutive të dialogut standard. Pamja e kutive të dialogut mund të personalizohet duke specifikuar argumentet hyrëse të këtyre funksioneve. Më poshtë janë shembuj të kutive të dialogut dhe emrat e funksioneve përkatëse me qëllimin e tyre.

Kutitë e dialogut të mesazheve:

errordlg - Krijon një kuti dialogu me një mesazh gabimi;

helpdlg - krijoni një kuti dialogu për shfaqjen e informacionit;

warndlg - Krijon një kuti dialogu paralajmëruese;

msgbox - krijoni një kuti dialogu për shfaqjen e një mesazhi.

Dialogu i konfirmimit(funksioni questdlg)

Kutia e dialogut për futjen e informacionit(funksioni inputdlg)

Kutia e dialogut për zgjedhjen nga një listë(funksioni listdlg)

Kutitë e dialogut për vendosjen e opsioneve të printimit

pagesetupdlg - shfaq një kuti dialogu me shumë faqe për vendosjen e parametrave të fletës dhe mënyrën e printimit të përmbajtjes së dritares grafike;

printdlg - shfaq një kuti dialogu për zgjedhjen e opsioneve të printimit dhe cilësimet e printerit.

Hapni skedarin dhe ruani kutitë e dialogut

uigetfile - shfaq një kuti dialogu të hapur të skedarit

uiputfile - shfaq dialogun e ruajtjes së skedarit

Kutia e dialogut për zgjedhjen e drejtorisë(funksioni uigetdir)

Dialogu i zgjedhjes së fontit(funksioni uisetfont)

Kutia e dialogut për zgjedhjen e ngjyrave(funksioni uisetcolor)

Shiriti i progresit(funksioni i shiritit të pritjes)

Përveç funksioneve të listuara, ekziston një funksion dialogu i krijuar për të krijuar një dritare grafike të zbrazët. Karakteristikat e kësaj dritareje grafike mund të vendosen duke përdorur argumentet hyrëse në funksionin e dialogut.

Le të shqyrtojmë përdorimin e kutive standarde të dialogut duke përdorur shembullin e dritares së hapur të skedarit.

Shembull i aplikacionit myview me dialog të hapur të skedarit

Le të krijojmë një aplikacion myview GUI që na lejon të shikojmë skedarët grafikë. Dritarja e aplikacionit që ekzekutohet është paraqitur në Fig. 1. Shtypja e butonit Open Image sjell kutinë standarde të dialogut Select File to Open. Skedari grafik i zgjedhur shfaqet në dritaren e aplikacionit. Klikimi i butonit Mbyll imazhin pastron dritaren e aplikacionit myview.

Oriz. 1. Dritarja e aplikacionit Myview.

Në mjedisin GUIDE, në dritaren e aplikacionit bosh, vendosni boshtet dhe dy butonat siç tregohet në figurën 2. Në inspektorin e pronave, etiketoni butonin e majtë me btnOpen dhe vendosni vetinë e tij String në Open Image. Po kështu për butonin e djathtë: tag - btnMbyll dhe String - Mbylle imazhin.

Akset nevojiten për të shfaqur imazhin duke përdorur funksionin e imazhit. Ne do të përdorim një thirrje të nivelit të ulët për funksionin e imazhit, i cili supozon drejtimin e kundërt të boshtit. y në mënyrë që vizatimi të mos jetë me kokë poshtë. Pra në inspektorin e pronës ndërroni drejtimin e aksit y duke vendosur vetinë e boshteve YDir për të kthyer prapa. Për të fshehur vijat e rrjetës dhe linjat e boshteve, bëjini akset të padukshme duke i vendosur ato Pronë e dukshme në off.

Oriz. 2. Përgatitja e dritares së aplikacionit në mjedisin GUIDE.

Ruaje aplikacionin si myview dhe programo ngjarjet e kthimit të thirrjes për butonat Open Image dhe Close Image.

Kur përdoruesi klikon në Open Image, duhet të shfaqet një dialog i hapur skedari dhe pas zgjedhjes së një skedari, fotografia duhet të shfaqet në boshte. Le të përdorim kutinë standarde të dialogut të skedarit të hapur të krijuar nga funksioni uigetfile. Referenca më e thjeshtë për të është si më poshtë:

Uigetfile

Nëse përdoruesi zgjodhi një skedar dhe mbylli dritaren duke klikuar butonin Open në të, atëherë argumenti i parë i daljes FileName kthen emrin e skedarit (me shtesën) dhe Emri i dytë i rrugës kthen shtegun për në skedar. Nëse përdoruesi nuk e ka zgjedhur skedarin (kliko Cancel, ose mbylli dritaren me një buton me një kryq në titullin e dritares, ose kliko ), atëherë ndryshorja FileName do të jetë e barabartë me zero. Prandaj, veprimet e mëtejshme varen nga vlera e FileName.

Nëse skedari është zgjedhur, atëherë duhet

1) formoni emrin e plotë të skedarit;

3) shfaqni imazhin në bosht duke përdorur funksionin e imazhit.

Nëse skedari nuk është zgjedhur, atëherë nuk keni nevojë të bëni asgjë.

Ngjarja Callback e butonit Mbyll imazhin mund të përbëhet nga vetëm një operator - një thirrje në funksionin cla për të pastruar akset.

Programoni nënfunksionet e ngjarjes së kthimit të thirrjes të butonave Open Image dhe Close Image si më poshtë.

Funksioni btnOpen_Callback (hObject, event datata, handles)% Trajtimi i ngjarjes Callback të butonit Open Image% Merr emrin dhe shtegun e skedarit = uigetfile; % Kontrollimi nëse skedari është zgjedhur nëse Emri i Skedarit ~ = 0% Formimi i shtegut të plotë të skedarit Emri i plotë =; % Leximi i një imazhi nga një skedar grafik Pict = imread (FullName); % Dalja e imazhit në boshtin e imazhit ("CData", Pict) funksioni fundor btnClose_Callback (hObject, event data, handles)% Trajtimi i ngjarjes Callback të butonit Close Image% Pastrimi i boshteve cla

Nisni aplikacionin myview. Kur klikoni butonin Hap imazhin, shfaqet kutia e dialogut Zgjidh skedarin për të hapur. Megjithatë, në kutinë që shfaq përmbajtjen dosje aktuale nuk ka skedarë grafikë të dukshëm. Kjo ndodh sepse si parazgjedhje filtri i skedarëve (lista rënëse e tipit Skedarë) përmban vargun "Të gjithë skedarët e MATLAB" dhe vetëm skedarët me shtesa të pranuara nga MATLAB janë të dukshëm. Natyrisht, sa herë që hapni një skedar grafik, zgjidhni rreshtin "Të gjithë skedarët (*. *)" nga lista rënëse Files of type për të shfaqur të gjithë skedarët në dosjen aktuale. Por është shumë më mirë që menjëherë të krijoni një kuti dialogu të hapur të skedarit të akorduar në shtesa specifike. Për shembull, për të shfaqur skedarët me shtesa bmp dhe jpg, referojuni funksionit uigetfile me një argument hyrës - një varg në të cilin shabllonet me shtesat e kërkuara * .bmp dhe * .jpg shkruhen të ndara me pikëpresje:

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

Ndryshoni thirrjen në uigetfile në nënfunksionin btnOpen_Callback në sa më sipër dhe sigurohuni që lista rënëse e skedarit të llojit të dialogut të hapur të përmbajë vetëm dy rreshta: "* .bmp; *. Jpg" (parazgjedhja) dhe "Të gjithë skedarët (*. *)".

Funksioni uigetfile lejon kontroll më fleksibël mbi cilësimet e filtrit të skedarëve. Ne do t'i shikojmë ato në seksionin kushtuar përshkrimit të funksioneve për krijimin e kutive standarde të dialogut. Le të diskutojmë tani se si të zbatojmë aftësinë për të zgjedhur disa skedarë në të njëjtën kohë në kutinë e dialogut të hapur të skedarit standard.

Zgjidhni shumë skedarë në dialogun e skedarit të hapur. Shkëmbimi i të dhënave ndërmjet nënfunksioneve të një aplikacioni GUI.

Në këtë pjesë, ne do të shqyrtojmë dy pyetje:

1) si të organizoni përzgjedhjen e disa skedarëve në dritaren e hapur të skedarit standard dhe të lexoni përmbajtjen e tyre në një grup të përshtatshëm;

Përgjigja për pyetjen e parë është e thjeshtë. Është e nevojshme të thirret funksioni uigetfile me një palë shtesë të argumenteve hyrëse "MultiSelect" dhe "on":

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

Në varësi të zgjedhjes së përdoruesit, argumentet e daljes do të jenë të llojeve të mëposhtme.

  • Nëse përdoruesi ka zgjedhur skedarë të shumtë në kutinë e dialogut të hapur (me zgjedhjen e miut ose duke klikuar dhe mbajtur). ose ), pastaj FileName do të bëhet një grup qelizash, secila qelizë e së cilës përmban një rresht me emrin e skedarit (dhe shtrirjen), dhe Emri i rrugës do të jetë një rresht që përmban shtegun drejt këtyre skedarëve (shtegu për të gjithë skedarët është i njëjtë, prandaj Emri i rrugës nuk duhet të jetë një grup qelizash).
  • Nëse përdoruesi ka zgjedhur një skedar në kutinë e dialogut të hapur të skedarit, atëherë Emri i skedarit do të jetë një rresht me emrin e skedarit (me një shtesë), dhe Emri i rrugës do të jetë një rresht me shtegun për në skedar (shih seksionin e mëparshëm).
  • Nëse nuk është bërë asnjë përzgjedhje, atëherë Emri i Skedarit është zero.

Pyetja e dytë (komunikimi ndërmjet nënfunksioneve të trajtimit të ngjarjeve) shpesh lind kur programoni aplikacione GUI. Zgjidhet si më poshtë. Të dhënat që duhet të ruhen gjatë ekzekutimit të një nënfunksioni shkruhen në fushat e strukturës së dorezave. Më pas, në të njëjtin nënfunksion, struktura e dorezave ruhet duke përdorur funksionin udhëzues:

guidata (gcbo, trajton)

Për të marrë të dhëna në një nënfunksion tjetër, referojuni fushës përkatëse të strukturës së dorezave. Për shembull, aplikacioni ka dy nënfunksione btnA_Callback dhe btnB_Callback. Gjatë ekzekutimit të nënfunksionit btnA_Callback, u krijua një grup numerik, i cili do të nevojitet në nënfunksionin btnB_Callback. Atëherë këto nënfunksione duhet të jenë si më poshtë.

Funksioni btnA_Callback (hObject, të dhënat e ngjarjes, trajton). ... ... trajton.të dhënat =; guidata (gcbo, trajton). ... ... funksioni btnB_Callback (hObject, të dhënat e ngjarjes, trajton). ... ... shiriti (trajton.të dhënat). ... ...

Le të hedhim një vështrim në aplikacionin myview të krijuar në seksionin e mëparshëm dhe të zgjerojmë aftësitë e tij. Aplikacioni i modernizuar duhet të lejojë hapjen e disa skedarëve grafikë në të njëjtën kohë dhe shikimin e tyre një nga një. Pas zgjedhjes së disa skedarëve grafikë në dritaren e aplikacionit, shfaqet vetëm një, dhe klikimi i butonit (le ta quajmë Tjetër) çon në shfaqjen e imazhit tjetër.

Në mjedisin GUIDE, shtoni një buton me etiketën btnNext dhe mbishkrimin Pranë shabllonit të dritares së aplikacionit myview (shih Fig. 2 të seksionit të mëparshëm) (shih Fig. 1). Në inspektorin e pronës, bëjeni atë të padisponueshëm duke e çaktivizuar veçorinë Aktivizo. Ai do të jetë i disponueshëm gjatë ekzekutimit të aplikacionit nëse përdoruesi ka zgjedhur disa skedarë grafikë për shikim.

Oriz. 1. Dritarja e aplikacionit Myview me butonin Next

Tani ju duhet të ndryshoni nënfunksionin btnOpen_Callback të trajtimit të ngjarjes Callback të butonit Open Image dhe të programoni ngjarjen Callback të butonit Next. Kur përpunoni përzgjedhjen e skedarëve (ose një skedari) nga përdoruesi në kutinë e dialogut të hapur të skedarit, duhet të merrni parasysh të gjitha mundësitë: zgjidhen disa skedarë, zgjidhet vetëm një skedar, nuk zgjidhet asnjë skedar.

Nëse zgjidhen disa skedarë grafikë (d.m.th., grupi Emri i skedarit është një grup qelizash), atëherë ne i lexojmë imazhet në një grup qelizash dhe i ruajmë në fushën Pict të strukturës së dorezave. Numri i skedarëve grafikë të hapur (d.m.th. gjatësia e grupit FileName) do të ruhet në fushën ImageNum të strukturës së dorezave. Përveç kësaj, ne kemi nevojë për numrin e imazhit aktual, për të kujtuar të cilin do të krijojmë fushën CurImage të strukturës së dorezave.

Pas hapjes së skedarëve, ne do të shfaqim përmbajtjen e të parit prej tyre në dritaren e aplikacionit. Nëse janë hapur disa skedarë, atëherë do të bëjmë të disponueshëm butonin Next, dhe nëse vetëm një, atëherë do ta bëjmë të padisponueshëm Tjetrin.

Kur përpunoni ngjarjen Callback të butonit Next, pastroni akset dhe shfaqni imazhin e mëposhtëm mbi to. Nëse imazhi aktual është i fundit, atëherë do të shfaqet i pari.

Më poshtë është teksti i nënfunksioneve btnOpen_Callback dhe btnNext_Callback. Nënfunksioni btnClose_Callback mbetet i pandryshuar.

Funksioni btnOpen_Callback (hObject, të dhënat e ngjarjes, trajton)% Trajto ngjarjen e kthimit të thirrjes së butonit Open Image% Merr emrat e skedarëve dhe shtigjet për to (ose një emër skedari dhe shteg drejt tij) = uigetfile ("*. Bmp; *. Jpg", "MultiSelect", "on"); % Gjeni sa skedarë janë zgjedhur nëse iscell (Emri i skedarit)% FileName është një grup qelizash, kështu që janë zgjedhur disa skedarë% shkruani në fushën ImageNum të dorezave strukturoni numrin e skedarëve të zgjedhur.Numri i imazhit = gjatësia (Emri i skedarit ); % Për çdo skedar në ciklin, formoni emrin e plotë% dhe lexoni përmbajtjen e tij në qelizën k-të grup qelizash,% e cila ruhet në fushën Pict të trajtave të strukturës së dorezave.Pict =; % fillimisht e bëjmë bosh grupin për k = 1: trajton.ImageNum Emri i plotë =; trajton.Pict (k) = i lexuar (Emri i Plotë); fund% Fotografia e parë është ajo aktuale që trajton.CurImage = 1; % Ne e shfaqim atë në imazhin e akseve ("CData", trajton.Pict (dorëzon.CurImage))% Ruaje strukturën e dorezave për t'u aksesuar në nënfunksionin udhëzues të btnNext_Callback (gcbo, trajton)% Bëje të disponueshme butonin Tjetër set (dorëza). btnTjetra, "Aktivizo "," në ") else% Është zgjedhur vetëm një skedar ose asnjë nëse Emri i Skedarit ~ = 0% Është zgjedhur një skedar, ne formojmë shtegun e plotë drejt tij Emri i plotë =; % Ne e lexojmë imazhin në variablin Pict (struktura e dorezave nuk është e nevojshme) Pict = imread (Emri i plotë); % Shfaq imazhin në imazh (boshti "CData", Pict)% Bëje të padisponueshëm butonin "Tjetër" vendosur (handles.btnNext, "Aktivizo", "off") fundi i funksionit btnNext_Callback (hObject, event data, trajton)% Trajto përgjigjen e thirrjes ngjarja e butonit Open Image % Kontrollimi se cila foto është ajo aktuale nëse trajton.CurImage

shënim

Aplikacioni myview mund të përmirësohet më tej, për shembull, pasi të keni zgjedhur skedarët dhe përpara se të shfaqni të parin, është mirë të pastroni boshtet. Duhet të merret parasysh gjithashtu se përdoruesi ka përzgjedhur skedarë jo grafikë.

Referencë për funksionet për krijimin e kutive të dialogut.

Krijo një kuti dialogu gabimi - errordlg

Funksioni errordlg përdoret për të krijuar një kuti dialogu standard të gabimit. Opsioni më i zakonshëm i thirrjes

h = errordlg ("Teksti i mesazhit", "Titulli i dritares").

H ruan një tregues në dritaren grafike të krijuar me një mesazh gabimi. për shembull

h = errordlg ("Pjestimi me zero", "Llogaritësi");

Çon në një dritare si kjo me një tregues h:

Dritarja mbetet në ekran derisa të mbyllet me butonin OK, tastin, butonin me një kryq në titull ose duke përdorur menynë e kontekstit të titullit.

Dritarja e mesazhit të gabimit nuk është modale (ju lejon të lundroni në dritare të tjera të aplikacionit MATLAB). Për ta bërë atë modal, pasi të krijoni një dritare duke përdorur funksionin errordlg, vendosni veçorinë WindowStyle të dritares grafike në "modal": set (h, "WindowStyle", "modal")

Një mënyrë tjetër për të krijuar një kuti mesazhi të gabimit modal është përdorimi i funksionit msgbox, i cili përshkruhet më poshtë.

Madhësia e dritares zgjidhet automatikisht në varësi të gjatësisë së rreshtave të tekstit, linjat shumë të gjata mbështillen. Për të marrë një mesazh me shumë rreshta të ndarë në rreshta në një mënyrë të caktuar, duhet të specifikoni një grup qelizash vargjesh:

h = errordlg (("Format i gabuar i të dhënave"; "ose"; "të dhëna të pakrahasueshme"), "dlgname")

Krijimi i njëpasnjëshëm i dritareve me mesazhe gabimi me të njëjtin titull:

h = errordlg ("Pjestimi me zero", "Llogaritësi"); ... h = errordlg ("Veprim i pasaktë", "Llogaritësi");

rezulton në dritare të ndryshme me mesazhe gabimi. Për të aktivizuar një dritare (pozicion mbi dritaret e tjera) dhe për të shfaqur një mesazh të ri në të, në vend që të krijoni një dritare të re, jepet thirrje errordlg me argumentin e tretë "on":

h = errordlg ("Pjestimi me zero", "Llogaritësi"); ... h = errordlg ("Veprim i gabuar", "Llogaritësi", "on"); % aktivizimi i dritares së vjetër

Sigurisht, nëse dritarja e vjetër ishte e mbyllur, atëherë h = errordlg (..., "on") thjesht krijon një të re.

Pasi të shfaqet një kuti dialogu me një mesazh gabimi, aplikacioni vazhdon të funksionojë. Shpesh lind pyetja: si të ndaloni ekzekutimin derisa të mbyllet kutia e dialogut. Kjo bëhet duke përdorur funksionin e pritjes, i cili ndalon ekzekutimin e aplikacionit derisa të hiqet një objekt specifik grafik. Një tregues për këtë objekt (në rastin tonë, një dritare mesazhi gabimi) specifikohet si një argument hyrës në funksionin e pritjes:

h = errordlg ("Pjestimi me zero", "Llogaritësi"); set (h, "WindowStyle", "modal") prite (h) a = 1; ....

Krijo një dialog paralajmërues - warndlg

Funksioni warndlg funksionon në të njëjtën mënyrë si errordlg (shih më lart), por nuk ka asnjë mundësi për ta quajtur atë me një argument të tretë të hyrjes "on". Për shembull,

rezulton në një dritare të tillë me tregues h

Dritarja e paralajmërimit ndryshon nga dritarja e mesazhit të gabimit vetëm nga ikona:

Thirrja përsëri warndlg me të njëjtat argumente hyrëse krijon një dritare të re, edhe nëse e vjetra nuk është mbyllur ende.

Krijo kutinë e dialogut të ndihmës - helpdlg

Funksioni helpdlg funksionon në të njëjtën mënyrë si warndlg (shih më lart). Për shembull,

h = warndlg ("Skedari është i vjetëruar", "Paraprocesori")

rezulton në një dritare si kjo me treguesin h:

e cila ndryshon nga dritarja paralajmëruese vetëm nga piktogrami:

Thirrja sërish helpdlg me të njëjtin titull dritareje do të aktivizojë dritaren e vjetër nëse ajo nuk është mbyllur. Nëse ishte e mbyllur, atëherë krijohet një e re.

Linjat e shumta të tekstit të mesazhit, modaliteti i dritares dhe pezullimi i ekzekutimit të aplikacionit derisa dritarja të mbyllet, bëhen të gjitha në të njëjtën mënyrë si kur thirret errordlg.

Krijo kutinë e mesazheve - funksion i përgjithshëm i kutisë së mesazheve

Funksioni msgbox ju lejon të krijoni dritaret e gabimit, paralajmërimit dhe ndihmës të diskutuar më sipër. Për të marrë tekst me shumë rreshta, duhet të specifikoni një grup qelizash vargjesh si argumentin e parë. Përveç kësaj, është e mundur të krijohet një dritare me një ikonë arbitrare. Kontrolli i modalitetit të dritares dhe krijimi i një të reje me të njëjtin titull bëhet duke përdorur msgbox-in e argumenteve hyrëse. Funksioni msgbox kthen një tregues në dritaren që krijon.

h = msgbox ("Gabim shumë serioz!", "Program", "gabim")- krijon një dritare me një mesazh gabimi dhe një ikonë standarde (e ngjashme me errordlg).

c = ("Gabim shumë serioz!"; "Mos i trego askujt"); h = msgbox (c, "Program", "gabim")- e ngjashme me atë të mëparshme, por mesazhi përbëhet nga dy rreshta.

h = msgbox ("Paralajmërimi i fundit!", "Programi", "paralajmërim")- krijon një dritare me një paralajmërim dhe një ikonë standarde (të ngjashme me warndlg).

h = msgbox ("Ndihmoni veten ...", "Program", "ndihmë")- krijon një dritare me informacion ndihmës dhe një ikonë standarde (e ngjashme me helpdlg).

h = msgbox ("Këtu nuk ka foto", "Program", "asnjë")- krijon një dritare me informacion teksti pa ikonë.

h = msgbox ("Teksti i mesazhit", "Titulli i dritares", "custom", fotografia, harta me ngjyra)- krijon një dritare me një ikonë të përdoruesit, për shembull:

= imread ("phone.gif"); % leximi i figurës dhe hartës me ngjyra nga skedari h = msgbox ("Dikush po ju thërret", "Telefon", "custom", foto, hartë)

rezulton në një dritare si kjo

Argumenti i fundit i hyrjes ("modal", "jo-modal" ose "zëvendësoj") kontrollon pamjen e dritares dhe mënyrën se si shfaqet një dritare e re me të njëjtin titull. Nëse metoda për shfaqjen e një dritareje të re nuk është e specifikuar, atëherë krijohet gjithmonë një dritare e re.

Shembuj:

h = msgbox ("Gabim shumë serioz!", "Program", "modal")- shfaq një dritare standarde modale me një mesazh gabimi

h = msgbox ("Dikush po ju telefonon", "Telefon", "custom", foto, hartë, "modal")- shfaq një dritare modale me një figurë të dhënë për piktogramin dhe një hartë me ngjyra.

h = msgbox ("Gabim shumë serioz!", "Program", "gabim", "zëvendëso")- zëvendëson dritaren e mëparshme me titullin Program, nëse nuk ka, atëherë krijon një të re. Gjatë ekzekutimit të komandave

h = msgbox ("Gabim shumë serioz!", "Program", "gabim") h = msgbox ("Diçka është e çuditshme", "Program", "paralajmëroj", "zëvendëso")

dritarja e dytë do të zëvendësojë të parën.

Dialogu i konfirmimit - funksioni questdlg

Funksioni questdlg krijon një dialog konfirmimi modal me shumë butona. Kur krijoni një dritare, çdo buton mund të ketë fokus. Në argumentin e daljes, funksioni questdlg kthen zgjedhjen e përdoruesit (një varg me emrin e butonit që është shtypur) ose një varg bosh nëse dritarja mbyllet pa klikuar asnjë buton. Për të marrë tekst me shumë rreshta, përdorni një grup qelizash vargjesh. Nëse specifikohet një rresht i gjatë, atëherë ai mbështillet automatikisht.

Shembuj:

button = questdlg ("A je i sigurt?")- krijimi i një dritareje standarde konfirmimi me butonat Po, Jo, Anulo. Butoni "Po" në fokus (i parazgjedhur).

button = questdlg ("A je i sigurt?", "Programi")- krijimi i një dritareje standarde konfirmimi me titull dhe butona Po, Jo, Cancel.

button = questdlg ("A je i sigurt?", "Programi", "Jo")- krijimi i një dritareje standarde konfirmimi me titull dhe butona Po, Jo, Cancel. Fokusi është te butoni Nr.

button = questdlg ("A je i sigurt?", "Programi", "Po", "Ndoshta", "Ndoshta")- krijimi i një dritareje standarde konfirmimi me një titull dhe dy butona Po dhe Ndoshta. Fokusi është te butoni Ndoshta.

button = questdlg ("A je i sigurt?", "Programi", "Po", "Jo", "Nuk e di", "Jo")- Krijimi i një dritareje standarde konfirmimi me një titull dhe tre butona Po, Jo dhe nuk e di. Fokusi është te butoni Jo.

Kutia e dialogut për futjen e informacionit (funksioni inputdlg)

Funksioni inputdlg krijon një kuti dialogu me një numër të caktuar linjash hyrëse. Numri i linjave hyrëse dhe titujt e tyre përcaktohen duke përdorur argumentet hyrëse. Dritarja përmban butonat OK dhe Anulo. Nëse përdoruesi klikon OK, atëherë argumenti dalës i funksionit inputdlg është një grup qelizash me informacion të futur nga përdoruesi në linjat hyrëse. Nëse dritarja është mbyllur duke klikuar butonin Cancel ose në ndonjë mënyrë tjetër (përveç butonit OK), atëherë argumenti i daljes është një grup bosh qelizash.

Shembuj:

M = inputdlg (("KOHA" "VALUES"))- krijon një kuti dialogu

Nëse, për shembull, në rreshtin TIME përdoruesi ka futur 0.1 0.3 0.55 4.5, dhe në rreshtin VALUES - 2.3 9.55 2.1 0.7 dhe ka klikuar OK, atëherë grupi i qelizave M do të ketë vlerat e mëposhtme.

M = "0.1 0.3 0.55 4.5" "-2.3 9.55 2.1 0.7"

Ju mund të përdorni str2num për t'i kthyer ato në vektorë numerikë:

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

M = inputdlg (("KOHA" "VALUES"), "Të dhënat hyrëse") - krijon një kuti dialogu të titulluar Të dhënat hyrëse.

Për të qenë në gjendje të futni tekst me shumë rreshta, duhet të specifikoni argumentin e tretë të hyrjes - numrin e rreshtave në secilën zonë hyrëse:

M = inputdlg (("matrica A" "Matrica B"), "Të dhënat hyrëse", 3)- nëse argumenti i tretë është një numër më i madh se një, atëherë të gjitha zonat hyrëse kanë të njëjtën lartësi dhe kanë shirita lëvizjeje.

Nëse hyrja përfundon duke klikuar në butonin OK, atëherë çdo qelizë e grupit M përmban një grup karakteresh. Vargu i karaktereve përmban aq rreshta sa janë futur në zonën përkatëse të hyrjes.

M = inputdlg (("vektori A" "Matrica B"), "Të dhënat hyrëse",)- për të vendosur lartësinë e zonave hyrëse veçmas, duhet të specifikoni numrin e rreshtave të secilës zonë hyrëse në vektorin e kolonës si argumenti i tretë i hyrjes:

M = inputdlg (("vektori A" "Matrica B"), "Të dhënat hyrëse",)- për të vendosur gjatësinë e zonave hyrëse në karaktere (në këtë rast, 100 karaktere), argumenti i tretë i hyrjes duhet të jetë një matricë:

M = inputdlg (("Emri" "Viti"), "Info", (char ("John", "Smith") "1990"))- për të marrë një dritare me fusha të mbushura (për nxitjen e formatit të hyrjes te përdoruesi), specifikoni argumentin e katërt të hyrjes. Duhet të jetë një grup qelizash me të njëjtën madhësi si argumenti i parë i hyrjes:

M = inputdlg (("Emri" "Viti"), "Info", (char ("John", "Smith") "1990"), "on")- argumenti i pestë i fundit i hyrjes "on" do të thotë që përdoruesi mund të ndryshojë madhësinë e kutisë së dialogut.

Kutia e dialogut për zgjedhjen nga një listë - funksion listdlg

Funksioni listdlg krijon një kuti dialogu me një kuti listë nga vargjet dhe butonat e specifikuar për zgjedhje dhe çzgjedhje. Linjat e listës specifikohen nga një grup qelizash. Përzgjedhja e shumëfishtë e artikujve të listës mbështetet. Në argumentet e daljes kthehen: Përzgjedhja - një numër ose vektor me numrat e rreshtave të zgjedhur dhe ok - informacione nëse zgjedhja u krye duke shtypur butonin OK (ok = 1), ose dritarja u mbyll në një tjetër mënyra (ok = 0). Nëse ok = 0, atëherë Selection është një grup bosh. Si parazgjedhje, mund të zgjidhen disa artikuj të listës (duke klikuar me miun duke mbajtur Ctrl) dhe ka një buton Zgjidh të gjitha për të zgjedhur të gjithë artikujt.

= listdlg ("ListString", ("Linear"; "Kuadratik"; "Kubic"))- krijon një dialog përzgjedhjeje me një listë me tre rreshta: Linear, Kuadratik, Kub. Nëse përdoruesi ka zgjedhur, për shembull, Quadratic dhe shtyp butonin OK, atëherë Selection = 2 dhe ok = 1. Nëse përdoruesi ka zgjedhur Linear dhe Kubic dhe shtyp butonin OK, atëherë Selection = dhe ok = 1, etj.

Funksioni listdlg mund të aksesohet në formën e përgjithshme:

= listdlg ("ListString", grup qelizash vargjesh, param1, val1, param2, val2, ...)

Parametrat dhe vlerat e tyre të mundshme janë si më poshtë:

  • "SelectionMode" - modaliteti për zgjedhjen e rreshtave në listë, vlerat: "single" (për të zgjedhur vetëm një rresht) ose "shumë" (si parazgjedhje, për të zgjedhur rreshta të shumëfishtë);
  • "ListSize" - madhësia e zonës së listës në pixel, vlera vendoset nga vektori [gjerësia-lartësia] (si parazgjedhje);
  • "Vlera fillestare" - zgjedhja fillestare e rreshtave, vlera është një vektor me numra rreshtash që do të zgjidhet kur të shfaqet kutia e listës (si parazgjedhje 1);
  • "Emri" - titulli i dritares, vlera vendoset nga një varg (si parazgjedhje, një varg bosh);
  • "PromptString" - teksti sipër listës, vlerat: varg ose grup vargjesh ose qeliza nga vargjet (për tekst me shumë rreshta). Parazgjedhja është një grup bosh qelizash.
  • "OKString" - një mbishkrim në butonin për zgjedhjen dhe mbylljen e dritares, vlera është një varg (si parazgjedhje "OK");
  • "CancelString" - një mbishkrim në butonin për të mbyllur dritaren pa përzgjedhje, vlera është një varg (si parazgjedhje "Anulo");
  • "uh" - lartësia e butonave të dritares, vlera është vendosur në piksel (18 si parazgjedhje);
  • "fus" - distanca midis butonave dhe listës, vlera vendoset në pixel (18 si parazgjedhje);
  • "ffs" është distanca nga kufiri i dritares në listë, vlera është vendosur në pixel (8 si parazgjedhje).
Për shembull, komanda

= listdlg ("ListString", ("Linear"; "Kuadratik"; "Kubic"), ... "Emri", "Përafrimi", "ListSize", "PromptString", "Zgjidh metodën", "fus", 5)

rezulton në krijimin e dialogut të kutisë së kombinuar në vijim:

Kutia e dialogut për vendosjen e parametrave të fletës dhe mënyrën se si shtypet përmbajtja e dritares grafike - funksioni pagesetupdlg

pagesetupdlg - thirrja e kutisë së dialogut të konfigurimit të faqes për dritaren aktuale grafike (nëse nuk ka dritare, krijohet një e re).

pagesetupdlg (hF) - Thërret kutinë e dialogut të konfigurimit të faqes për dritaren grafike me treguesin hF.

Cilësimet e bëra në dialogun Page Setup ndikojnë në vetitë përkatëse të dritares grafike: PaperSize, PaperType, PaperPozition, etj.

Funksioni pagesetupdlg ju lejon të konfiguroni parametrat e vetëm një dritareje grafike, d.m.th. hF nuk mund të jetë një vektor treguesish. Për të konfiguruar njëkohësisht parametrat kryesorë të disa dritareve grafike, përdorni funksionin pagedlg, argumenti hyrës i të cilit mund të jetë një vektor i treguesve në dritaret grafike.

Dritarja e konfigurimit të faqes është modale; ekzekutimi i aplikacionit ndërpritet derisa dritarja të mbyllet.

Kutia e dialogut për zgjedhjen e opsioneve të printimit dhe konfigurimin e funksionit printer - printdlg

printdlg - thirrni kutinë standarde të dialogut të Windows për printimin e dritares aktuale grafike (nëse nuk ka dritare, krijohet një e re).

printdlg (hF) - thërret kutinë standarde të dialogut të Windows për printimin e një dritareje grafike me një tregues hF.

printdlg ("- crossplatform", hF) - Thërret kutinë e dialogut MATLAB Print për të printuar një dritare grafike me një tregues hF.

Dialogu i printimit është modal, aplikacioni ndërpritet derisa dritarja të mbyllet.

Dialogu i hapjes së skedarit - funksioni uigetfile

= uigetfile- shfaq një kuti dialogu për hapjen e një skedari me përmbajtjen e drejtorisë aktuale. Filtri i skedarëve është vendosur në TË GJITHA skedarët MATLAB, gjë që bën që të shfaqen vetëm skedarët me shtesa që MATLAB mbështet. Në listën rënëse Files of type, mund të zgjidhni vetëm skedarët M, ose vetëm dritaret grafike, etj., ose të gjithë skedarët.

Nëse përdoruesi ka zgjedhur një skedar (duke klikuar në ikonën e skedarit dhe duke shtypur butonin Open, ose duke klikuar dy herë në ikonën e skedarit, ose ka shkruar emrin e skedarit në rreshtin Emri i skedarit dhe ka shtypur butonin Open), atëherë FName përmban një rreshti me emrin dhe shtrirjen e skedarit, dhe PName është shtegu për në skedar. Nëse përdoruesi nuk e ka zgjedhur skedarin dhe ka mbyllur dritaren, atëherë FName = 0 dhe PName = 0. Pasi të keni thirrur funksionin uigetfile, kontrolloni nëse skedari është zgjedhur. Nëse po, lidhni këto rreshta për të marrë emrin e plotë të skedarit:

= uigetfile; nëse ~ është e barabartë (FName, 0) Emri i plotë = strcat (PName, FName); % leximi i mëtejshëm i të dhënave nga fundi i skedarit

Filtri i skedarit specifikuar në argumentin e parë hyrës të funksionit uigetfile, për shembull

= uigetfile ("*. txt");

krijon një kuti dialogu të hapur skedari, lista e skedarëve të tipit përmban dy vargje: "* .txt" dhe "Të gjithë skedarët (*. *)". Mund të specifikoni më shumë se një shtrirje, por më pas duhet të përdorni një grup qelizash nga vargjet:

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

Për të vendosur përshkrime të llojeve të skedarëve në listën Files of Type, duhet të specifikoni një grup qelizash me dy kolona. Çdo rresht përmban zgjerimin dhe përshkrimin e skedarit (ndërsa rreshti "Të gjithë skedarët (*. *)" nuk shtohet në listën e skedarëve të tipit të kutisë së dialogut të hapur të skedarit):

Filter = ("*. Txt", "Skedarët e tekstit (* .txt)"; "* .dat", "Skedarët e të dhënave (* .dat)"; "* .res", "Rezultatet (* .res)") ; = uigetfile (Filtër);

Si filtër, mund të ketë edhe një varg me emrin e skedarit, atëherë ai është në vijën e emrit të skedarit kur shfaqet kutia e dialogut të hapur, dhe shtrirja e tij merret si shtesë e paracaktuar dhe shfaqet në listën Files of Type së bashku me "Të gjithë skedarët (*. *)".

Nëse duhet të zbuloni se çfarë lloj skedarësh ka zgjedhur përdoruesi në listën Files of Type, atëherë duhet t'i referoheni uigetfile me tre argumente dalëse:

= uigetfile (Filtër);

FilterIndex regjistron numrin e llojit të skedarit.

Për detyrë titulli i dritares së vet duke hapur një skedar (në vend të Zgjidh skedarin për të hapur), funksioni uigetfile thirret me argumentin e dytë të hyrjes:

= uigetfile (Filtri, "Open File");

Dhe për të vendosur emrin e skedarit të specifikuar në rreshtin Emri i skedarit kur krijoni një dritare të hapur skedari, duhet ta specifikoni atë në argumentin e tretë të hyrjes (emri i skedarit mund të jetë i plotë):

= uigetfile (Filtri, "Open File", "input.txt")

Kështu mund të shfaqni përmbajtjen e çdo dosjeje, për shembull, direktoriumin rrënjë të diskut D:

= uigetfile (Filtri, "Open File", "d: \")

shënim
Nëse duam të hapim skedarët MATLAB siç sugjeron skedari i paracaktuar uiget, por vendosim titullin e dritares sonë (dhe dosjen ose skedarin e paracaktuar në kutinë e dialogut të hapur të skedarit), atëherë argumenti i parë i hyrjes, filtri, nuk mund të hiqet. Duhet të jetë një rresht bosh:

= uigetfile ("", "Open File", "d: \");

Në mënyrë që përdoruesi të zgjidhni skedarë të shumtë, duhet të telefononi uigetfile në një nga mënyrat e mëposhtme:

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

Nëse përdoruesi zgjodhi skedarë të shumtë në kutinë e dialogut, atëherë argumenti i daljes FName është një grup qelizash i emrave të skedarëve të zgjedhur (PName, natyrisht, mbetet një varg, pasi skedarët u zgjodhën në të njëjtën dosje). Për të marrë një grup qelizash me emra të plotë skedarësh, kodi i mëposhtëm është i përshtatshëm (funksioni strcat mund të bashkojë një varg me një grup qelizash nga vargjet):

= uigetfile ("MultiSelect", "on"); nëse ~ është e barabartë (FName, 0) Emri i plotë = strcat (PName, FName); fund

MATLAB funksionon për të hapur skedarë të formateve të ndryshme

Meqenëse po flasim për hapjen e skedarëve, është e përshtatshme të citojmë funksionet kryesore të MATLAB të krijuara për të punuar me skedarë të formateve të ndryshme.

ngarkesës- leximi i të dhënave nga një skedar binar ose tekst.

hapur- hapja e një skedari. Metoda e hapjes varet nga shtrirja:

  • zgjerim m- skedari hapet në redaktuesin e skedarit M;
  • zgjerim mdl- modeli hapet në Simulink;
  • zgjerim mat- shkrimi i të dhënave binare nga skedari në fushat e strukturës, emrat e fushave të strukturës përkojnë me emrat e variablave të regjistruar në skedar;
  • zgjerim fik- hapet një dritare grafike;
  • zgjerim fq- nëse ekziston një skedar m me të njëjtin emër, atëherë ai hapet në redaktuesin e skedarit M;
  • zgjerimi htm, html- skedari hapet në dritaren e shfletuesit të sistemit të ndihmës MATLAB;
  • zgjerim pdf- skedari hapet në Adobe Acrobat (kërkon instalimin e hapjes sipas lidhjes në Windows);
Për të hapur një skedar me një shtesë jo standarde, mund të shkruani funksionin tuaj që do të thirret si parazgjedhje. Emri i tij është formuar nga fjala open dhe shtesa, për shembull, për të hapur skedarë me shtesën dtm, shkruani funksionin opendtm. Shembull. Supozoni se duhet të hapni binare me shtrirjen dtm, që përmbajnë vlerat e dy variablave, emrat e të cilave mund të jenë të ndryshëm. Vlerat e këtyre variablave duhet të shkruhen në variablat e kohës dhe të dhënave të mjedisit të punës. Pastaj shkruajmë funksionin e skedarit opendtm:

funksioni opendtm (fname)% lexon të dhënat në strukturën S = ngarkesë ("- mat", fname); % mësojnë emrat e fushave të strukturës (emrat e variablave) F = emrat e fushave (S); % Cakto vlera për variablat e kohës dhe të dhënave të caktimit të tavolinës së punës ("bazë", "kohë", S. (F (1))) caktimi ("bazë", "të dhëna", S. (F (2) ))

Ja se si mund të përdorni funksionin opendtm:

A = 1:10; B = sqrt (A); ruaj ("my.dtm", "A", "B")% shkruaj A dhe B në një skedar në binar të hapur ("my.dtm")% thirrje të hapura opendtm dhe koha dhe të dhënat krijohen në mjedisin e prodhimit

Shënim. Funksioni uiopen kombinon aftësitë e uigetfile dhe open — krijon një dialog skedari të hapur dhe më pas thërret open për ta hapur atë.

winopen - hapni një skedar në Windows me aplikacionin e lidhur me këtë shtesë, për shembull: winopen ("art.doc") - hapni art.doc në MS Word; winopen ("my.txt") - hapja e my.txt në bllokun e shënimeve; winopen ("all.htm") - hap all.htm në shfletuesin e internetit.

fletore- hapja ose krijimi i një libri M në MS Word.

publikojnë- ekzekutimi i skedarit M, i ndarë në qeliza dhe ruajtja e rezultatit në formatin e specifikuar: html, doc, ppt, xml, rpt, latex.

dos dhe sistemi- ekzekutimi i komandave (shih gjithashtu!), nisja e skedarëve të ekzekutueshëm, për shembull:

sistemi ("llogaritje")- nisja e kalkulatorit.

uiimport- hap dritaren Import Wizard për importimin e të dhënave nga formate të ndryshme.

të dhënat e importit- importimi i të dhënave në varësi të shtrirjes së skedarit, i dobishëm edhe për leximin e të dhënave nga një skedar teksti i kufizuar.

csvread- leximi i të dhënave numerike nga një skedar teksti i kufizuar me presje.

dlmlexoj- leximi i të dhënave numerike nga një skedar teksti me një kufizues të caktuar.

tekstlexim, skanim tekstesh- leximi i të dhënave nga një skedar teksti me një format specifik.

xlslexo- leximi i të dhënave nga skedarët MS Excel.

valëzuar- leximi i një skedari wav të zërit.

aviread- leximi i një skedari avi.

i lexuar- leximi i skedarëve grafikë.

Përveç funksioneve të listuara, ekzistojnë funksione të nivelit të ulët për të punuar me skedarë. Emrat e tyre fillojnë me shkronjën f:

f afër- mbyllja e skedarit.

feof- kontrolloni për arritjen e fundit të skedarit.

frika- marrjen e informacionit për gabimin e fundit gjatë hyrje-daljes.

fgetl- leximi i një rreshti nga një skedar teksti pa karakter në fund të rreshtit.

fgets- leximi i një rreshti nga një skedar teksti me karakter fundor.

hap- hapja e një skedari.

fprintf- regjistrim i formatuar në një skedar.

fread- lexim nga një skedar binar.

frerë- shkoni në fillim të skedarit.

fscanf- lexim i formatuar nga një skedar.

fseek- kalimi në një pozicion të caktuar në dosje.

flet- marrja e pozicionit aktual në skedar.

fwrite- shkrimi në një skedar binar.

Të gjitha funksionet për leximin e të dhënave janë renditur në temën e ndihmës: MATLAB: Funksionet - Lista e kategorive: Skedari I / O.

Kutia e dialogut Save File - Funksioni uiputfile

Përdorimi i uiputfile është i ngjashëm me uigetfile të diskutuar më sipër. Po kështu, mund të vendosni filtrin shtesë, titullin e dritares, skedarin ose shtegun e paracaktuar. Dallimi është se nuk ka opsion "MultiSelect" në uiputfile (nuk nevojitet kur ruani). Përveç kësaj, nëse përdoruesi zgjedh një emër skedar ekzistues në dialogun e skedarit të ruajtjes, do të shfaqet një dritare konfirmimi. Përzgjedhja e "Po" përfundon dialogun e ruajtjes së skedarit dhe "Jo" kthehet në dritaren e ruajtjes së skedarit. Kontrollimi i aktivitetit të përdoruesit dhe marrja e emrit të plotë të skedarit është saktësisht i njëjtë si për uigetfile.

Funksionet e MATLAB për të ruajtur të dhënat në skedarë

Le të rendisim funksionet kryesore të MATLAB të krijuara për të ruajtur të dhëna të llojeve të ndryshme.

ruaj- ruajtja e të dhënave në tekst dhe skedarë binare

Shënim.
Funksioni uisave kombinon aftësitë e uigetfile dhe save - krijon një kuti dialogu të skedarit të ruajtjes që do të ruajë të gjitha variablat e mjedisit.

csvwrite- shkrimi i të dhënave numerike në një skedar teksti të ndarë me presje.

dlmshkruaj- shkrimi i të dhënave numerike në një skedar teksti përmes një ndarësi të caktuar.

xlsshkruaj- regjistrimi i të dhënave në formatin MS Excel.

wavwrite- regjistrimi i një skedari wav.

avile- krijon një skedar avi dhe i kthen atij një identifikues, i cili përdoret në funksione të tjera: addframe, mbyll.

film2avi- krijimi i një skedari avi nga një matricë, secila kolonë e së cilës ruan informacione për një kornizë (shih funksionet: film, getframe, im2frame).

shkruaj- shkrimi i një skedari grafik.

Përveç funksioneve të listuara, ekzistojnë funksione të nivelit të ulët për të punuar me skedarë, emrat e të cilëve fillojnë me shkronjën f (shiko seksionin "Funksionet e MATLAB për hapjen e formateve të ndryshme të skedarëve" më sipër).

Dialogu i përzgjedhjes së drejtorisë - funksioni uigetdir

Funksioni uigetdir hap kutinë e dialogut Browse for folder dhe kthen shtegun në drejtorinë e zgjedhur, ose zero nëse përdoruesi nuk ka bërë një zgjedhje. Kontrollimi nëse një drejtori është zgjedhur bëhet në të njëjtën mënyrë si në funksionin uigetfile për dialogun e hapur të skedarit. Mënyrat për të thirrur uigetdir:

dname = uigetdir- hapet kutia e dialogut për zgjedhjen e drejtorisë, në të cilën theksohet direktoria aktuale MATLAB.

dname = uigetdir ("shtegu i fillimit")- hap një kuti dialogu për zgjedhjen e një drejtorie, në të cilën zgjidhet drejtoria e specifikuar, për shembull: dname = uigetdir ("c: \").

dname = uigetdir ("rruga e fillimit", "tekst")- hap një dialog box për zgjedhjen e një drejtorie, në të cilën zgjidhet direktoria e specifikuar dhe vendos tekstin e specifikuar mbi dritaren me strukturë hierarkike të drejtorisë. Nëse dëshironi të hapni kutinë e dialogut të përzgjedhjes së drejtorisë, në të cilën theksohet direktoria aktuale MATLAB, duhet të specifikoni një varg bosh në vend të argumentit të parë të hyrjes: dname = uigetdir ("", "tekst").

Funksionet e drejtorisë MATLAB

Veprimet e mëtejshme pasi përdoruesi të zgjedhë emrin e drejtorisë supozojnë përdorimin e funksioneve MATLAB të krijuara për të punuar me drejtoritë.

cd- ndryshoni direktorinë aktuale të MATLAB

dir- shfaqja e përmbajtjes së drejtorisë në dritaren komanduese ose shkrimi i informacionit rreth përmbajtjes në një grup strukturash.

shteg, rmpath- Menaxhimi i rrugës së kërkimit MATLAB.

Shënime.
Funksioni i mjetit udhëzues shfaq një kuti dialogu të veçantë Set Path për menaxhimin e shtigjeve të kërkimit MATLAB.
Funksioni i shfletuesit të skedarëve shfaq një kuti të veçantë dialogu të Drejtorisë aktuale me përmbajtjen e drejtorisë aktuale, aftësinë për të zgjedhur një drejtori të re aktuale dhe për të hapur skedarë në MATLAB.

Të gjitha funksionet për të punuar me drejtoritë në MATLAB janë të listuara në sistemin e ndihmës nën MATLAB: Funksionet - Lista kategorike: Mjetet e desktopit dhe mjedisi i zhvillimit: Hapësira e punës, shtegu i kërkimit dhe operacionet e skedarëve.

Kutia e dialogut për zgjedhjen e shkronjave - Funksioni uisetfont

Funksioni uisetfont mund të përdoret për dy qëllime:
1) krijimi i një kutie dialogu për zgjedhjen e një fonti dhe regjistrimin e informacionit në lidhje me fontin e zgjedhur (emri, madhësia, stili) në strukturë;
2) krijimi i një kutie dialogu për zgjedhjen e një fonti dhe ndryshimin e objekteve të tekstit, etiketave të boshteve ose kontrolleve në përputhje me cilësimet e bëra në këtë dritare.

S = uisetfont- çon në shfaqjen e një kutie dialogu për zgjedhjen e një fonti dhe, nëse është bërë një zgjedhje në të, atëherë kthehet struktura S, fushat e së cilës kanë kuptimin e mëposhtëm:

S.FontName - varg me emrin e fontit; S.FontUnits - njësi matëse ("pika"); S.FontSize - madhësia; S.FontWeight - guxim ("normal" ose "i guximshëm"); S.FontAngle - tipografi ("normal" ose "italik").

Nëse përdoruesi nuk ka zgjedhur një font dhe ka mbyllur dritaren, atëherë S është zero.

S = uisetfont (S0)- çon në shfaqjen e kutisë së dialogut të zgjedhjes së fontit, në të cilën fonti i paracaktuar zgjidhet në përputhje me vlerat e fushave të strukturës S0, për shembull:

S0.FontName = "Arial"; S0.FontUnits = "pikë"; S0.FontSize = 20; S0.FontWeight = "i theksuar"; S0.FontAngle = "normal"; S = uisetfont (S0)

S = uisetfont ("Titulli i dritares") ose S = uisetfont (S0, "Titulli i dritares")- njësoj si opsionet e mëparshme, vetëm dritarja e përzgjedhjes së fontit ka një titull të caktuar.

uisetfont (h)- thirrni kutinë e dialogut për zgjedhjen e një fonti për një objekt teksti, boshte ose kontroll me një tregues h.

uisetfont (h, "Titulli i dritares")- njësoj si uisetfont (h), vetëm dritarja e përzgjedhjes së fontit ka një titull të caktuar.

S = uisetfont (h), S = uisetfont (h, "Titulli i dritares")- njësoj si dy opsionet e mëparshme, vetëm informacioni për zgjedhjen e përdoruesit kthehet në strukturën S.

Një shembull i ndryshimit të fontit të objekteve grafike

hA = sëpata; % krijimi i akseve grafik (rand (10))% vizatimi hT = titulli ("Random Graph")% shtimi i një titulli% hapja e një kutie dialogu për zgjedhjen e një fonti për shënimin e akseve uisetfont (hA, "Vendos fontin për akset"); % hap një kuti dialogu për zgjedhjen e një fonti për titullin uisetfont (hT, "Set font for title"); Dialogu i zgjedhësit të ngjyrave - funksioni uisetcolor

Funksioni uisetcolor, ashtu si uisetfont, mund të përdoret për dy qëllime:
1) krijimi i një kutie dialogu për zgjedhjen e ngjyrave dhe shkrimi i ngjyrës së zgjedhur në një vektor në formatin RGB;
2) krijimi i një kutie dialogu për zgjedhjen e ngjyrave dhe ndryshimi i objekteve grafike që kanë një veti Color në përputhje me cilësimet e bëra në këtë dritare.

C = uisetcolor- krijimi i një kutie dialogu për zgjedhjen e ngjyrave (në të, si parazgjedhje, ngjyra aktuale është e bardhë) dhe shkrimi i ngjyrës së zgjedhur në vektorin C në formatin RGB. Nëse përdoruesi nuk ka bërë një zgjedhje, atëherë C është zero.

C = uisetcolor (C0)- njësoj si opsioni i mëparshëm, vetëm në kutinë e dialogut të përzgjedhjes së ngjyrave, ngjyra aktuale specifikohet nga vektori C0 në RGB. Nëse përdoruesi nuk ka bërë një zgjedhje, atëherë C është e njëjtë me C0.

С = uisetcolor ("Titulli i dritares"), С = uisetcolor (С0, "titulli i dritares")- njësoj si opsioni i mëparshëm, vetëm kutia e dialogut për zgjedhjen e ngjyrave ka një titull të caktuar.

uisetcolor (h)- hapja e dialog box-it të përzgjedhjes së ngjyrave për përcaktimin e ngjyrës së objektit grafik me treguesin h (objekti grafik duhet të ketë vetinë Color).

uisetcolor (h, "Titulli i dritares")- e ngjashme me atë të mëparshme, por kutia e dialogut ka një titull të caktuar.

C = uisetcolor (h) ose C = uisetcolor (h, "Titulli i dritares")- njësoj si dy metodat e fundit. Përveç ndryshimit të ngjyrës së objektit, ngjyra e zgjedhur shkruhet në vektorin C në formatin RGB.

Një shembull i ndryshimit të ngjyrës së objekteve grafike.

hA = sëpata; % krijimi i boshteve% vizatimi x = 0: 0.1: 10; y = mëkat (x); hL = komplot (x, y) hT = titull ("Grafik i rastësishëm")% shto një titull% hap një kuti dialogu për të zgjedhur një ngjyrë rreshti uisetcolor (hL, "Zgjidh ngjyrën e linjës")% hap një kuti dialogu për të zgjedhur një titull ngjyra uisetcolor (hT, "Zgjidh ngjyrën e titullit")% hap një kuti dialogu për zgjedhjen e ngjyrës së akseve uisetcolor (hA, "Zgjidh ngjyrën e akseve")

Dritarja me një shirit progresi - funksioni i shiritit të pritjes

Funksioni i shiritit të pritjes krijon një dritare me një shirit progresi dhe ju lejon ta përditësoni atë.

h = shiriti i pritjes (x, "tekst")- shfaq një dritare me një shirit progresi dhe tekstin e specifikuar mbi shiritin. Gjatësia e shiritit të progresit është proporcionale me vlerën x, e cila duhet të jetë ndërmjet 0 dhe 1. Argumenti dalës h është një tregues në një dritare grafike me një shirit progresi.

shiriti i pritjes (x, h)- rrit gjatësinë e shiritit të progresit me treguesin h sipas vlerës së x.

% krijoni një dritare me një shirit progresi bosh h = shiriti i pritjes (0, "Zgjidhja e problemeve me vlerën e vet ..."); për i = 1: 100 A = rand (30); L = eig (A); shiriti i pritjes (i / 100)% përditësoni fundin e shiritit të përparimit% hiqni dritaren grafike me shiritin e përparimit të mbyllur (h)

Ngjyra e shiritit mund të ndryshohet nëse marrim parasysh se shiriti është një objekt poligonal, një pasardhës i akseve, të cilët nga ana e tyre janë pasardhës i dritares grafike të krijuar nga funksioni i shiritit të pritjes. Shembull:

% krijoni një dritare me një shirit progresi bosh h = shiriti i pritjes (0, "Zgjidhja e problemeve me vlerën e vet ..."); % gjeni një tregues për një objekt shumëkëndëshi hP = findobj (h, "Type", "patch"); % vendosja e ngjyrës së pjesës së brendshme dhe kufirit të grupit të objekteve poligonale (hP, "FaceColor", "g", "EdgeColor", "g") për i = 1: 1000 shiriti i pritjes (i / 1000, h) fundi mbyll ( h)

Vetitë e vetë dritares mund të ndryshohen gjithashtu duke përdorur një tregues për të dhe faktin që funksioni i shiritit të pritjes ju lejon të vendosni vetitë e dritares në argumentet hyrëse, për shembull:

h = shiriti i pritjes (0, "Thjesht e bardhë", "Ngjyra", "w", "Emri", "program");

Krijimi i një kuti dialogu me butona - Funksioni i menysë

Funksioni i menusë krijon një dritare me tekst dhe butona të rregulluar në një kolonë me etiketat e specifikuara. Pasi përdoruesi klikon mbi butonin, numri i tij kthehet në argumentin e daljes së funksionit të menusë.

butoni = menu ("Zgjidh metodën", "Newton", "Gauss", "Zeidel")

Nëse përdoruesi nuk ka bërë një zgjedhje, atëherë butoni = 0.

Artikujt kryesorë të lidhur