ako pozastaviť program v matlabe. Obr.2.2 - Pohyb telesa hodeného šikmo k horizontu. výpis pobočky switch

  • 09.05.2019

). Medzi univerzálnymi nástrojmi používanými v chemometrii zaujíma špeciálne miesto balík MatLab. Jeho popularita je nezvyčajne vysoká. Je to preto, že MatLab je výkonné a všestranné viacrozmerné spracovanie údajov. Samotná štruktúra balíka z neho robí pohodlný nástroj na vykonávanie maticových výpočtov. Rozsah problémov, ktorých štúdium je možné vykonať Pomocník MatLab, zahŕňa: maticovú analýzu, spracovanie signálu a obrazu, neurónové siete a mnohé ďalšie. MatLab je vysokoúrovňový, open-source jazyk, ktorý umožňuje pokročilým používateľom porozumieť naprogramovaným algoritmom. Jednoduchý vstavaný programovací jazyk uľahčuje vytváranie vlastných algoritmov. Za dlhé roky používania MatLabu vzniklo obrovské množstvo funkcií a ToolBoxov (balíkov špecializovaných nástrojov). Najpopulárnejší je PLS ToolBox od Eigenvector Research, Inc.

1. Základné informácie

1.1. Pracovné prostredie MatLab

Dvojitým kliknutím na ikonu spustíte program. Pracovné prostredie zobrazené na obrázku sa otvorí pred vami.

Pracovné prostredie MatLab 6.x mierne odlišný od pracovného priestoru predchádzajúcich verzií, má pohodlnejšie rozhranie pre prístup k mnohým pomocným prvkom

Pracovné prostredie MatLab 6.x obsahuje nasledujúce prvky:

    panel nástrojov s tlačidlami a rozbaľovacím zoznamom;

    okno so záložkami Launch Pad a Pracovný priestor, z ktorého máte prístup k rôznym modulom ToolBoxu a obsahu pracovného stola;

    okno s kartami históriu príkazov a aktuálny adresár, určený na prezeranie a vyvolanie predtým zadaných príkazov, ako aj na nastavenie aktuálneho adresára;

    príkazové okno, ktoré obsahuje výzvu na zadanie » a blikajúci vertikálny kurzor;

    stavový riadok.

Ak pracovné prostredie MatLab 6.x na obrázku nie sú žiadne okná, potom by ste mali vybrať príslušné položky v ponuke Zobraziť: príkazové okno, História príkazov , Aktuálny adresár , Pracovný priestor , Spúšťací panel .

Príkazy by sa mali zadávať do príkazového okna. Symbol » , ktorý označuje výzvu na vstup do príkazového riadku, nie je potrebné písať. Zobraziť pracovisko je vhodné použiť posúvače alebo klávesy Home , End , na pohyb doľava alebo doprava a PageUp , PageDown na pohyb nahor alebo nadol. Ak náhle po pohybe po pracovnej ploche príkazového okna zmizne príkazový riadok s blikajúcim kurzorom, stačí stlačiť Enter.

Je dôležité si zapamätať, že množina akéhokoľvek príkazu alebo výrazu musí končiť stlačením Enter, aby program MatLab tento príkaz vykonal alebo výraz vyhodnotil.

1.2. Najjednoduchšie výpočty

Vytočiť číslo príkazový riadok 1+2 a stlačte Enter. V dôsledku toho sa v príkazovom okne MatLab zobrazí nasledovné:

Ryža. 2 Grafické znázornenie analýzy hlavných komponentov

Čo urobil program MatLab? Najprv vypočítal súčet 1+2, potom zapísal výsledok do špeciálnej premennej ans a vytlačil jeho hodnotu 3 do príkazového okna. Pod odpoveďou je príkazový riadok s blikajúcim kurzorom, čo znamená, že MatLab je pripravený na ďalšie výpočty. Do príkazového riadka môžete zadať nové výrazy a nájsť ich hodnoty. Ak chcete pokračovať v práci s predchádzajúcim výrazom, napríklad vypočítať (1+2)/4,5 , tak najjednoduchšie je použiť už existujúci výsledok, ktorý je uložený v premennej ans . Napíšte ans/4,5 (pri zadávaní desatinných miest sa používa bodka) a stlačte Zadajte, ukázalo sa

Ryža. 3 Grafické znázornenie analýzy hlavných komponentov

1.3. Ozvena príkazu

Vykonanie každého príkazu v MatLab je sprevádzané ozvenou. Vo vyššie uvedenom príklade je to odpoveď ans = 0,6667 . Ozvena často sťažuje vnímanie práce programu a potom sa dá vypnúť. Aby to bolo možné, príkaz musí končiť bodkočiarkou. Napríklad

Ryža. Príklad vstupu funkcie 4 ScoresPCA

1.4. Zachovanie pracovného prostredia. MAT súbory

Najjednoduchší spôsob, ako uložiť všetky hodnoty premenných, je použiť položku Uložiť pracovný priestor ako v ponuke Súbor. Zobrazí sa dialógové okno Save Workspase Variables, ktoré vás požiada o zadanie adresára a názvu súboru. Štandardne sa navrhuje uložiť súbor do podadresára work hlavného adresára MatLab. Program uloží výsledky práce do súboru s príponou mat. Teraz môžete zatvoriť MatLab. Ak chcete v ďalšej relácii obnoviť hodnoty premenných, otvorte tento uložený súbor pomocou podpoložky Otvoriť v ponuke Súbor. Teraz sú opäť dostupné všetky premenné definované v poslednej relácii. Môžu byť použité v novo zadaných príkazoch.

1.5. Časopis

MatLab má schopnosť zapisovať spustiteľné príkazy a výsledky do textového súboru (udržiavať protokol o práci), ktorý je možné následne prečítať alebo vytlačiť z textového editora. Ak chcete spustiť protokolovanie, použite príkaz denník. Ako argument príkazu denník musíte zadať názov súboru, v ktorom bude uložený pracovný protokol. Do tohto súboru sa zapíšu ďalšie príkazy a výsledky ich vykonania, napríklad postupnosť príkazov

vykonáva nasledujúce akcie:

    otvorí denník v súbore example-1.txt ;

    robí výpočty;

    uloží všetky premenné do súboru MAT work-1.mat ;

    uloží protokol do súboru example-1.txt v podadresári work koreňového adresára MatLab a zatvorí MatLab;

Zobrazte obsah súboru example-1.txt v niektorom textovom editore. Súbor bude obsahovať nasledujúci text:

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

Uložiť prácu - 1
skončiť

1.6. Systém pomoci

Okno MatLab Help sa zobrazí po výbere možnosti Help Window z menu Help alebo po stlačení tlačidla s otázkou na paneli nástrojov. Rovnakú operáciu je možné vykonať zadaním príkazu helpwin. Ak chcete zobraziť okno pomocníka pre jednotlivé témy, napíšte helpwin téma. Okno pomocníka vám poskytuje rovnaké informácie ako príkaz help, ale rozhranie okna poskytuje viac pohodlné pripojenie s inými témami pomoci. Pomocou adresy webovej stránky Math Works môžete prejsť na server Math Works a získať najnovšie informácie o problémoch, ktoré vás zaujímajú. Na stránke technickej podpory si môžete pozrieť nové softvérové ​​produkty alebo nájsť odpovede na svoje problémy.

2. Matrice

2.1. Skaláre, vektory a matice

V MatLab môžete použiť skaláre, vektory a matice. Na zadanie skaláru stačí priradiť jeho hodnotu napríklad nejakej premennej

Všimnite si, že MatLab rozlišuje medzi kapitálom a veľké písmená, takže p a P sú rôzne premenné. Ak chcete zadať polia (vektory alebo matice), ich prvky sú uzavreté v hranatých zátvorkách. Takže na zadanie riadkového vektora veľkosti 1x3 sa používa nasledujúci príkaz, v ktorom sú prvky riadku oddelené medzerami alebo čiarkami.

Pri zadávaní stĺpcového vektora sú prvky oddelené bodkočiarkami. Napríklad,

Malé matice je vhodné zadávať priamo z príkazového riadku. Pri vstupe sa na maticu môže pozerať ako na stĺpcový vektor, ktorého každý prvok je riadkový vektor.

alebo maticu možno považovať za riadkový vektor, ktorého každý prvok je stĺpcový vektor.

2.2. Prístup k prvkom

K prvkom matice sa pristupuje pomocou dvoch indexov - čísel riadkov a stĺpcov, uzavretých v zátvorkách, napríklad príkaz B(2,3) vráti prvok druhého riadku a tretieho stĺpca matice B . Ak chcete vybrať stĺpec alebo riadok z matice, použite číslo stĺpca alebo riadka matice ako jeden z indexov a nahraďte druhý index dvojbodkou. Napríklad napíšme druhý riadok matice A do vektora z

Bloky matíc môžete vybrať aj pomocou dvojbodky. Napríklad vyberte z matice P blok označený farbou

Ak potrebujete zobraziť premenné pracovného prostredia, na príkazovom riadku musíte zadať príkaz ktovie .

Je vidieť, že pracovné prostredie obsahuje jeden skalár (p ), štyri matice (A, B, P, P1 ) a riadkový vektor (z ).

2.3. Základné maticové operácie

Pri používaní maticových operácií treba pamätať na to, že matice musia mať rovnakú veľkosť na sčítanie alebo odčítanie a pri násobení sa počet stĺpcov prvej matice musí rovnať počtu riadkov druhej matice. Sčítanie a odčítanie matíc, ako aj čísel a vektorov sa vykonáva pomocou znamienka plus a mínus.

a násobenie je označené hviezdičkou * . Zavádzame maticu 3×2

Násobenie matice číslom sa tiež vykonáva pomocou hviezdičky a môžete násobiť číslom vpravo aj vľavo. Zvýšenie štvorcovej matice na celé číslo sa vykonáva pomocou operátora ^

Výsledok skontrolujte vynásobením matice P samotnou.

2.4. Vytváranie matíc špeciálneho druhu

Vyplnenie pravouhlej matice nulami vykonáva vstavaná funkcia nuly

Matica identity sa vytvorí pomocou funkcie oko

V dôsledku volania funkcie sa vytvorí matica pozostávajúca z jednotiek tie

MatLab poskytuje možnosť vyplniť matice náhodnými číslami. Výsledok funkcie rand je matica čísel rovnomerne rozložená medzi nulou a jednotkou a funkcie randn- matica čísel rozložená podľa normálneho zákona s nulovým priemerom a jednotkovým rozptylom.

Funkcia diag vytvorí z vektora diagonálnu maticu, pričom prvky umiestni diagonálne.

2.5. Maticové výpočty

MatLab obsahuje mnoho rôznych funkcií pre prácu s maticami. Napríklad transpozícia matice sa vykonáva pomocou apostrofu "

Nájdenie inverznej matice sa vykonáva pomocou funkcie inv pre štvorcové matice

3. Integrácia MatLab a Excel

Integrácia MatLab a Excel umožňuje užívateľovi Excelu prístup k mnohým funkciám MatLab na spracovanie dát, rôzne výpočty a vizualizáciu výsledku. Doplnok excllink.xla implementuje toto vylepšenie Excelu. Pre prepojenie MatLab a Excel sú definované špeciálne funkcie.

3.1. Konfigurácia Excelu

Pred nastavením Excelu na prácu s MatLab by ste sa mali uistiť, že je súčasťou Excel Link nainštalovaná verzia matlab. Podadresár exclink hlavného adresára MatLab alebo podadresára toolbox musí obsahovať doplnkový súbor excllink.xla . Spustite Excel a v ponuke Nástroje vyberte položku Doplnky. Otvorí sa dialógové okno s informáciami o aktuálne dostupných doplnkoch. Pomocou tlačidla Prehľadávať zadajte cestu k súboru excllink.xla. V zozname doplnkov v dialógovom okne sa zobrazí reťazec. Excel Link 2.0 na použitie s MatLab s nastavenou vlajkou. Kliknite na tlačidlo OK, požadovaný doplnok bol pridaný do Excelu.

Všimnite si, že Excel má teraz panel s nástrojmi Excel Link, ktorý obsahuje tri tlačidlá: putmatrix , getmatrix , evalstring . Tieto tlačidlá implementujú základné úkony potrebné na implementáciu vzťahu medzi Excelom a MatLabom - výmenu maticových údajov a vykonávanie príkazov MatLab z prostredia Excel. S opakovaným Excel sa spustí doplnok excllink.xla je automaticky zahrnutý.

Dohodnuté Excel práca a MatLab vyžaduje niekoľko ďalších nastavení, ktoré sú predvolené v Exceli (ale možno ich zmeniť). V ponuke Nástroje prejdite na Možnosti , otvorí sa dialógové okno Možnosti. Vyberte kartu Všeobecné a skontrolujte, či je príznak referenčného štýlu R1C1 vypnutý, t.j. bunky sú očíslované A1, A2 atď. Na karte Upraviť musí byť nastavený príznak Presunúť výber po zadaní.

3.2. Výmena dát medzi MatLab a Excel

Spustite Excel a skontrolujte, či je všetko hotové potrebné nastavenia ako je popísané v predchádzajúcej časti (MatLab musí byť zatvorený). Zadajte maticu do buniek A1 až C3, na oddelenie desatinných miest použite bodku, ako to vyžaduje Excel.

Vyberte údaje bunky v hárku a stlačte tlačidlo putmatrix, zobrazí sa okno Excel s upozornením, že MatLab nebeží. Kliknite na OK, počkajte, kým sa MatLab otvorí.

Zobrazí sa dialógové okno Excel so vstupným riadkom na zadanie názvu premennej pracovného priestoru MatLab, do ktorej sa majú exportovať údaje z vybratého bunky Excel. Zadajte napríklad M a zatvorte okno tlačidlom OK. Prejdite do príkazového okna MatLab a uistite sa, že premenná M bola vytvorená v pracovnom prostredí, obsahujúca pole tri krát tri:

Urobte nejaké operácie v MatLab s maticou M , napríklad ju invertujte.

Zavolajte inv invertovať maticu, ako každý iný príkaz MatLab, je možné vykonať priamo z Excelu. Stlačením tlačidla evalstring umiestneného na paneli Excel Link sa zobrazí dialógové okno, do ktorého vstupného riadku zadajte príkaz MatLab

IM=inv(M) .

Výsledok je podobný ako pri vykonávaní príkazu v prostredí MatLab.

Vráťte sa do Excelu, urobte z bunky A5 aktuálnu bunku a kliknite na tlačidlo getmatrix. Zobrazí sa dialógové okno so vstupným riadkom, do ktorého musíte zadať názov premennej, ktorá sa má importovať do Excelu. AT tento prípad takouto premennou je IM . Kliknite na OK , prvky inverznej matice sa zadajú do buniek A5 až A7.

Ak chcete exportovať maticu do MatLabu, mali by ste vybrať príslušné bunky hárku Excel a na import stačí zadať jednu bunku, ktorá bude ľavým horným prvkom importovaného poľa. Zostávajúce prvky sa zapíšu do buniek listu podľa veľkosti poľa, čím sa prepíšu údaje v nich obsiahnuté, takže pri importovaní polí by ste mali byť opatrní.

Vyššie uvedený prístup je najviac jednoduchým spôsobom výmena informácií medzi aplikáciami – prvotné dáta sú obsiahnuté v Exceli, následne exportované do MatLabu, tam nejakým spôsobom spracované a výsledok je importovaný do Excelu. Používateľ prenáša údaje pomocou tlačidiel panela nástrojov Excel Link. Informácie môžu byť prezentované vo forme matice, t.j. obdĺžniková oblasť pracovného hárka. Bunky usporiadané v riadku alebo stĺpci sa exportujú do riadkových vektorov a stĺpcových vektorov v MatLab. Podobne prebieha import riadkových vektorov a stĺpcových vektorov do Excelu.

4. Programovanie

4.1. M-súbory

Práca z príkazového riadku MatLab je náročná, ak potrebujete zadávať veľa príkazov a často ich meniť. Vedenie denníka s príkazom denník a udržiavanie pracovného prostredia trochu uľahčuje prácu. najviac pohodlný spôsob vykonávanie skupín príkazov MatLab je použitie M-súborov, do ktorých môžete písať príkazy, spúšťať ich všetky naraz alebo po častiach, ukladať ich do súboru a použiť neskôr. Editor M-súborov je navrhnutý na prácu so súbormi M. Pomocou neho môžete vytvárať svoje vlastné funkcie a volať ich, a to aj z príkazového okna.

Rozbaľte ponuku Súbor hlavného okna MatLab a v položke Nový vyberte podpoložku M-súbor . Nový súbor sa otvorí v okne editora M-súborov znázornenom na obrázku.

V MatLab sú dva typy M-súborov: program-file ( Script M-Files) obsahujúci postupnosť príkazov a súbor funkcií, ( Funkcia M-súbory), ktoré popisujú funkcie definované používateľom.

4.2. Súborový program

V editore zadajte príkazy, ktoré vedú k vytvoreniu dvoch grafov na jednom grafickom okne

Súbor teraz uložte s názvom mydemo.m do pracovného podadresára hlavného adresára MatLab výberom položky Uložiť ako z ponuky Súbor editora. Ak chcete spustiť všetky príkazy obsiahnuté v súbore, vyberte položku Spustiť z ponuky Debug. Na obrazovke sa zobrazí grafické okno. postava 1, ktorý obsahuje grafy funkcií.

Výstup príkazov súborového programu do príkazového okna. Ak chcete potlačiť výstup, ukončite príkazy bodkočiarkou. Ak sa pri písaní vyskytne chyba a MatLab nedokáže rozpoznať príkaz, potom sa príkazy vykonávajú až do nesprávne zadaného, ​​po čom sa v príkazovom okne zobrazí chybové hlásenie.

Veľmi pohodlnou funkciou, ktorú poskytuje editor M-file, je vykonávanie časti príkazov. Zatvorte grafické okno postava 1. Pri držaní myši vyberte ľavé tlačidlo, alebo klávesy so šípkami pri súčasnom stlačení klávesu Shift, prvé štyri príkazy a vykonajte ich z položky Text. Upozorňujeme, že v grafickom okne bol zobrazený iba jeden graf zodpovedajúci vykonaným príkazom. Nezabudnite, že na vykonanie niektorých príkazov ich musíte vybrať a stlačiť kláves F9.

Samostatné bloky M-súboru môžu byť vybavené komentármi, ktoré sa počas vykonávania preskočia, ale sú vhodné pri práci s M-súborom. Komentáre začínajú znakom percenta a sú automaticky zvýraznené zelenou farbou, napríklad:

Otvorenie existujúceho M-súboru sa vykonáva pomocou položky Otvoriť v ponuke Súbor pracovného prostredia alebo pomocou editora M-súborov.

4.3. súborová funkcia

Vyššie uvedený súborový program je len sekvenciou príkazov MatLabu, nemá žiadne vstupné a výstupné argumenty. Ak chcete používať numerické metódy a programovať svoje vlastné aplikácie v MatLab, musíte byť schopní skladať funkcie súborov, ktoré produkujú potrebné opatrenia so vstupnými argumentmi a vráti výsledok akcie vo výstupných argumentoch. Poďme sa pozrieť na niekoľko jednoduchých príkladov, aby sme pochopili, ako pracovať so súborovými funkciami.

Pri predbežnom spracovaní údajov z viacrozmernej analýzy chemometria často používa centrovanie. Má zmysel napísať funkčný súbor raz a potom ho zavolať všade tam, kde je potrebné centrovanie. Otvorte nový súbor v editore M-file a napíšte

Slovo funkcia v prvom riadku udáva, že tento súbor obsahuje súbor funkcií. Prvý riadok je hlavička funkcie, ktorá obsahuje názov funkcie a zoznam vstupných a výstupných argumentov. V príklade je názov funkcie centrovanie , jeden vstupný argument je X a jeden výstupný argument je Xc. Za hlavičkou nasledujú komentáre a potom telo funkcie (v tomto príklade pozostáva z dvoch riadkov), kde sa vypočíta jej hodnota. Je dôležité, aby sa vypočítaná hodnota zapísala do Xc . Nezabudnite pridať bodkočiarku, aby ste zabránili zobrazovaniu nadbytočných informácií na obrazovke. Teraz uložte súbor do svojho pracovného adresára. Všimnite si, že výberom položky Uložiť alebo Uložiť ako z ponuky Súbor sa zobrazí dialógové okno uloženia súboru, ktorého pole Názov súboru už obsahuje centrovanie názvu . Nemeňte ho, uložte funkčný súbor do súboru s navrhovaným názvom!

Teraz je možné vytvorenú funkciu použiť rovnakým spôsobom ako vstavaný sin , cos a ďalšie. Volanie vlastných funkcií môže byť uskutočnené zo súborového programu a z inej súborovej funkcie. Skúste si sami napísať funkčný súbor, ktorý bude škálovať matice, t.j. vydeľte každý stĺpec štandardnou odchýlkou ​​pre daný stĺpec.

Je možné napísať súbor funkcií s viacerými vstupnými argumentmi, ktoré sú umiestnené v zozname oddelenom čiarkami. Môžete tiež vytvoriť funkcie, ktoré vracajú viacero hodnôt. Na tento účel sa do zoznamu výstupných argumentov pridajú výstupné argumenty oddelené čiarkami a samotný zoznam sa uzavrie do hranatých zátvoriek. dobrý príklad je funkcia, ktorá prevádza čas uvedený v sekundách na hodiny, minúty a sekundy.

Pri volaní súborových funkcií s viacerými výstupnými argumentmi by sa mal výsledok zapísať do vektora vhodnej dĺžky.

4.4 Vytvorenie grafu

MatLab má bohaté možnosti na grafické znázornenie vektorov a matíc, ako aj na vytváranie komentárov a tlač grafov. Uveďme si popis niekoľkých dôležitých grafických funkcií.

Funkcia zápletkarôzne formy, spojené so vstupnými parametrami, napríklad plot(y) vytvára po častiach čiarový graf y prvkov oproti ich indexom. Ak sú ako argumenty uvedené dva vektory, potom plot(x,y) vykreslí y verzus x. Napríklad na vykreslenie funkcie sin v rozsahu od 0 do 2π urobíme nasledovné

Program vytvoril graf závislosti, ktorý sa zobrazí v okne postava 1

MatLab automaticky priraďuje každému grafu inú farbu (okrem prípadov, keď to robí používateľ), čo umožňuje rozlíšiť množiny údajov.

Tím Počkaj umožňuje pridať krivky do existujúceho grafu. Funkcia podzápletka umožňuje zobraziť viacero grafov v jednom okne

4.5 Tlač grafov

Položka Tlačiť v ponuke Súbor a príkaz vytlačiť tlač grafiky MatLab. Ponuka Tlač zobrazí dialógové okno, ktoré vám umožní vybrať bežné štandardné možnosti tlače. Tím vytlačiť poskytuje väčšiu flexibilitu pri výstupe dát a umožňuje riadiť tlač z M-súborov. Výsledok je možné odoslať priamo na predvolenú tlačiareň alebo uložiť do preddefinovaného súboru.

5. Príklady programov

V tejto časti sú uvedené najbežnejšie algoritmy používané pri analýze údajov s viacerými premennými. Uvažuje sa o najjednoduchších metódach transformácie údajov - centrovanie a škálovanie, ako aj o algoritmoch na analýzu údajov - PCA, PLS.

5.1. Centrovanie a škálovanie

Analýza často vyžaduje transformáciu zdrojových údajov. Najbežnejšie používané metódy transformácie údajov sú centrovanie a škálovanie každej premennej podľa štandardnej odchýlky. Vo funkčnom kóde pre centrovanie bola uvedená matica. Preto je nižšie uvedený iba kód funkcie, ktorá váhyúdajov. Upozorňujeme, že pôvodná matica musí byť vycentrovaná

funkcia Xs = škálovanie (X)
% škálovanie: výstupná matica je Xs
% matice X musí byť vycentrované

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

%koniec škálovania

5.2. SVD/PCA

Najpopulárnejším spôsobom kompresie údajov vo viacrozmernej analýze je analýza hlavných komponentov (PCA). Z matematického hľadiska je PCA rozklad pôvodnej matice X, t.j. predstavujúci ho ako súčin dvoch matíc T a P

X = TP t + E

Matrix T sa nazýva matica skóre (skóre), matica je matica rezíduí.

Najjednoduchší spôsob, ako nájsť matice T a P- použiť SVD rozklad prostredníctvom štandardnej funkcie MatLab tzv svd .

funkcia = pcasvd(X)

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

%koniec pcasvd

5.3 PCA/NIPALS

Na zostavenie skóre a zaťaženia PCA sa používa rekurzívny algoritmus NIPALS, ktorý v každom kroku počíta jeden komponent. Najprv pôvodná matrica X sa transformuje (aspoň - vycentruje; pozri) a zmení sa na matricu E 0 , a=0. Ďalej sa použije nasledujúci algoritmus.

t 2. p t = t t Ea / t t t 3. p = p / (p t p) ½ 4. t = Ea p / p t p 5. Skontrolujte konvergenciu, ak nie, prejdite na 2

Po výpočte ďalšieho ( a th) komponenty, predpokladáme ta=t a pa=p E a+1 = Eat p a na a+1.

Kód algoritmu NIPALS si môžu čitatelia napísať sami, v tomto návode autori uvádzajú svoju vlastnú verziu. Pri výpočte PCA môžete zadať počet hlavných komponentov (premenné čísloPC ). Ak neviete, koľko komponentov je potrebných, mali by ste na príkazový riadok napísať = pcanipals (X) a potom program nastaví počet komponentov rovný najmenšiemu z pôvodných rozmerov matice X.

funkcia = pcanipals(X, čísloPC)

% výpočet počtu komponentov
= veľkosť (X); P=; T=;

Ak dĺžka (čísloPC) > 0
pc = čísloPC(1);
elseif (dĺžka(čísloPC) == 0) & X_r< X_c
pc = X_r;
inak
pc = X_c;
koniec;

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

Zatiaľ čo d - d0 > 0,0001;
P1 = (T1" * X/(T1" * T1)); P1 = P1/norma (P1); T1=X*P1; d0 = T1"*T1;
P1 = (T1" * X/(T1" * T1)); P1 = P1/norma (P1); T1=X*P1; d = T1"*T1;
koniec

X = X - T1 * P1; P = cat(1, P, P1"); T =;
koniec

Naučte sa, ako vypočítať PCA pomocou doplnku Chemometrics v návode

5.4PLS1

Najpopulárnejšou metódou pre viacrozmernú kalibráciu je metóda projekcie na latentné štruktúry (PLS). Táto metóda vykonáva simultánny rozklad prediktorovej matice X a matrice odozvy Y:

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

Projekcia je konštruovaná konzistentným spôsobom, aby sa maximalizovala korelácia medzi zodpovedajúcimi vektormi X-účty ta a Y-účty ua. Ak sa zablokujú údaje Y zahŕňa viacero odpovedí (t.j. K>1), je možné zostrojiť dve projekcie počiatočných údajov – PLS1 a PLS2. V prvom prípade pre každú z odpovedí r k je skonštruovaný vlastný projekčný podpriestor. Zároveň účty T (U) a zaťaženie P (W, Q) závisí od toho, ktorá odpoveď sa používa. Tento prístup sa nazýva PLS1. Pre metódu PLS2 je vybudovaný len jeden projekčný priestor, ktorý je spoločný pre všetky odpovede.

Podrobný popis metódy PLS je uvedený v tejto knihe Na zostavenie skóre a zaťažení PLS1 sa používa rekurzívny algoritmus. Najprv pôvodné matrice X a Y stred

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

a menia sa na matricu E 0 a vektor f 0 , a=0. Potom sa na ne aplikuje nasledujúci algoritmus

1. w t = fa t E a 2. w = w / (w t w) ½ 3. t = Ea w 4. q = t t fa / t t t 5. u = qfa / q 2 6. p t = t t Ea / t t t

Po výpočte ďalšieho ( a th) komponenty, predpokladáme ta=t a pa=p. Ak chcete získať ďalšiu zložku, musíte vypočítať zvyšky E a+1 = Eat p t a použiť na ne rovnaký algoritmus, ktorý nahradí index a na a+1.

Tu je kód pre tento algoritmus, prevzatý z knihy

funkcia = pls(x, y)
%PLS: vypočíta zložku PLS.
%Výstupné vektory sú w, t, u, q a p.
%
% Vyberte vektor z y ako počiatočný vektor u.

u = y(:, 1);

% Kritérium konvergencie je nastavené veľmi vysoko.
cri = 100;

% Príkazy odtiaľto do konca sa opakujú až do konvergencie.
zatiaľ čo (cri > 1e - 10)

% Každý počiatočný vektor u sa uloží ako uold.
uold = u; w = (u" * x)"; w = w/norma(w);
t = x*w; q = (t" * y)"/(t" * t);
u = y * q/(q" * q);

% Konvergenčné kritérium je norma uold delená normou u.
kri = norma(uold - u)/norm(u);
koniec;

% Po konvergencii vypočítajte p.
p = (t" * x)"/(t" * t);

% Koniec pls

O výpočte PLS1 s doplnkom ChemometriaPridať popísané v príručke Metódy projekcie v Exceli.

5.5PLS2

Pre PLS2 je algoritmus nasledujúci. Najprv pôvodné matrice X a Y transformovať (aspoň - stred; pozri), a premenia sa na matice E 0 a F 0 , a=0. Potom sa na ne aplikuje nasledujúci algoritmus.

1. Vyberte počiatočný vektor u 2. w t = u t E a 3. w = w / (w t w) ½ 4. t = Ea w 5. q t = t t Fa / t t t 6. u = Fa q/ q t q 7. Skontrolujte konvergenciu, ak nie, prejdite na 2 8. p t = t t Ea / t t t

Po výpočte ďalšieho ( a th) Komponenty PLS2 musia byť vložené: ta=t, pa=p,wa=w, ua=u a q a = q. Ak chcete získať ďalšiu zložku, musíte vypočítať zvyšky E a+1 = Eatp t a Fa +1 = F atq t a použiť na ne rovnaký algoritmus, ktorý nahradí index a na a+1.

Tu je kód, ktorý je tiež vypožičaný z knihy.

funkcia = pls(x, y, a)
% PLS: vypočíta zložku PLS.
% Výstupné matice sú W, T, U, Q a P.
% B obsahuje regresné koeficienty a SS súčty
% štvorcov pre zvyšky.
% a sú počty komponentov.
%
% Pre komponenty: použite všetky príkazy na ukončenie.

Pre i=1:a
% Vypočítajte súčet druhých mocnín. Použite funkciu ss.
sx = ;
sy = ;

% Na výpočet jednej zložky použite funkciu pls.
= pls(x, y);

% Vypočítajte zvyšky.
x = x - t * p";
y = y - t * q";

% Uložte vektory do matíc.
W =;
T =;
U =;
Q =;
P =;
koniec;

% Vypočítajte regresné koeficienty po slučke.
B=W*inv(P"*W)*Q";

% Pripočítajte konečný reziduálny SS k súčtu vektorov štvorcov.
sx=;
sy=;

% Vytvorte maticu ss vektorov pre X a Y.
SS = ;

% Vypočítajte použitý podiel SS.
= veľkosť (SS);
tt = (SS * diag(SS(1,:).^(-1)) - jedničky(a, b)) * (-1)

%Koniec plsr

funkcia = ss(x)
%SS: vypočíta súčet druhých mocnín matice X.
%

ss=sum(sucet(x. *x));
%koniec ss

O výpočte PLS2 s doplnkom ChemometriaPridať popísané v príručke Metódy projekcie v Exceli.

Záver

MatLab je veľmi populárny nástroj na analýzu dát. Podľa prieskumu ho využíva až tretina všetkých výskumníkov, pričom program Unsrambler využíva len 16 % vedcov. Hlavnou nevýhodou MatLabu je jeho vysoká cena. Okrem toho je MatLab dobrý na rutinné výpočty. Nedostatok interaktivity ho robí nepohodlným pri vyhľadávaní, výskumných výpočtoch pre nové, nepreskúmané dátové polia.

Práca z príkazového riadku MatLab je náročná, ak potrebujete zadávať veľa príkazov a často ich meniť. Vedenie denníka pomocou príkazu denník a šetrenie pracovného prostredia veci len o niečo uľahčí. Najpohodlnejší spôsob vykonávania príkazov MatLab je použiť M-súbory, v ktorom môžete písať príkazy, vykonávať ich všetky naraz alebo po častiach, ukladať ich do súboru a použiť ich neskôr. Editor M-súborov je navrhnutý na prácu so súbormi M. Pomocou tohto editora môžete vytvárať vlastné funkcie a volať ich, a to aj z príkazového riadku.

Rozbaľte ponuku súbor v hlavnom okne MatLabu a v odseku Nový vyberte podpoložku M-súbor. Nový súbor sa otvorí v okne editora M-súborov.

Zadajte v editore príkazy, ktoré vedú k vytvoreniu dvoch grafov v jednom grafickom okne:

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

Uložte súbor teraz s názvom mydemo.m do podadresára práca hlavný adresár MatLab výberom položky Uložiť ako Ponuka súbor editor. Ak chcete spustiť všetky príkazy obsiahnuté v súbore, vyberte položku Bežať v ponuke ladenie. Na obrazovke sa zobrazí grafické okno. obrázok č.1, obsahujúce grafy funkcií. Ak sa rozhodnete vykresliť kosínus namiesto sínusu, jednoducho zmeňte riadok g = sin(x) v súbore M na g = cos(x) a spustite všetky príkazy znova.

Poznámka 1

Ak sa pri písaní vyskytne chyba a MatLab nedokáže rozpoznať príkaz, potom sa príkazy vykonávajú až do nesprávne zadaného, ​​po čom sa v príkazovom okne zobrazí chybové hlásenie.

Veľmi šikovnou funkciou, ktorú poskytuje editor M-file, je vykonávanie niektorých príkazov. Zatvorte grafické okno obrázok č.1. Vyberajte myšou pri stlačenom ľavom tlačidle alebo šípkami pri podržaní klávesu , prvé štyri príkazy programu a vykonajte ich z odseku Ohodnotiť Výber Ponuka Text. Upozorňujeme, že v grafickom okne bol zobrazený iba jeden graf zodpovedajúci vykonaným príkazom. Pamätajte, že na vykonanie niektorých príkazov ich musíte vybrať a stlačiť . Spustite zostávajúce tri príkazy programu a sledujte stav grafického okna. Cvičte sami, zadajte niekoľko príkladov z predchádzajúcich cvičení v editore súborov M a spustite ich.

Jednotlivé bloky M-súboru môžu byť vybavené komentáre, ktoré sa počas vykonávania preskočia, ale sú vhodné pri práci s M-súborom. Komentáre v MatLab začínajú znakom percenta a sú automaticky zvýraznené v zelenej farbe, napríklad:

%vykresľovanie sin(x) v samostatnom okne

V editore M-súborov je možné otvoriť viacero súborov súčasne. Prechod medzi súbormi sa vykonáva pomocou kariet s názvami súborov umiestnených v spodnej časti okna editora.

Otvorenie existujúceho M-súboru sa vykonáva pomocou položky OTVORENÉ Ponuka súbor pracovné prostredie alebo editor súborov M. Súbor môžete otvoriť aj v editore pomocou príkazu MatLab edit z príkazového riadku, pričom ako argument uveďte názov súboru, napríklad:

Príkaz edit bez argumentu vedie k vytvoreniu nového súboru.
Všetky príklady, ktoré sa objavia v tomto a nasledujúcich laboratóriách, je najlepšie napísať a uložiť do súborov M, doplniť ich komentármi a spustiť z editora súborov M. Aplikácia numerických metód a programovanie v MatLab vyžaduje vytváranie M-súborov.

2. Typy M-súborov

M-súbory v MatLab sú dvoch typov: program-súbor(Script M-Files) obsahujúci postupnosť príkazov a funkčný-súbor(Function M-Files), ktoré popisujú užívateľom definované funkcie.

Súborový program (súborový postup), ktorý ste vytvorili pri čítaní predchádzajúcej podsekcie. Všetky premenné deklarované v súborovom programe sú dostupné v pracovnom prostredí po jeho spustení. Spustite súborový program uvedený v podsekcii 2.1 v editore súborov M? a napíšte príkaz whos do príkazového riadka, aby ste zobrazili obsah pracovného prostredia. V príkazovom okne sa zobrazí popis premenných:

» kto
Názov Veľkosť Bytes Trieda
f 1x71 568 dvojité pole
g 1x71 568 dvojité pole
x 1x71 568 dvojité pole
Celkový súčet je 213 prvkov s použitím 1704 bajtov

Premenné definované v jednom programovom súbore možno použiť v iných programových súboroch a v príkazoch vykonávaných z príkazového riadku. Príkazy obsiahnuté v súborovom programe sa vykonávajú dvoma spôsobmi:

  • Z editora súborov M, ako je opísané vyššie.
  • Z príkazového riadku alebo iného programového súboru, pričom ako príkaz použijete názov súboru M.

Použitie druhého spôsobu je oveľa pohodlnejšie, najmä ak sa vytvorený súbor programu bude neskôr opakovane používať. V skutočnosti sa vytvorený M-súbor stáva príkazom, ktorému MatLab rozumie. Zatvorte všetky grafické okná a na príkazový riadok napíšte mydemo, zobrazí sa grafické okno zodpovedajúce príkazom z programového súboru mydemo.m. Po zadaní príkazu mydemo MatLab vykoná nasledujúce akcie.

  • Skontroluje, či zadaný príkaz je názov jednej z premenných definovaných v runtime. Ak je zadaná premenná, zobrazí sa jej hodnota.
  • Ak nie je zadaná premenná, MatLab vyhľadá zadaný príkaz medzi vstavanými funkciami. Ak je príkaz vstavanou funkciou, vykoná sa.

Ak nie je zadaná premenná ani vstavaná funkcia, MatLab začne hľadať M-súbor s názvom príkazu a príponou m. Vyhľadávanie začína s aktuálny adresár(Aktuálny adresár), ak sa v ňom nenájde M-súbor, potom MatLab prehľadá adresáre nainštalované v hľadať cesty(Cesta). Nájdený M-súbor sa spustí v MatLab.

Ak žiadna z vyššie uvedených akcií nebola úspešná, v príkazovom okne sa zobrazí správa, napríklad:

»mydem
??? Nedefinovaná funkcia alebo premenná "mydem".

M-súbory sú spravidla uložené v adresári užívateľa. Aby ich systém MatLab našiel, musíte nastaviť cesty označujúce umiestnenie M-súborov.

Poznámka 2

Udržiavanie vlastných M-súborov mimo hlavného adresára MatLab je z dvoch dôvodov. Po prvé, pri preinštalovaní MatLabu môžu byť zničené súbory, ktoré sú obsiahnuté v podadresároch hlavného adresára MatLab. Po druhé, pri spustení MatLabu sa všetky súbory podadresára toolbox nejakým optimálnym spôsobom umiestnia do pamäte počítača, aby sa zvýšil výkon. Ak ste do tohto adresára zapísali M-súbor, môžete ho použiť až po reštarte MatLabu.

3. Nastavenie ciest

Vo verzii MatLab 6 .X určí sa aktuálny adresár a vyhľadávacie cesty. Tieto vlastnosti sa nastavujú buď pomocou príslušných dialógových okien alebo príkazov z príkazového riadku.

Aktuálny adresár je určený v dialógovom okne Aktuálne Adresár Pracovné prostredie. Okno je prítomné v pracovnom prostredí, ak je vybratá položka Aktuálne Adresár Ponuka vyhliadka Pracovné prostredie.
Aktuálny adresár sa vyberie zo zoznamu. Ak nie je v zozname, môžete ho pridať z dialógového okna Prehľadávať pre priečinok, vyvoláte kliknutím na tlačidlo umiestnené napravo od zoznamu. Obsah aktuálneho adresára sa zobrazí v tabuľke súborov.

Vyhľadávacie cesty sú definované v dialógovom okne nastaviť Cesta navigátor cesty, prístupný z bodu nastaviť Cesta Ponuka súbor Pracovné prostredie.

Ak chcete pridať adresár, kliknite na tlačidlo Pridať Priečinok Prehľadávať pre Cesta vyberte požadovaný adresár. Pridanie adresára so všetkými jeho podadresármi sa vykoná kliknutím na tlačidlo Pridať pomocou podpriečinkov. MATLAB Vyhľadávanie cesta. Poradie vyhľadávania zodpovedá umiestneniu ciest v tomto poli, vyhľadáva sa prvý adresár, ktorého cesta sa nachádza na začiatku zoznamu. Môžete zmeniť poradie vyhľadávania alebo dokonca odstrániť cestu k adresáru, pre ktorý vyberte adresár v poli MATLAB Vyhľadávanie cesta a definujte jeho polohu pomocou nasledujúcich tlačidiel:
pohybovať sa do Hore - umiestniť na začiatok zoznamu;
pohybovať sa Hore - posuňte sa o jednu pozíciu vyššie;
Odstrániť - odstrániť zo zoznamu;
pohybovať sa Dole - posuňte sa o jednu pozíciu nižšie;
pohybovať sa do dno - umiestnite na koniec zoznamu.

4. Príkazy na nastavenie ciest.

Kroky na nastavenie ciest v MatLab 6 .X duplicitné príkazy. Aktuálny adresár sa nastavuje príkazom cd, napríklad cd c:\users\igor. Príkaz cd, volaný bez argumentu, vypíše cestu k aktuálnemu adresáru. Cesty sa nastavujú pomocou príkazu path, ktorý sa volá s dvoma argumentmi:

cesta (cesta, "c:\users\igor") - pridá adresár c:\users\igor s najnižšou prioritou vyhľadávania;
cesta ("c: \users\igor",cesta) - pridá adresár c:\users\igor s najvyššou prioritou vyhľadávania.

Použitie príkazu cesta bez argumentov spôsobí, že sa na obrazovke zobrazí zoznam vyhľadávacích ciest. Cestu môžete zo zoznamu odstrániť pomocou príkazu rmpath:

rmpath("c:\users\igor") odstráni cestu k c:\users\igor zo zoznamu ciest.

Poznámka 3

Neodstraňujte zbytočne cesty k adresárom, najmä tie, o ktorých si nie ste istí. Odstránenie môže viesť k tomu, že niektoré funkcie definované v MatLab budú nedostupné.

Príklad. Vytvorte v koreňovom adresári disku D(alebo akýkoľvek iný disk alebo adresár, kde si študenti môžu vytvárať vlastné adresáre) adresár s vaším priezviskom, napr. WORK_IVANOV, a napíšte tam M-súbor mydemo.m pod názvom mydemo3.m. Nastavte cesty k súborom a ukážte dostupnosť súboru z príkazového riadku. Oznámte výsledky v laboratórnej správe.

Riešenie:

1. V koreňovom adresári disku D vytvorí sa adresár WORK_IVANOV.
2. M-súbor mydemo.m sa zapíše do adresára WORK_IVANOV pod názvom mydemo3.m.
3. Otvorí sa dialógové okno nastaviť Cesta Ponuka súbor Pracovné prostredie MatLab.
4. Tlačidlo je stlačené Pridať Priečinok a v zobrazenom dialógovom okne Prehľadávať pre Cesta je vybratý adresár WORK_IVANOV.
5. Pridanie adresára so všetkými jeho podadresármi sa vykoná kliknutím na tlačidlo Pridať s podpriečinky. V poli sa zobrazí cesta k pridanému adresáru MATLAB Vyhľadávanie cesta.
6. Ak chcete cestu uložiť, stlačte kláves Uložiť dialógové okno nastaviť Cesta.
7. Správnosť všetkých akcií sa kontroluje zadaním príkazu mydemo3 z príkazového riadku. Na obrazovke sa zobrazí grafické okno.

5. Funkcie súborov

Súborové programy diskutované vyššie sú sekvenciou príkazov MatLab, nemajú žiadne vstupné ani výstupné argumenty. Ak chcete používať numerické metódy a pri programovaní vlastných aplikácií v MatLabe, musíte byť schopní vytvárať súborové funkcie, ktoré vykonávajú potrebné akcie so vstupnými argumentmi a vracajú výsledok vo výstupných argumentoch. Táto podsekcia obsahuje niekoľko jednoduchých príkladov, ktoré vám pomôžu pochopiť, ako pracovať s funkciami súborov. Súbory funkcií, podobne ako súbory procedúr, sa vytvárajú v editore súborov M.

5.1. Súborové funkcie s jedným vstupným argumentom

Predpokladajme, že pri výpočtoch je často potrebné použiť funkciu

Má zmysel napísať súbor funkcie raz a potom ho volať všade tam, kde je potrebné túto funkciu vyhodnotiť. Otvorte v editore súborov M nový súbor a zadajte text záznamu

funkcia f = myfun(x)
f= exp(-x)*sqrt((x^2+1)/(x^4+0,1));

Slovo funkcia v prvom riadku to určuje daný súbor obsahuje funkčný súbor. Prvý riadok je hlavička funkcie, ktorý hostí názov funkcie a zoznamy vstupných a výstupných argumentov. V príklade vo výpise je názov funkcie myfun, jeden vstupný argument je x a jeden výstupný argument je f. Po titulku nasleduje funkčné telo(je to v tento príklad pozostáva z jedného riadku), kde sa vypočíta jeho hodnota. Je dôležité, aby sa vypočítaná hodnota zapísala do f. Bodkočiarka je nastavená tak, aby sa na obrazovke nezobrazovali nepotrebné informácie.

Teraz uložte súbor do svojho pracovného adresára. Upozorňujeme, že výber položky Uložiť alebo Uložiť ako Ponuka súbor vedie k zobrazeniu dialógového okna na uloženie súboru v poli súbor názov ktorý už obsahuje názov myfun. Nemeňte ho, uložte funkčný súbor do súboru s navrhovaným názvom.

Teraz je možné vytvorenú funkciu použiť rovnakým spôsobom ako vstavaný sin, cos a ďalšie, napríklad z príkazového riadku:

»y=myfun(1.3)
Y =
0.2600

Volanie vlastných funkcií môže byť uskutočnené zo súborového programu a z inej súborovej funkcie.

POZOR

Adresár obsahujúci funkčný súbor musí byť aktuálny, alebo cesta k nemu musí byť pridaná do vyhľadávacej cesty, inak MatLab funkciu jednoducho nenájde, alebo namiesto nej zavolá inú s rovnakým názvom (ak sa nachádza v adresároch k dispozícii na vyhľadávanie).

Funkčný súbor zobrazený v zozname má jednu významnú nevýhodu. Pokus o vyhodnotenie funkčných hodnôt z poľa má za následok chybu, nie pole hodnôt, ako sa to vyskytuje pri vyhodnocovaní vstavaných funkcií.

» x = ;
» y = myfun(x)
??? Chyba pri použití ==> ^
Matica musí byť štvorcová.
Chyba v ==> C:\MATLABRll\work\myfun.m
Na riadku 2 ==> f = exp(-x)*sqrt((x^2+1)/(x^4+1));

Ak ste sa naučili pracovať s poliami, odstránenie tohto nedostatku nespôsobí ťažkosti. Pri výpočte hodnoty funkcie stačí použiť operácie po prvkoch.
Upravte telo funkcie, ako je uvedené v nasledujúcom zozname (nezabudnite uložiť zmeny do súboru myfun.m).

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

Teraz môže byť argumentom funkcie myfun buď číslo, alebo vektor alebo matica hodnôt, napríklad:

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

Premenná y, do ktorej sa zapíše výsledok volania funkcie myfun, sa automaticky stáva vektorom požadovanej veľkosti.

Nakreslite funkciu myfun na segment z príkazového riadku alebo pomocou súborového programu:

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

MatLab poskytuje ďalší spôsob práce so súborovými funkciami – ich použitie ako argumentov pre niektoré príkazy. Ak chcete napríklad nakresliť graf, špeciálna funkcia fplot, ktorý nahrádza vyššie uvedenú sekvenciu príkazov. Keď sa volá fplot, názov funkcie, ktorej graf sa má vykresliť, je uzavretý v apostrofoch, limity vykresľovania sú špecifikované v riadkovom vektore dvoch prvkov

fplot("myfun", )

Plot myfun s plot a fplot na rovnakých osiach, s hold on. Upozorňujeme, že graf vytvorený pomocou funkcie fplot presnejšie odráža správanie funkcie, pretože samotný fplot vyberá krok argumentu a znižuje ho po častiach rýchla zmena zobrazená funkcia. Oznámte výsledky v laboratórnej správe.

5.2. Súborové funkcie s viacerými vstupnými argumentmi

Zápis súborových funkcií s viacerými vstupnými argumentmi je takmer rovnaký ako zápis jedného argumentu. Všetky vstupné argumenty sú umiestnené v zozname oddelenom čiarkami. Napríklad nasledujúci zoznam obsahuje súbor funkcií, ktorý vypočítava dĺžku vektora polomeru bodu v 3D priestore
Výpis funkcie súboru s viacerými argumentmi

funkcia r = polomer3(x, y, z)
r = sqrt(x.^2 + y.^2 + z.^2);

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

Okrem funkcií s viacerými vstupnými argumentmi umožňuje MatLab vytvárať funkcie, ktoré vracajú viacero hodnôt, t.j. s viacerými výstupnými argumentmi.

5.3. Súborové funkcie s viacerými výstupnými argumentmi

Súborové funkcie s viacerými výstupnými argumentmi sú užitočné na vyhodnotenie funkcií, ktoré vracajú viacero hodnôt (v matematike sa nazývajú vektorové funkcie). Výstupné argumenty sa pridajú oddelené čiarkami do zoznamu výstupných argumentov a samotný zoznam je uzavretý v hranatých zátvorkách. Dobrým príkladom je funkcia, ktorá prevádza čas uvedený v sekundách na hodiny, minúty a sekundy. Tento funkčný súbor je zobrazený v nasledujúcom zozname.

Výpis funkcie na prevod sekúnd na hodiny, minúty a sekundy

funkcia = hms (s)
hodina = podlaha(s/3600);
minúta = podlaha ((s-hodina*3600)/60);
sekunda = sek-hodina*3600-minúta*60;

Pri volaní súborových funkcií s viacerými výstupnými argumentmi by sa mal výsledok zapísať do vektora vhodnej dĺžky:

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

6. Základy programovania v MatLab

Funkčný súbor a programový súbor použité v predchádzajúcich podkapitolách sú najjednoduchšie príklady programov Všetky príkazy MatLabu v nich obsiahnuté sa vykonávajú postupne. Na vyriešenie mnohých vážnejších problémov je potrebné písať programy, v ktorých sa akcie vykonávajú cyklicky alebo v závislosti od určitých podmienok sa vykonávajú rôzne časti programov. Pozrime sa na hlavné operátory, ktoré špecifikujú postupnosť vykonávania príkazov MatLab. Operátory je možné použiť v súborových procedúrach aj vo funkciách, čo umožňuje vytvárať programy so zložitou štruktúrou vetvenia.

6.1. Vyhlásenie slučky pre

Operátor je navrhnutý tak, aby vykonal daný počet opakujúcich sa akcií. Najjednoduchšie použitie príkazu for je nasledovné:

for count = start:step:final
Príkazy MatLabu
koniec

Počet je tu premenná cyklu, začiatok je jej počiatočná hodnota, konečná je jej konečná hodnota a krok je krok, o ktorý sa počet zvyšuje vždy, keď vstúpi do slučky. Cyklus sa skončí, akonáhle sa hodnota count stane vyššou ako konečná. Premenná slučky môže nadobúdať nielen celočíselné hodnoty, ale aj skutočné hodnoty akéhokoľvek znamienka. Analyzujme aplikáciu operátora cyklu for na niektorých typických príkladoch.
Nech je potrebné odvodiť rodinu kriviek pre , ktorá je daná funkciou závislou od parametra pre hodnoty parametrov od -0,1 do 0,1.
Napíšte text súboru procedúry v editore M-súboru a uložte ho do súboru FORdem1.m a spustite ho na vykonanie (z editora M-súboru alebo z príkazového riadku tak, že doň napíšete príkaz FORdem1 a stlačíte ):

% file-program na zostavenie rodiny kriviek
x = ;
pre a = -0,1:0,02:0,1
y = exp(-a*x).*sin(x);
Počkaj
plot(x, y)
koniec

Poznámka 4

Editor M-súboru automaticky navrhuje umiestniť príkazy do slučky, odsadené od ľavého okraja. Využite túto príležitosť na pohodlnú prácu s textom programu.

V dôsledku vykonania FORdem1 sa zobrazí grafické okno, ktoré obsahuje požadovanú skupinu kriviek.

Napíšte programový súbor na výpočet súčtu

Algoritmus na výpočet súčtu využíva akumuláciu výsledku, t.j. najprv je súčet nula ( S= 0), potom do premennej k jednotka je zadaná, 1/ k! sa pridáva do S a výsledok sa vloží späť S. Ďalej k sa zvýši o jednu a proces pokračuje, kým posledný termín nebude 1/10!. Súborový program Fordem2, zobrazený v nasledujúcom zozname, vypočíta požadovanú sumu.

Výpis súborového programu Fordem2 na výpočet súčtu

% súborový program na výpočet sumy
% 1/1!+1/2!+ … +1/10!

% Reset S na nahromadenie sumy
S = 0;
% akumulácie množstva v cykle
pre k = 1:10
S = S + 1/faktoriál (k);
Koniec
% výsledok tlače do príkazového okna S

Napíšte súbor programu do editora M-file, uložte ho do aktuálneho adresára v súbore Fordem2.m a spustite. Výsledok sa zobrazí v príkazovom okne, pretože v poslednom riadku súborového programu S obsahuje bez bodkočiarky na zobrazenie hodnoty premennej S

Všimnite si, že ostatné riadky v súborovom programe, ktoré by mohli spôsobiť zobrazenie medziľahlých hodnôt, sú ukončené bodkočiarkou na potlačenie výstupu do príkazového okna.

Prvé dva riadky s komentármi nie sú náhodne oddelené prázdnym riadkom od zvyšku textu programu. Zobrazia sa, keď používateľ pomocou príkazu help z príkazového riadku dostane informácie o tom, čo Fordem2 robí.

>>helpFordem2
súborový program na výpočet súčtu
1/1!+1/2!+ … +1/10!

Pri písaní súborových programov a súborových funkcií nezanedbávajte komentáre!
Všetky premenné používané v súborovom programe budú dostupné v pracovnom prostredí. Sú to takzvané globálne premenné. Na druhej strane súborový program môže využívať všetky premenné zadané v pracovnom prostredí.

Zvážte problém výpočtu súčtu, podobný predchádzajúcemu, ale v závislosti od premennej X

Ak chcete vypočítať túto sumu v súborovom programe Fordem2, musíte zmeniť riadok v slučke for na

S = S + x.^k/faktoriál(k);

Pred spustením programu musíte definovať premennú X na príkazovom riadku pomocou nasledujúcich príkazov:

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

Ako X môže to byť vektor alebo matica, pretože súborový program Fordem2 používal na akumuláciu súčtu operácie po prvkoch.

Pred spustením Fordem2 je potrebné priradiť premennú X nejakú hodnotu a na výpočet súčtu napríklad z pätnástich výrazov budete musieť vykonať zmeny v texte súborového programu. Je oveľa lepšie napísať generickú súborovú funkciu, ktorá bude mať hodnotu ako vstupné argumenty X a horná hranica sumy a výstup - hodnota sumy S(X). Funkčný súbor sumN je zobrazený v nasledujúcom zozname.

Funkcia výpisu súboru pre výpočet sumy

funkcia S = súčetN(x, N)
% súborová funkcia na výpočet súčtu
% x/1!+x^2/2!+ … +x^N/N!
% využitia: S = sumaN(x, N)

% reset S na akumuláciu sumy
S = 0;
% akumulácie množstva v cykle
pre m = 1:1:N
S = S + x.^m/faktoriál(m);
koniec

Používateľ sa môže dozvedieť o použití funkcie sumN zadaním help sumN na príkazovom riadku. V príkazovom okne sa zobrazia prvé tri riadky s komentármi, oddelené od textu súboru funkcií prázdnym riadkom.

Všimnite si, že premenné funkcie súboru nie sú globálne (m v súbore funkcií je sumN). Pri pokuse o zobrazenie hodnoty premennej m z príkazového riadku sa zobrazí správa, že m nie je definované. Ak v pracovnom prostredí existuje globálna premenná s rovnakým názvom, definovaná z príkazového riadku alebo v súborovom programe, potom nijako nesúvisí s lokálnou premennou v súborovej funkcii. Spravidla je lepšie písať svoje vlastné algoritmy vo forme súborových funkcií, aby premenné použité v algoritme nemenili hodnoty globálnych premenných prostredia s rovnakým názvom.

Cykly For môžu byť vnorené do seba, ale premenné vnorených slučiek musia byť odlišné.

Cyklus for je užitočný na vykonávanie opakovaných podobných akcií, keď je ich počet vopred určený. Flexibilnejšia slučka while vám umožňuje obísť toto obmedzenie.

6.2. while loop príkaz

Zvážte príklad na výpočet súčtu, podobný príkladu z predchádzajúceho odseku. Je potrebné nájsť súčet radu pre daný X(rozšírenie v sérii):
.

Súčet môže byť akumulovaný, pokiaľ nie sú členy príliš malé, povedzme viac modulo. Slučka for je tu nevyhnutná, pretože počet členov nie je vopred známy. Riešením je použitie cyklu while, ktorý beží, pokiaľ je podmienka cyklu pravdivá:

zatiaľ čo stav slučky
Príkazy MatLabu
koniec

V tomto príklade podmienka cyklu predpokladá, že aktuálny výraz je väčší ako . Znamienko väčšie ako (>) sa používa na zápis tejto podmienky. Text súborovej funkcie mysin, ktorá vypočítava súčet série, je zobrazený v nasledujúcom zozname.

Výpis súbor-funkcia mysin, ktorá vypočíta sínus rozšírením série

funkcia S = mysin(x)
% Výpočet sínusu sériovou expanziou
% Použitie: y = mysin(x), -pi

S = 0;
k = 0;
pričom abs(x.^(2*k+1)/faktoriál(2*k+1))>1,0e-10
S = S + (-1)^k*x.^(2*k+1)/faktoriál (2*k+1);
k = k + 1;
koniec

Upozorňujeme, že cyklus while na rozdiel od for nemá premennú cyklu, takže sme museli pred začiatkom cyklu priradiť nulu k a zvýšiť k vo vnútri cyklu o jednu.
Podmienka cyklu while môže obsahovať viac než len znak >. Na nastavenie podmienok pre vykonanie cyklu sú povolené aj ďalšie relačné operácie, ako je uvedené v tabuľke. jeden.

Tabuľka 1. Vzťahové operácie

Zložitejšie podmienky sú špecifikované pomocou logických operátorov. Napríklad podmienka spočíva v súčasnom splnení dvoch nerovníc a , a zapisuje sa pomocou logického operátora a

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

alebo ekvivalentne s &

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

Logické operátory a príklady ich použitia sú uvedené v tabuľke. 2.

Tabuľka 2. Logické operátory

Operátor

Zápis do MatLabu

Ekvivalentný zápis

Logika "A"

a (x< 3, k == 4)

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

logické "ALEBO"

Alebo (x==1,x==2)

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

záporné "NIE"

Pri výpočte súčtu nekonečného radu má zmysel obmedziť počet členov. Ak sa séria líši v dôsledku skutočnosti, že jej členy nemajú tendenciu k nule, potom podmienka pre malú hodnotu aktuálneho členu nemusí byť nikdy splnená a program sa zacyklí. Vykonajte súčet pridaním limitu k počtu výrazov v stave cyklu while súboru funkcie mysin:

while (abs(x.^(2*k+1)/faktoriál(2*k+1))>1,0e-10)&(k<=10000))

alebo v ekvivalentnej forme

while and(abs(x.^(2*k+1)/faktoriál(2*k+1))>1,0e-10), k<=10000)

Organizácia opakujúcich sa akcií vo forme cyklov robí program jednoduchým a zrozumiteľným, často je však potrebné vykonať jeden alebo druhý blok príkazov v závislosti od určitých podmienok, t.j. použite algoritmus vetvenia.

6.3. Podmienený príkaz if

Podmienený operátor ak umožňuje vytvoriť vetviaci algoritmus na vykonávanie príkazov, v ktorom za určitých podmienok funguje príslušný blok príkazov alebo príkazov MatLabu.

Príkaz if možno použiť vo svojej jednoduchej forme na vykonanie bloku príkazov, keď je splnená nejaká podmienka, alebo v konštrukcii if-elseif-else na písanie vetviacich algoritmov.
Nech je potrebné vyhodnotiť výraz . Povedzme, že robíte výpočty v reálnych číslach a chcete zobraziť upozornenie, že výsledkom je komplexné číslo. Pred výpočtom funkcie by ste mali skontrolovať hodnotu argumentu x a zobraziť varovanie v príkazovom okne, ak modul x neprekročí jednu. Tu je potrebné použiť podmienený príkaz if, ktorého aplikácia v najjednoduchšom prípade vyzerá takto:

ak podmienka
Príkazy MatLabu
koniec

Ak je podmienka splnená, potom sú implementované príkazy MatLab umiestnené medzi if a end a ak podmienka nie je splnená, prebehne prechod na príkazy umiestnené za end. Pri zaznamenávaní stavu sa používajú operácie uvedené v tabuľke 1. jeden.

Súbor funkcií, ktorý kontroluje hodnotu argumentu, je uvedený v nasledujúcom zozname. Varovný príkaz sa používa na zobrazenie varovania v príkazovom okne.

Výpis funkcie súboru Rfun, ktorý kontroluje hodnotu argumentu

funkcia f = Rfun(x)
% vypočíta sqrt(x^2-1)
% vytlačí varovanie, ak je výsledok zložitý
% použitia y = Rfun(x)

% kontroly argumentov
ak abs(x)<1
varovanie ("komplexný výsledok")
koniec
% funkčného hodnotenia
f = sqrt(x^2-1);

Teraz volanie Rfun s argumentom menším ako jeden vypíše varovanie do príkazového okna:

>> y = Rfun(0,2)
výsledok je komplexný
y=
0 + 0,97979589711327i

Funkčný súbor Rfun iba varuje, že jeho hodnota je zložitá a všetky výpočty s ním pokračujú. Ak komplexný výsledok znamená chybu výpočtu, potom by sa vykonávanie funkcie malo ukončiť pomocou príkazu error namiesto varovania.

6.4. Výpis pobočky if-elseif-else

Vo všeobecnosti aplikácia operátora vetvy if-elseif-else vyzerá takto:

ak podmienka 1
Príkazy MatLabu
iná podmienka 2
Príkazy MatLabu
iná podmienka 3
Príkazy MatLabu
. . . . . . . . . . .
iná podmienka N
Príkazy MatLabu
inak
Príkazy MatLabu
koniec

V závislosti od výkonu jedného alebo druhého N podmienky, zodpovedajúca vetva programu funguje, ak žiadna z N podmienky, potom sú implementované príkazy MatLab umiestnené za else. Po vykonaní ktorejkoľvek z vetiev sa príkaz ukončí. Pobočiek môže byť ľubovoľný počet alebo len dve. V prípade dvoch vetiev sa použije ukončenie else a preskočí sa elseif. Výpis musí vždy končiť koncom.
Príklad použitia príkazu if-elseif-else je uvedený v nasledujúcom zozname.

funkcia ifdem(a)
% príklad s použitím príkazu if-elseif-else

ak (a == 0)
varovanie ("a rovná sa nule")
inak ak a == 1
varovanie ("a rovná sa jednej")
inak a == 2
varovanie ("rovná sa dvom")
inak ak a >= 3
varovanie ("a, väčšie alebo rovné tri")
inak
varovanie ("a je menšie ako tri a nerovná sa nule, jedna, dva")
koniec

6.5. Prevádzkovateľ pobočky prepínač

Príkaz switch možno použiť na vykonanie viacnásobného výberu alebo vetvenia. . Je to alternatíva k príkazu if-elseif-else. Vo všeobecnosti aplikácia príkazu switch branch vyzerá takto:

switch switch_expression
hodnota prípadu 1
Príkazy MatLabu
hodnota prípadu 2
Príkazy MatLabu
. . . . . . . . . . .
hodnota prípadu N
Príkazy MatLabu
prípad (hodnota N+1, hodnota N+2, ...)
Príkazy MatLabu
. . . . . . . . . . . .
prípad (hodnota NM+1, hodnota NM+2,…)
inak
Príkazy MatLabu
koniec

V tomto príkaze sa najskôr vyhodnotí hodnota prepínača (môže to byť skalárna číselná hodnota alebo reťazec znakov). Táto hodnota sa potom porovnáva s hodnotami: hodnota 1, hodnota 2, ..., hodnota N, hodnota N+1, hodnota N+2, ..., hodnota NM+1, hodnota NM+2, ... ( ktorý môže byť aj číselný alebo reťazec) . Ak sa nájde zhoda, vykonajú sa príkazy MatLab za príslušným kľúčovým slovom case. V opačnom prípade sa vykonajú príkazy MatLab medzi kľúčovými slovami else a end.

Môže existovať ľubovoľný počet riadkov s kľúčovým slovom veľkými písmenami, ale musí tam byť jeden riadok s kľúčovým slovom inak.

Po vykonaní ktorejkoľvek z vetiev sa prepínač ukončí, zatiaľ čo hodnoty zadané v iných prípadoch sa nekontrolujú.

Použitie prepínača ilustruje nasledujúci príklad:

funkcia vypínania (x)
a = 10/5 + x
prepínač a
prípad-1
varovanie("a = -1")
prípad 0
varovanie("a = 0")
prípad 1
varovanie("a = 1")
prípad (2, 3, 4)
varovanie („a je 2 alebo 3 alebo 4“)
inak
varovanie ("a sa nerovná -1, 0, 1, 2, 3, 4")
koniec

>>x=-4
vypínač (x)
a =
1
varovanie: a = 1
>>x=1
vypínač (x)
a =
6
varovanie: a sa nerovná -1, 0, 1, 2, 3, 4

6.6. Vyhlásenie o prerušení slučky prestávka

Pri organizovaní cyklických výpočtov je potrebné dbať na to, aby sa vnútri cyklu nevyskytli žiadne chyby. Povedzme napríklad, že je dané pole x pozostávajúce z celých čísel a je potrebné vytvoriť nové pole y podľa pravidla y(i) = x(i+1)/x(i). Je zrejmé, že problém možno vyriešiť pomocou cyklu for. Ak sa však jeden z prvkov pôvodného poľa rovná nule, výsledkom delenia bude inf a následné výpočty môžu byť zbytočné. Tejto situácii sa dá predísť opustením slučky, ak je aktuálna hodnota x(i) nulová. Nasledujúci fragment programu demonštruje použitie príkazu break na prerušenie cyklu:

pre x = 1:20
z=x-8;
ak z==0
prestávka
koniec
y = x/z
koniec

Akonáhle sa premenná z stane 0, cyklus sa ukončí.

Príkaz break vám umožňuje predčasne prerušiť vykonávanie pre slučky a kým. Mimo týchto cyklov príkaz break nefunguje.

Ak sa príkaz break použije vo vnorenej slučke, potom sa ukončí iba z vnútornej slučky.

AT prostredie MATLAB existuje niekoľko režimov prevádzky. Najjednoduchšie je zadávať príkazy priamo do príkazového okna ( príkazové okno).

príkazové okno MATLABu

Ak to nie je viditeľné v rozhraní programu, otvorte ho. Príkazové okno nájdete cez ponuku Desktop príkazové okno.

Napríklad do tohto okna zadávame príkazy jeden po druhom

X =; y = štvorec (x); plot(y);

a stlačte kláves "Enter" ( Zadajte). Program okamžite vytvorí premennú X, vytvorí premennú Y a vypočíta jej hodnoty pre danú funkciu a následne zostaví jej graf.

Pomocou šípok na klávesnici nahor a nadol v príkazovom okne môžeme prepínať medzi zadanými príkazmi, okamžite ich meniť a stlačením Zadajte odoslať do prostredia MATLAB na vykonanie. Pomocou šípok doľava a doprava môžete prechádzať zadaným príkazom a upravovať ho. Ak je na konci príkazu bodkočiarka, výsledok sa vypočíta, ale nezobrazí sa v príkazovom okne; v opačnom prípade sa výsledok príkazu zobrazí okamžite. Pre akúkoľvek funkciu v prostredí MATLAB existuje podrobná vstavaná nápoveda. Napríklad získať pomoc s príkazom zápletka, vyberte tento príkaz, kliknite naň pravým tlačidlom myši a v kontextovej ponuke, ktorá sa otvorí, vyberte Pomoc pri výbere alebo stlačte kláves F1.

Získanie pomoci s príkazmi MATLABu

Pohodlne? Nepochybne. A čo je najdôležitejšie - veľmi rýchlo. Všetky tieto akcie trvajú niekoľko sekúnd.

Čo ak však potrebujete komplexnejšiu organizáciu tímov? Ak potrebujete cyklické vykonávanie niektorých príkazov? Ručné zadávanie príkazov po jednom a ich zdĺhavé hľadanie v histórii môže byť dosť únavné.

2 Práca s editorom v prostredí MATLAB

Ak chcete zjednodušiť život vedca, inžiniera alebo študenta, okno editora ( Editor). Otvorme okno editora cez ponuku Desktop Editor.

V okne editora môžete vytvárať nové premenné, vytvárať grafy, písať programy (skripty), vytvárať komponenty na výmenu s inými prostrediami, vytvárať aplikácie s používateľským rozhraním (GUI) a upravovať existujúce.

V súčasnosti máme záujem napísať program, ktorý obsahuje funkcie pre budúce opätovné použitie. Poďme teda k menu. súbor editor a vyberte Nový M súbor.


M-súbory v prostredí MATLAB sú súbory obsahujúce text programov (skriptov) alebo užívateľom definované funkcie.

Napíšeme si jednoduchú funkciu v editore draw_plot:

funkcia draw_plot(x)% Nastavte prvú funkciu: y = log(x); % Nakreslite prvý graf: subplot(1, 2, 1), plot(x, y); % Nastavte druhú funkciu: y = sqrt(x); % Nakreslite druhý graf: subplot(1, 2, 2), plot(x, y);

Vráťme sa do príkazového okna.

Môžete vymazať históriu príkazov, aby nás nepotrebné informácie nerozptyľovali. Ak to chcete urobiť, kliknite pravým tlačidlom myši na pole na zadanie príkazu a vyberte položku v kontextovej ponuke, ktorá sa otvorí. Vymazať príkazové okno.

Premenná X nám po predchádzajúcom experimente zostala, nezmenili sme ju ani nevymazali. Preto v príkazovom okne môžete okamžite zadať:

Draw_plot(x);

Uvidíte, že MATLAB prečíta našu funkciu zo súboru a vykoná ju, pričom nakreslí graf.


Ak MATLAB vydá správu pri spustení programu, Nedefinovaná funkcia alebo metóda "draw_plot" pre vstupné argumenty typu "double".(t.j. tzv neznáma funkcia), kliknite na tlačidlo so zelenou šípkou ( Bežať) alebo cez ponuku editora: Debug Spustite draw_plot.m. MATLAB oznámi, že adresár, v ktorom sa nachádza náš programový súbor (draw_plot.m), nie je pracovným adresárom. Kliknite na tlačidlo v dialógovom okne Pridať do Path, do balík MATLAB pridal adresár do pracovnej cesty a mohol použiť náš M-súbor. Potom by sa mal program spustiť normálne.

Prostredie MATLAB obsahuje tlmočník príkazov vo vysokoúrovňovom jazyku, grafický systém, rozširujúce balíky a je implementovaný v jazyku C. Všetka práca je organizovaná cez príkazové okno (Command Window), ktoré sa zobrazí po spustení programu matlab.exe. V priebehu práce sa dáta nachádzajú v pamäti (Workspace), vytvárajú sa grafické okná na zobrazenie kriviek, plôch a iných grafov.

Výpočty sa vykonávajú v príkazovom okne v dialógovom režime. Používateľ zadáva príkazy alebo spúšťa súbory s textami v jazyku MATLAB. Tlmočník spracováva vstup a vytvára výsledky: číselné a reťazcové údaje, varovania a chybové hlásenia. Vstupný riadok je označený >>. Príkazové okno zobrazuje čísla zadané z klávesnice, premenné a výsledky výpočtov. Názvy premenných musia začínať písmenom. Znamienko = zodpovedá operátoru priradenia. Stlačením klávesu Enter systém vyhodnotí výraz a zobrazí výsledok. Napíšte z klávesnice do vstupného riadku:

Stlačte kláves Enter, výsledok výpočtu sa zobrazí na obrazovke v oblasti zobrazenia:

Všetky hodnoty premenných vypočítané počas aktuálnej pracovnej relácie sú uložené v špeciálne vyhradenej oblasti pamäte počítača nazývanej pracovný priestor systému MATLAB (Workspace). Príkaz clc môže vymazať obsah príkazového okna, ale neovplyvní to obsah pracovného priestoru. Keď už nie je potrebné ukladať množstvo premenných v aktuálnej relácii, možno ich vymazať z pamäte počítača príkazom clear alebo clear(meno1, meno2, ...). Prvý príkaz odstráni všetky premenné z pamäte a druhý odstráni premenné s názvom názov1 a názov2. Príkaz who možno použiť na zobrazenie zoznamu všetkých premenných aktuálne zahrnutých v systémovom pracovnom priestore. Ak chcete zobraziť hodnotu ľubovoľnej premennej z aktuálneho pracovného priestoru systému, stačí zadať jej názov a stlačiť kláves Enter.

Po ukončení relácie so systémom MATLAB sa všetky predtým vypočítané premenné stratia. Na uloženie obsahu pracovného priestoru systému MATLAB do súboru na disk počítača je potrebné vykonať príkaz menu Súbor / Uložiť pracovný priestor ako .... Štandardne je prípona názvu súboru mat, takže takéto súbory sú zvyčajne nazývané MAT-súbory. Ak chcete načítať pracovný priestor predtým uložený na disku do pamäte počítača, vykonajte príkaz ponuky: Súbor / Načítať pracovný priestor ... .

Reálne čísla a dvojitý dátový typ

Systém MATLAB predstavuje na úrovni stroja všetky reálne čísla daný mantisou a exponentom, napríklad 2,85093E+11, kde písmeno E predstavuje základ mocniny rovnajúcej sa 10. Tento základný dátový typ sa nazýva double. MATLAB štandardne používa krátky formát pre výstup s pohyblivou rádovou čiarkou, ktorý zobrazuje iba štyri desatinné číslice za desatinnou čiarkou.

Zadajte z klávesnice príklad:

»res=5,345*2,868/3,14-99,455+1,274

Získajte výsledok výpočtu:

Ak sa požaduje úplné zobrazenie reálneho čísla res, zadajte príkaz z klávesnice:

stlačte kláves Enter a získajte ďalšie podrobnosti:

rozlíšenie = -93,29900636942675

Teraz budú všetky výsledky výpočtov zobrazené s takou vysokou presnosťou počas tejto relácie v prostredí systému MATLAB. Ak je to potrebné pred ukončením aktuálnej relácie, vráťte sa k starej presnosti vizuálna prezentácia reálne čísla v príkazovom okne, musíte zadať a vykonať (stlačením klávesu Enter) príkaz:

Celé čísla zobrazuje systém v príkazovom okne ako celé čísla.

Aritmetické operácie sa vykonávajú s reálnymi číslami a premennými typu double: sčítanie +, odčítanie -, násobenie *, delenie / a umocňovanie ^ . Priorita pri vykonávaní aritmetických operácií je normálna. Operátory s rovnakou prioritou sa vykonávajú v poradí zľava doprava, ale zátvorky môžu toto poradie zmeniť.

Ak nepotrebujete vidieť výsledok výpočtu nejakého výrazu v príkazovom okne, tak na koniec zadaného výrazu dajte bodkočiarku a až potom stlačte Enter.

Systém MATLAB obsahuje všetky základné elementárne funkcie pre výpočty s reálnymi číslami. Každá funkcia je charakterizovaná svojim názvom, zoznamom vstupných argumentov (sú uvedené oddelené čiarkami a sú v zátvorkách za názvom funkcie) a vypočítanou (vrátenou) hodnotou. Zoznam všetkých základných matematických funkcií dostupných v systéme je možné získať pomocou príkazu help elfun. Príloha 1 uvádza štandardné funkcie skutočného argumentu.

Vyhodnoťte výraz zahŕňajúci výpočet funkcie arcsínus:

Uistite sa, že získate nasledujúci výsledok:

zodpovedajúce číslu „pi“. V systéme MATLAB existuje špeciálny zápis na výpočet čísla „pi“: pi. (Zoznam systémových premenných MATLABu je v prílohe 2).

MATLAB má aj logické funkcie, funkcie súvisiace s celočíselnou aritmetikou (zaokrúhľovanie na najbližšie celé číslo: round, skrátenie zlomkovej časti čísla: fix). Existuje aj funkcia mod - zvyšok delenia, berúc do úvahy znamienko, znamienko - znamienko čísla, lcm - najmenší spoločný násobok, perms - výpočet počtu permutácií a nchoosek - počet kombinácií a veľa ďalších. Mnohé z funkcií majú doménu definície odlišnú od množiny všetkých reálnych čísel.

Okrem aritmetických operácií na operandoch dvojitého typu sa vykonávajú aj relačné a logické operácie. Relačné operácie porovnávajú veľkosť dvoch operandov. Tieto operácie sú napísané s nasledujúcimi znakmi alebo kombináciami znakov (tabuľka 1):

stôl 1


Ak je relačný operátor pravdivý, jeho hodnota je 1, a ak je nepravdivý, je 0. Relačné operátory majú nižšiu prioritu ako aritmetické operátory.

Napíšte výraz pomocou relačných operácií z klávesnice a vypočítajte

»a=1; b = 2; c=3;

» res=(a

Dostanete nasledujúci výsledok:

Logické operácie s reálnymi číslami sú označené znakmi uvedenými v tabuľke 2:

tabuľka 2


& | ~
A ALEBO NIE

Prvé dve z týchto operácií sú binárne (dvojoperandové) a posledná je unárna (jednooperandová). Logické operátory považujú svoje operandy za „pravdivé“ (nerovnajúce sa nule) alebo „nepravdivé“ (rovnajúce sa nule). Ak sú oba operandy operácie "AND" pravdivé (nerovnajú sa nule), potom je výsledok tejto operácie 1 ("pravda"); vo všetkých ostatných prípadoch operácia "AND" vytvorí hodnotu 0 ("false"). Operácia OR vytvorí 0 (false) iba vtedy, ak sú oba operandy nepravdivé (rovnajúce sa nule). Operácia „NOT“ invertuje „false“ na „true“. Logické operácie majú najnižšiu prioritu.

Komplexné čísla a komplexné funkcie

Komplexné premenné, rovnako ako skutočné, majú automaticky dvojitý typ a nevyžadujú žiadny predbežný popis. Písmená i alebo j sú vyhradené pre imaginárnu jednotku. V prípade, že koeficient pred imaginárnou jednotkou nie je číslo, ale premenná, treba medzi nimi použiť znamienko násobenia. Komplexné čísla teda možno zapísať takto:

» 2+3i; -6,789 + 0,834e-2*i; 4-2j; x+y*i;

Takmer všetky elementárne funkcie umožňujú výpočty so zložitými argumentmi. Vyhodnoťte výraz:

» res=sin(2+3i)*atan(4i)/(1-6i)

Výsledkom bude:

1.8009 - 1.91901

Nasledujúce funkcie sú špeciálne navrhnuté pre prácu s komplexnými číslami: abs (absolútna hodnota komplexného čísla), conj (komplexné združené číslo), imag (imaginárna časť komplexného čísla), real (reálna časť komplexného čísla), uhol ( argument komplexného čísla), isreal („pravda“, ak je číslo skutočné). Funkcie komplexnej premennej sú uvedené v prílohe 1.

Čo sa týka aritmetických operácií, nič nové pre komplexné čísla (v porovnaní s reálnymi) nemožno povedať. To isté platí pre relačné operácie „rovná sa“ a „nerovná sa“. Zvyšok relačných operácií vytvára výsledok založený iba na skutočných častiach týchto operandov.

Zadajte výraz, získajte výsledok a vysvetlite ho:

»c=2+3i; d = 2i; »c>d

Booleovské operácie považujú operandy za nepravdivé, ak sú nulové. Ak sa aspoň jedna časť komplexného operandu (reálna alebo imaginárna) nerovná nule, potom sa takýto operand považuje za pravdivý.

Číselné polia

Na vytvorenie jednorozmerného poľa môžete použiť operáciu zreťazenia, ktorá je označená hranatými zátvorkami. Prvky poľa sú umiestnené medzi zátvorkami a navzájom oddelené medzerou alebo čiarkou:

»al=; d=;

Ak chcete získať prístup k jednotlivému prvku poľa, musíte použiť operáciu indexovania, pre ktorú za názvom prvku zadajte index prvku v zátvorkách.

Prvky už vytvoreného poľa môžete zmeniť použitím operácií indexovania a priradenia. Napríklad zadaním:

zmeníme tretí prvok poľa. Alebo po úvode:

»al(2)=(al(1)+al(3))/2;

druhý prvok poľa sa bude rovnať aritmetickému priemeru prvého a tretieho prvku. Zápis neexistujúceho prvku je dokonale platný – znamená to pridanie nového prvku do už existujúceho poľa:

Aplikovaním funkcie dĺžky na pole a1 po vykonaní tejto operácie zistíme, že počet prvkov v poli sa zvýšil na štyri:

Rovnakú akciu - "predĺženie poľa a1" - možno vykonať pomocou operácie zreťazenia:

Pole môžete definovať tak, že uvediete všetky jeho prvky jednotlivo:

»a3(1)=67; a3(2) = 7,8; a3(3) = 0,017;

Tento spôsob tvorby však nie je efektívny. Ďalší spôsob vytvorenia jednorozmerného poľa je založený na použití špeciálnej funkcie, označenej dvojbodkou (operácia vytvárania rozsahu číselných hodnôt). Za dvojbodkou zadajte prvé číslo rozsahu, krok (prírastok) a konečné číslo rozsahu. Napríklad:

»diap=3,7:0,3:8,974;

Ak nepotrebujete zobraziť celé výsledné pole, potom na konci množiny (za koncovým číslom rozsahu) by ste mali zadať bodkočiarku. Ak chcete zistiť, koľko prvkov je v poli, zavolajte funkciu length(názov poľa).

Na vytvorenie dvojrozmerného poľa (matice) môžete použiť aj operáciu zreťazenia. Prvky poľa sa píšu jeden za druhým podľa ich umiestnenia v riadkoch, ako oddeľovač riadkov sa používa bodkočiarka.

Zadajte z klávesnice:

»a=

Stlačte ENTER, dostaneme:

Výsledná matica a veľkosti 3x2 (prvá označuje počet riadkov, druhá - počet stĺpcov) môže byť tiež vytvorená vertikálnym zreťazením riadkových vektorov:

»a=[;;];

alebo horizontálne zreťazenie stĺpcových vektorov:

» a=[,];

Štruktúru vytvorených polí možno nájsť pomocou príkazu whos(názov poľa), rozmer poľa pomocou funkcie ndims a veľkosť poľa podľa veľkosti.

2D polia možno zadať aj pomocou operácie indexovania, pričom jeho prvky sa zapíšu samostatne. Číslo riadku a stĺpca, na priesečníku ktorého sa nachádza zadaný prvok poľa, sú oddelené čiarkami zátvorkách. Napríklad:

»a(1,1)=1; a(1,2)=2; a(2,1)=3; »a(2,2)=4; a(3,1)=5; a(3,2)=6;

Oveľa efektívnejšie však bude, ak pred začatím zapisovania prvkov poľa vytvoríme pole požadovanej veľkosti pomocou funkcií jednotiek (m, n) alebo núl (m, n), vyplnených jednotkami alebo nulami (m je počet riadkov, n je počet stĺpcov). Pri volaní týchto funkcií je pamäť vopred pridelená pre danú veľkosť poľa, po ktorej postupné predpisovanie prvkov s požadovanými hodnotami nevyžaduje prebudovanie pamäťovej štruktúry pridelenej pre pole. Tieto funkcie je možné použiť aj pri špecifikovaní polí iných rozmerov.

Ak po vytvorení poľa X potrebujete zmeniť jeho veľkosť bez zmeny prvkov poľa, môžete použiť funkciu reshape (X, M, N), kde M a N sú nové veľkosti poľa X

Činnosť tejto funkcie je možné vysvetliť len na základe spôsobu, akým systém MATLAB ukladá prvky polí do pamäte počítača. Ukladá ich v súvislej oblasti pamäte v poradí stĺpcov: prvky prvého stĺpca sú umiestnené ako prvé, potom prvky druhého stĺpca atď. Okrem skutočných údajov (prvkov poľa) sú v pamäti počítača uložené aj riadiace informácie: typ poľa (napríklad dvojité), rozmer a veľkosť poľa a ďalšie servisné informácie. Tieto informácie stačia na určenie hraníc stĺpcov. Z toho vyplýva, že na pretvorenie matice pomocou funkcie pretvarovania stačí zmeniť iba servisné informácie a nedotýkať sa vlastných údajov.

Riadky matice s jej stĺpcami môžete zameniť pomocou operácie transportu, ktorá je označená znamienkom." (bodka a apostrof). Napríklad

»A=;

Operácia " (apostrof) vykonáva transpozíciu pre reálne matice a transpozíciu so súčasnou komplexnou konjugáciou pre komplexné matice.

Objekty, s ktorými MATLAB pracuje, sú polia. Aj jedno dané číslo v internej reprezentácii MATLABu je pole pozostávajúce z jedného prvku. MATLAB vám umožňuje robiť výpočty s obrovskými poľami čísel rovnako jednoducho ako s jednotlivými číslami, a to je jedna z najvýraznejších a najdôležitejších výhod systému MATLAB oproti iným softvérovým balíkom zameraným na výpočty a programovanie. Okrem pamäte potrebnej na ukladanie číselných prvkov (8 bajtov každý pre reálne čísla a 16 bajtov pre komplexné čísla), MATLAB pri vytváraní polí automaticky alokuje pamäť pre riadiace informácie.

Array výpočty

V tradičných programovacích jazykoch sa výpočty polí vykonávajú prvok po prvku v tom zmysle, že každá jednotlivá operácia musí byť naprogramovaná samostatný prvok pole. V jazyku M systému MATLAB sú povolené výkonné skupinové operácie na celom poli naraz. Práve skupinové operácie systému MATLAB umožňujú mimoriadne kompaktne nastaviť výrazy, pri ktorých výpočte sa skutočne vykoná gigantické množstvo práce.

Operácie sčítania a odčítania matice sú označené štandardnými znamienkami + a -.

Definujte matice A a B a vykonajte operáciu sčítania matíc:

»A=; B=;

Ak sa použijú operandy rôzne veľkosti, vydá sa chybové hlásenie, pokiaľ jeden z operandov nie je skalárny. Pri vykonávaní operácie A + skalár (A - matica) systém rozšíri skalár na pole veľkosti A, ktoré sa ďalej pridáva prvok po prvku k A.

Na elementárne násobenie a elementárne delenie polí rovnakej veľkosti, ako aj elementárne umocňovanie polí sa používajú operácie označené kombináciami dvoch symbolov: .* , ./ a .^. Použitie kombinácií symbolov sa vysvetľuje skutočnosťou, že symboly * a / označujú špeciálne operácie lineárnej algebry na vektoroch a maticách.

Okrem operácie ./, nazývanej operácia delenia po prvku vpravo, existuje aj operácia delenia po prvku vľavo. \. Rozdiel medzi týmito operáciami: výraz A./B vedie k matici s prvkami A (k, m) / B (k, m) a výraz A. \ B vedie k matici s prvkami B (k, m ) / A (k, m).

Znamienko * sa priraďuje násobeniu matíc a vektorov v zmysle lineárnej algebry.

Znamienko \ je pevné v systéme MATLAB na riešenie pomerne zložitého problému lineárnej algebry - nájdenie koreňov systému lineárne rovnice. Napríklad, ak potrebujete vyriešiť sústavu lineárnych rovníc Ay = b, kde A je daná štvorcová matica veľkosti N´N, b je daný stĺpcový vektor dĺžky N, potom na nájdenie neznámeho stĺpcového vektora y stačí na výpočet výrazu A \ b (toto je ekvivalentné operácii : A -1 B).

Typické problémy analytickej geometrie v priestore, súvisiace s hľadaním dĺžok vektorov a uhlov medzi nimi, s výpočtom skalárnych a vektorových súčinov, sú jednoducho riešené rôznymi prostriedkami systému MATLAB. Napríklad na nájdenie krížového súčinu vektorov je špeciálna funkcia kríž určená napríklad:

»u=; v=;

Skalárny súčin vektorov možno vypočítať pomocou všeobecnej funkcie sum, ktorá vypočíta súčet všetkých prvkov vektorov (pre matice táto funkcia vypočíta súčty pre všetky stĺpce). Skalárny súčin, ako je známe, sa rovná súčtu súčinov zodpovedajúcich súradníc (prvkov) vektorov. Takže výraz je: » sum(u.*v)

vypočíta bodový súčin dvoch vektorov u a v. Bodový súčin možno vypočítať aj ako: u*v".

Dĺžka vektora sa vypočíta pomocou bodového súčinu a funkcie extraktu odmocnina, napríklad:

» sqrt(súčet(u.*u))

Relačné a logické operácie, ktoré sa predtým uvažovali pre skaláre, sa v prípade polí vykonávajú prvok po prvku. Oba operandy musia mať rovnakú veľkosť a operácia vráti výsledok rovnakej veľkosti. V prípade, že jeden z operandov je skalár, vykoná sa jeho predbežná expanzia, ktorej význam už bol vysvetlený na príklade aritmetických operácií.

Medzi funkciami, ktoré generujú matice s danými vlastnosťami, sa často používa funkcia oko, ktorý vytvára jednotkové štvorcové matice, ako aj v praxi široko používanú funkciu rand, ktorá generuje pole s náhodnými prvkami rovnomerne rozloženými v intervale od 0 do 1. Napríklad výraz

generuje pole 3x3 náhodných čísel s prvkami rovnomerne rozloženými v intervale od 0 do 1.

Ak zavoláte túto funkciu s dvoma argumentmi, napríklad R=rand(2,3), dostanete maticu R 2x3 náhodných prvkov. Keď sa rand volá s tromi alebo viacerými skalárnymi argumentmi, vytvoria sa viacrozmerné polia náhodných čísel.

Determinant štvorcovej matice sa vypočíta pomocou funkcie det. Medzi funkciami, ktoré vykonávajú najjednoduchšie výpočty na poliach, sa okrem súčtovej funkcie diskutovanej vyššie používa aj funkcia prod, ktorá je vo všetkom podobná súčtovej funkcii, len nevypočítava súčet prvkov, ale ich súčin. Funkcie max a min vyhľadávajú maximálne a minimálne prvky polí. Pre vektory vracajú jednu číselnú hodnotu a pre matice generujú množinu extrémnych prvkov vypočítaných pre každý stĺpec. Funkcia triedenia triedi prvky jednorozmerných polí vo vzostupnom poradí a pre matice triedi pre každý stĺpec samostatne.

MATLAB má jedinečnú schopnosť vykonávať skupinové výpočty na poliach pomocou obvyklých matematické funkcie, ktoré v tradičných programovacích jazykoch pracujú iba so skalárnymi argumentmi. Výsledkom sú mimoriadne kompaktné záznamy, vhodné na písanie v interaktívnom režime práce príkazové okno V systéme MATLAB je možné vykonávať veľké množstvo výpočtov. Napríklad len dva krátke výrazy

»x=0:0,01:pi/2; y=sin(x);

vypočítajte hodnoty funkcie sin v 158 bodoch naraz a vytvorte dva vektory x a y so 158 prvkami.

Funkcie vykresľovania

Grafické možnosti systému MATLAB sú výkonné a rozmanité. Poďme preskúmať najľahšie použiteľné funkcie (grafika na vysokej úrovni).

Vytvorte dva vektory x a y:

» x = 0:0,01:2; y=sin(x);

Zavolajte funkciu:

a na obrazovke sa vám zobrazí graf funkcie (obr. 1).

Ryža. 1. Graf funkcie y=sin(x)

MATLAB ukazuje grafické objekty v špeciálnych grafických oknách so slovom Obrázok v názve. Bez odstránenia prvého grafického okna z obrazovky zadajte výrazy z klávesnice

a získajte nový graf funkcie v rovnakom grafickom okne (v tomto prípade staré súradnicové osi a graf zmiznú - to sa dá dosiahnuť aj príkazom clf, príkaz cla odstráni iba graf, čím sa súradnicové osi ich štandard sa pohybuje od 0 do 1).

Ak potrebujete nakresliť druhý graf "navrch prvého grafu", potom pred sekundárnym hovorom grafická funkcia plot, musíte vykonať príkaz hold on, ktorý je určený na podržanie aktuálneho grafického okna:

» x = 0:0,01:2; y=sin(x);

Takmer to isté sa stane (obr. 2), ak zadáte:

» x = 0:0,01:2; y=sin(x); z=cos(x);

»zápletka(x,y,x,z)

Ryža. 2. Grafy funkcií y=sin(x), z=cos(x), zabudované v jednom grafickom okne

Ak potrebujete zobraziť niekoľko grafov súčasne, aby sa navzájom nerušili, môžete to urobiť dvoma spôsobmi. Prvým riešením je vykresliť ich v rôznych grafických oknách. Ak to chcete urobiť, pred opätovným volaním funkcie plot zadajte príkaz obrázok, ktorý vytvorí nové grafické okno a prinúti všetky nasledujúce funkcie vykresľovania, aby ich tam zobrazili.

Druhým riešením pre zobrazenie viacerých grafov bez konfliktných rozsahov osí je použitie funkcie subplot. Táto funkcia umožňuje rozdeliť oblasť výstupu grafických informácií na niekoľko podoblastí, v každej z nich môžete zobraziť grafy rôznych funkcií.

Napríklad pre predtým vykonané výpočty s funkcie hriechu a cos vykreslí grafy týchto dvoch funkcií v prvej subdoméne a funkciu exp(x) vykreslí v druhej subdoméne toho istého grafického okna (obr. 3):

» subplot(1,2,1); plot(x,y,x,z)

» subplot(1,2,2); plot(x,w)

Ryža. 3. Grafy funkcií y=sin(x), z=cos(x) a w=exp(x), zabudované v dvoch podoblastiach jedného grafického okna

Rozsahy premenných na súradnicových osiach týchto subdomén sú navzájom nezávislé. Funkcia subplot má tri číselné argumenty, z ktorých prvý sa rovná počtu riadkov čiastkových grafov, druhý sa rovná počtu stĺpcov čiastkových grafov a tretí argument je číslo čiastkových grafov (počet sa počíta pozdĺž riadky, po vyčerpaní sa presunú do nového riadku). Akciu funkcie subplot môžete odstrániť príkazom:

» podkres (1,1,1)

Ak sú pre jeden graf rozsahy premenných pozdĺž jednej alebo oboch súradnicových osí príliš veľké, môžete použiť funkcie vykresľovania v logaritmickej mierke. Na to sú určené funkcie semilogx, semilogy a loglog.

Funkciu môžete vykresliť v polárnych súradniciach (obr. 4) pomocou funkcie polárnej grafiky.

» phi=0:0,01:2*pi; r=sin(3*phi);

Ryža. 4. Graf funkcie r=sin(3*phi) v polárnych súradniciach

Zvážte pridané vlastnosti, súvisiaci so správou vzhľadu grafov – nastavenie farby a štýlu čiar, ako aj umiestňovanie rôznych štítkov v rámci grafického okna. Napríklad príkazy

»x=0:0,1:3; y=sin(x);

» plot(x,y,"r-",x,y, "ko")

umožňujú, aby graf vyzeral ako červená plná čiara (obr. 5), na ktorej sú v diskrétnych vypočítaných bodoch umiestnené čierne kruhy. Tu funkcia plot vykresľuje rovnakú funkciu dvakrát, ale v dvoch rôznych štýloch. Prvý z týchto štýlov je označený „r-“, čo znamená čiaru nakreslenú červenou farbou (písmeno r) a ťah znamená plnú čiaru. Druhý štýl označený ako „ko“ znamená kreslenie čiernych (písmeno k) kruhov (písmeno o) namiesto vypočítaných bodov.

Ryža. 5. Vykreslenie funkcie y=sin(x) v dvoch rôznych štýloch

Vo všeobecnosti funkcia plot (x1, y1, s1, x2, y2, s2, ...) umožňuje kombinovať niekoľko grafov funkcií y1(x1), y2(x2), ... v jednom grafickom okne kreslením so štýlmi s1, s2, ... atď.

Štýly s1, s2,... sú špecifikované ako množina troch znakových značiek uzavretých v jednoduchých úvodzovkách (apostrofoch). Jedna z týchto značiek určuje typ čiary (tabuľka 3). Ďalšia značka nastavuje farbu (tabuľka 4). Posledná značka nastavuje typ „bodiek“, ktoré sa majú dať dole (tabuľka 5). Nemôžete zadať všetky tri značky. Potom sa použijú predvolené značky. Poradie, v ktorom sú markery špecifikované, nie je podstatné, t.j. "r+-" a "-+r" poskytujú rovnaký výsledok.

Tabuľka 3. Značky typu čiar

Tabuľka 4 Značky, ktoré nastavujú farbu čiary

Tabuľka 5 Značky definujúce typ bodu

Ak umiestnite značku na typ bodu v štýlovej čiare, ale nepridáte značku na typ čiary, zobrazia sa iba vypočítané body a nie sú spojené súvislou čiarou.


Systém MATLAB nastavuje limity na horizontálnej osi na hodnoty zadané používateľom pre nezávislú premennú. Pre závislú premennú na zvislej osi MATLAB nezávisle vypočíta rozsah funkčných hodnôt. Ak potrebujete opustiť túto funkciu škálovania pri vykresľovaní grafov v systéme MATLAB, potom musíte explicitne zaviesť svoje vlastné limity na zmenu premenných pozdĺž súradnicových osí. To sa vykonáva pomocou funkcie axis().

Funkcie xlabel, ylabel, title a text slúžia na zapísanie rôznych nápisov na výsledný obrázok. Funkcia xlabel vytvorí označenie pre vodorovnú os, funkcia ylabel aj pre zvislú os (tieto označenia sú navyše orientované pozdĺž súradnicových osí). Ak chcete umiestniť nápis na ľubovoľné miesto na obrázku, použite funkciu textu. Všeobecný názov pre graf je vytvorený funkciou title. Okrem toho pomocou príkazu grid on môžete použiť mriežku merania na celú oblasť vykresľovania. Napríklad (obr. 6):

»x=0:0,1:3; y=sin(x);

» plot(x,y,"r-",x,y,"ko")

»title("Graf funkcie sin(x)");

» xlabel("xcoordinate"); ylabel("sin(x)");

» text(2.1, 0.9, "\leftarrowsin(x)"); mriežka zapnutá

Označenie s textovou funkciou je umiestnené od bodu so súradnicami určenými prvými dvoma argumentmi. Štandardne sú súradnice zadané v rovnakých jednotkách ako súradnice zadané na horizontálnej a vertikálnej osi. Špeciálne riadiace znaky sa zadávajú do textu za znakom \ (obrátená lomka).

3D grafika

Každý bod v priestore je charakterizovaný tromi súradnicami. Množina bodov patriacich nejakej priamke v priestore musí byť špecifikovaná ako tri vektory, z ktorých prvý obsahuje prvé súradnice týchto bodov, druhý vektor - ich druhé súradnice, tretí vektor - tretie súradnice. Potom je možné tieto tri vektory priviesť na vstup funkcie plot3, ktorá premietne príslušnú trojrozmernú čiaru na rovinu a zostaví výsledný obraz (obr. 7). Zadajte z klávesnice:

»t=0:pi/50:10*pi; x=sin(t);

» y=cos(t); plot3(x,y,t); mriežka zapnutá

Ryža. 7. Zákres špirály zostavenej pomocou funkcie plot3

Rovnakú funkciu plot3 možno použiť aj na zobrazenie plôch v priestore, ak, samozrejme, nenakreslíte jednu čiaru, ale veľa. Napíšte z klávesnice:

»u=-2:0,1:2; v=-1:0,1:1;

»=meshgrid(u,v);

» z=exp(-X.^2-Y.^2);

Získajte 3D obraz funkčný graf (obr. 8).

Funkcia plot3 nakreslí graf ako množinu čiar v priestore, z ktorých každá je rezom trojrozmerného povrchu rovinami rovnobežnými s rovinou yOz. Navyše najjednoduchšia funkcia Systém MATLAB má množstvo ďalších funkcií, ktoré umožňujú dosiahnuť väčší realizmus pri zobrazovaní trojrozmerných grafov.

Ryža. 8. Zákres povrchu v priestore, vytvorený pomocou funkcie plot3


Skripty a m-súbory.

Pre jednoduché operácie je pohodlný interaktívny režim, ale ak je potrebné vykonávať výpočty opakovane alebo je potrebné implementovať zložité algoritmy, mali by ste použiť m-súbory MATLABu(prípona súboru pozostáva z jedného písmena m). script-m-file (alebo skript) - textový súbor obsahujúci inštrukcie MATLABu, ktorý sa má vykonať v automatickom dávkovom režime. Je pohodlnejšie vytvoriť takýto súbor pomocou editora systému MATLAB. Volá sa z príkazového okna systému MATLAB príkazom ponuky Súbor/Nový/M-súbor (alebo tlačidlom úplne vľavo na paneli nástrojov, ktoré zobrazuje prázdny biely list papiera). Príkazy napísané v súboroch skriptov sa vykonajú, ak do príkazového riadku zadáte názov súboru skriptu (bez prípony). Premenné definované v príkazovom okne a premenné definované v skriptoch tvoria jeden pracovný priestor systému MATLAB a premenné definované v skriptoch sú globálne, ich hodnoty nahradia hodnoty tých istých premenných, ktoré boli použité pred volaním tohto súbor skriptu.

Po vytvorení textu skriptu je potrebné ho uložiť na disk. Cesta k adresáru so súborom musí byť známa systému MATLAB. Príkaz File/Set Path vyvolá dialógové okno Directory Path Viewer. Ak chcete pridať nový adresár do zoznamu prístupových ciest, vykonajte príkaz ponuky Cesta/Pridať do cesty.

Väčšina vývojárov má problém predstaviť si jeho syntax a funkcie. Ide o to, že jazyk priamo súvisí s populárnym softvérovým produktom, ktorého náklady môžu dosiahnuť úžasné hodnoty. Hlavná otázka teda znie: je samotný jazyk Matlab dobrý? A môže to byť pre vás užitočné.

Použitie

Začnime nie štandardným odbočením do histórie a diskusiou o výhodách a nevýhodách jazyka, ale softvérovým prostredím MATLAB / Simulink – jediným miestom, kde môže byť hrdina tohto textu užitočný. Len si to predstav grafický editor, v ktorej môžete realizovať akýkoľvek svoj nápad bez toho, aby ste mali za sebou niekoľkoročnú prax a príslušné vzdelanie. A keď vytvoríte schému interakcie medzi nástrojmi, môžete získať vysoko kvalitný skript na opakované použitie.

MATLAB je práve takým editorom v dátovom svete. Rozsah jeho použitia je nekonečne široký: IoT, financie, medicína, vesmír, automatizácia, robotika, bezdrôtové systémy a oveľa, oveľa viac. Vo všeobecnosti takmer neobmedzené možnosti zberu a vizualizácie dát, ako aj prognózovania, ale len v prípade, že si môžete zakúpiť príslušný balík.

Čo sa týka ceny, Horná hranica takmer žiadny, ale ten nižší je v oblasti 99 dolárov. Na to, aby ste za relatívne málo peňazí uchmatli taký výkonný produkt, musíte byť vysokoškolák. A samozrejme dostanete dosť obmedzený produkt.

Jazykové funkcie

Jazyk MATLAB je nástroj, ktorý poskytuje interakciu operátora (často ani programátora) so všetkými dostupnými možnosťami analýzy, zberu a prezentácie dát. Má zjavné výhody a nevýhody jazyka, ktorý žije v uzavretom ekosystéme.

nedostatky:

    Pomalé a preplnené operátormi, príkazmi, funkciami, jazykom, ktorého hlavným účelom je zlepšiť zrakové vnímanie.

    Vysoko sústredené. Neexistuje žiadna iná softvérová platforma, kde by bol MATLAB užitočný.

    Drahý softvér. Ak nie ste študent - buď sa pripravte na vyprázdnenie vreciek alebo prekročenie hranice zákona. A aj keď študent - cena je slušná.

    Nízky dopyt. Napriek veľkému záujmu o MATLAB takmer vo všetkých oblastiach ho reálne a legálne využíva len málokto.

Výhody:

    Jazyk sa ľahko učí, má jednoduchú a jasnú syntax.

    Obrovské príležitosti. Ale to je skôr výhoda celého produktu ako celku.

    Časté aktualizácie sa spravidla vyskytujú aspoň niekoľkokrát do roka k viditeľným pozitívnym transformáciám.

    Softvérové ​​prostredie umožňuje previesť ho na „rýchly“ kód v C, C++.

cieľové publikum

Samozrejme, nie každý potrebuje MATLAB. Napriek najširšiemu záberu je ťažké si predstaviť, že by bežný vývojár aplikácií potreboval znalosť tohto jazyka. MATLAB je mimoriadne užitočný v oblastiach, ktoré vyžadujú špeciálnu spoľahlivosť pri spracovaní údajov, ako sú systémy autopilota v automobiloch alebo palubné elektronické systémy lietadiel.

Teda ak nie ste veľmi programátor, no tak či onak je vaša profesia spojená s potrebou softvérové ​​spracovanie dáta, potom môže produkt MATLAB/Simulink s príslušným jazykom výrazne zjednodušiť vaše každodenné úlohy.

Literatúra

Recenziu jazyka dopĺňame ako vždy zoznamom náučnej literatúry. Samo o sebe medzi nimi nenájdete knihy výlučne o jazyku, ale to len uľahčí vnímanie jazyka:

Máte skúsenosti s MATLABOM? a ktoré?

Pre tých, ktorí sa chcú stať programátormi - .