Kako podesiti pametne telefone i računare. Informativni portal

Pozivanje funkcije u matlabu. MATLAB kao programski jezik

Oni koji se bave višom matematikom vrlo dobro znaju sa kakvim matematičkim „čudovištima“ ponekad moraju da se suoče. Na primjer, možete potrošiti puno vremena, mentalne energije i nervnih ćelija koje se ne oporavljaju na izračunavanje nekog divovskog trostrukog integrala. Naravno, vrlo je zanimljivo osporiti integral i uzeti ga. Ali šta ako umjesto toga integral prijeti da vas odnese? Ili, još gore, je kubni trinom izmakao kontroli i poludio? Ne biste ovo poželeli svom neprijatelju.


Ranije su bile samo dvije opcije: odustati od svega i otići u šetnju ili ući u višesatnu bitku sa integralom. Pa, nekima je trebalo mnogo sati, drugima mnogo minuta – ko je kako učio. Ali to nije poenta. Dvadeseto stoljeće i neumoljivi napredak nude nam treći put, naime, omogućavaju nam da uzmemo najviše složeni integral"brzo." Isto se odnosi i na rješavanje svih vrsta jednadžbi, crtanje grafova funkcija u obliku kubnih hiperboloida, itd.

Za takve izvanredne, ali periodično nastale situacije među učenicima postoji moćno matematičko oružje. Za one koji još ne znaju, upoznajte MATLAB softverski paket.

Matlab će riješiti jednačinu, aproksimirati je i izgraditi graf funkcije. Da li razumete šta ovo znači, prijatelji?

To znači da je to jedan od najmoćnijih paketa za obradu podataka koji su danas dostupni. Ime znači MatrixLaboratorija. Matrix Laboratorija, ako na ruskom . Mogućnosti programa pokrivaju gotovo sve oblasti matematike. Dakle, koristeći Matlab, možete:

  • Izvoditi sve vrste operacija na matricama, rješavati linearne jednadžbe, raditi s vektorima;
  • Izračunavati korijene polinoma bilo kojeg stepena, izvoditi operacije nad polinomima, diferencirati, ekstrapolirati i interpolirati krive, graditi grafove bilo koje funkcije;
  • Provođenje statističke analize podataka korištenjem digitalnog filtriranja, statističke regresije;
  • Odlučite se diferencijalne jednadžbe. U parcijalnim derivacijama, linearnim, nelinearnim, sa graničnim uslovima - nema veze, Matlab će sve riješiti;
  • Izvršite cjelobrojne aritmetičke operacije.

Uz sve ovo, MATLAB mogućnosti vam omogućavaju da vizualizirate podatke sve do same konstrukcije 3D grafovi i kreiranje animiranih videa.

Naš opis Matlaba, naravno, daleko je od potpunog. Pored mogućnosti i funkcija koje pruža proizvođač, postoji ogroman broj Matlab alata koje su jednostavno napisali entuzijasti ili druge kompanije.

MATLAB kao programski jezik


To je takođe programski jezik koji se koristi direktno pri radu sa programom. Nećemo ulaziti u detalje, recimo samo da programi napisani u MATLAB-u dolaze u dvije vrste: funkcije i skripte.


Glavni radni fajl programa je M-fajl. To je beskrajno tekstualnu datoteku, iu njemu se odvija stvarno programiranje proračuna. Inače, neka vas ova riječ ne uplaši – da biste radili u MATLAB-u, ne morate biti profesionalni programer.

M-fajlovi se dijele na

  • M-scenariji. M skripta je najjednostavniji tip M datoteke i nema ulazne ili izlazne argumente. Ova datoteka se koristi za automatizaciju ponovljenih proračuna.
  • M-funkcije. M-funkcije su M-datoteke koje prihvataju ulazne i izlazne argumente.

Da bismo jasno pokazali kako se rad odvija u MATLAB-u, u nastavku dajemo primjer kreiranja funkcije u Matlabu. Ova funkcija izračunat će prosječnu vrijednost vektora.
f funkcija y = prosjek(x)
% AVERAGE Prosječna vrijednost vektorskih elemenata.
% AVERAGE(X), gdje je X vektor. Izračunava prosjek elemenata vektora.
% Ako ulazni argument nije vektor, generira se greška.
= veličina(x);
ako (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
error("Ulazni niz mora biti vektor')
kraj
y = zbir(x)/dužina(x); % Stvarni izračun

Red definicije funkcije govori MATLAB-u da je datoteka M funkcija i također specificira listu ulaznih argumenata. Dakle, linija definicije za prosječnu funkciju izgleda ovako:
funkcija y = prosjek(x)
gdje:

  1. funkcija - ključna riječ koja definira M-funkciju;
  2. y - izlazni argument;
  3. prosjek - naziv funkcije;
  4. x je ulazni argument.

Dakle, da biste napisali funkciju u Matlabu, morate zapamtiti da svaka funkcija u MATLAB sistemu sadrži liniju definicije funkcije sličnu onoj ispod.

Naravno, ovako moćan paket je potreban ne samo da bi olakšao život studentima. Trenutno je MATLAB, s jedne strane, veoma popularan među stručnjacima u mnogim naučnim i inženjerskim oblastima. S druge strane, sposobnost rada sa velikim matricama čini MATLAB nezamjenjiv alat finansijski analitičari, koji vam omogućavaju da rešite mnogo više problema od, na primer, dobro poznatog Excela. Više o tome možete pročitati u članku recenzije.

Nedostaci rada sa MATLAB-om


Koje su poteškoće u radu sa MATLAB-om? Postoji možda samo jedna poteškoća. Ali fundamentalno. Da biste u potpunosti otkrili mogućnosti MATLAB-a i lako riješili probleme koji se pojavljuju pred vama, morat ćete se potruditi i prvo razumjeti sam Matlab (kako kreirati datoteku, kako kreirati funkciju itd.). A to nije tako jednostavno, jer moć i široke mogućnosti zahtijevaju žrtvu.

Čak i da želimo, ne možemo reći da MATLAB jestejednostavan program. Ipak, nadamo se da će sve navedeno biti dovoljan argument za početak njegovog razvoja.

I na kraju. Ako ne znate zašto je sve u vašem životu išlo ovako, a ne drugačije, pitajte Matlab o tome. Samo se javi komandna linija"zasto zasto). On će odgovoriti. Probaj!

Sada znate mogućnosti Matlaba. U oblasti obrazovanja, MATLAB se često koristi u nastavi numeričkih metoda i linearne algebre. Mnogi studenti ne mogu bez toga kada obrađuju rezultate eksperimenta sprovedenog tokom laboratorijskog rada. Kako biste brzo i efikasno savladali osnove rada sa MATLAB-om, uvijek nam se možete obratiti, koji smo spremni odgovoriti na svako vaše pitanje u svakom trenutku.

Rad iz MatLab komandne linije je težak ako trebate unijeti mnogo naredbi i često ih mijenjati. Vođenje dnevnika pomoću naredbe dnevnik i spremanje radno okruženje To samo malo olakšava posao. Najviše na zgodan način izvršavanje MatLab komandi je za korištenje M-fajlovi, u koji možete upisivati ​​komande, izvršavati ih sve odjednom ili u dijelovima, pohranjivati ​​ih u datoteku i koristiti ih u budućnosti. M-file editor je dizajniran za rad sa M-datotekama. Koristeći ovaj uređivač, možete kreirati vlastite funkcije i pozvati ih, uključujući i iz komandne linije.

Proširi meni File glavnom MatLab prozoru i u stavci Novo izaberite podstavku M-fajl. Nova datoteka se otvara u prozoru uređivača M-datoteka.

Unesite komande u uređivaču koje dovode do izgradnje dva grafikona u jednom grafičkom prozoru:

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

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

Napomena 1

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

Veoma zgodna prilika obezbeđeno M-file editor, je izvršavanje nekih naredbi. Zatvorite grafički prozor Slika br.1. Odaberite mišem dok držite lijevo dugme, ili tastere sa strelicama dok držite pritisnut taster , prve četiri komande programa i izvršiti ih iz tačke Evaluate Odabir meni Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon koji odgovara izvršenim komandama. Zapamtite da za izvršavanje nekih naredbi morate ih odabrati i pritisnuti . Izvršite preostale tri programske komande i pratite stanje grafičkog prozora. Vježbajte sami, otkucajte neke primjere iz prethodnih laboratorija u M-file editor i pokrenite ih.

Mogu se isporučiti pojedinačni blokovi M-fajla komentari, koje se preskaču kada se izvrše, ali su zgodne za rad sa M-datotekom. Komentari u MatLabu počinju sa znakom procenta i automatski se naglašavaju zeleno, Na primjer:

% iscrtavanje sin(x) u posebnom prozoru

M-file editor može imati više otvorenih datoteka u isto vrijeme. Prijelaz između datoteka se vrši pomoću oznaka s nazivima datoteka koje se nalaze na dnu prozora uređivača.

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

Naredba za uređivanje bez argumenta kreira novu datoteku.
Svi primjeri koji se pojavljuju u ovom i sljedećem laboratorijski rad, najbolje je ukucati i spremiti u M-fajlove, dopuniti ih komentarima i izvršiti iz M-file editora. Upotreba numeričkih metoda i programiranja u MatLabu zahtijeva kreiranje M-fajlova.

2. Vrste M-fajlova

Postoje dvije vrste M-fajlova u MatLabu: programski fajl(Script M-Files) koji sadrži niz naredbi, i file-function(Function M-Files), koji opisuju korisnički definirane funkcije.

Kreirali ste datotečni program (procedura datoteke) čitajući prethodni pododjeljak. Sve varijable deklarirane u datotečnom programu postaju dostupne u radnom okruženju nakon njegovog izvršenja. Izvršite datotečni program dat u pododjeljku 2.1 u uređivaču datoteka M i unesite komandu who u komandnu liniju da vidite sadržaj radnog okruženja. Opis varijabli će se pojaviti u komandnom prozoru:

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

Varijable definirane u jednom datotečnom programu mogu se koristiti u drugim programima datoteka i u naredbama koje se izvršavaju iz komandne linije. Izvršavanje naredbi sadržanih u datotečnom programu izvodi se na dva načina:

  • Iz M-file editora kao što je gore opisano.
  • Iz komandne linije ili drugog programa za datoteke, koristeći ime M datoteke kao naredbu.

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

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

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

Ako nijedna od gore navedenih radnji nije rezultirala uspjehom, u komandnom prozoru se prikazuje poruka, na primjer:

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

Tipično, M-datoteke se pohranjuju u korisničkom direktoriju. Da bi ih MatLab sistem pronašao, putanje se mora postaviti tako da ukazuje na lokaciju M-fajlova.

Napomena 2

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

3. Postavljanje staza

U MatLab verzijama 6 .x određuju se trenutni direktorij i staze pretraživanja. Podešavanje ovih svojstava se vrši pomoću odgovarajućih dijaloških okvira ili pomoću komandi iz komandne linije.

Trenutni direktorij se određuje u dijaloškom okviru Current Imenik radno okruženje. Prozor je prisutan u radnom prostoru ako je odabrana opcija Current Imenik meni Pogled radno okruženje.
Trenutni direktorij se bira sa liste. Ako ga nema na listi, možete ga dodati iz dijaloškog okvira Pregledaj za Folder poziva se klikom na dugme koje se nalazi desno od liste. Sadržaj trenutnog direktorija je prikazan u tabeli datoteka.

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

Za dodavanje kataloga kliknite na dugme Dodati Folder Pregledaj za Put odaberite željeni direktorij. Dodavanje direktorija sa svim njegovim poddirektorijumima se vrši klikom na dugme Dodaj sa podfolderima. MATLAB traži put. Redoslijed pretraživanja odgovara lokaciji staza u ovom polju, prvi se traži direktorij čija se putanja nalazi na vrhu liste. Možete promijeniti redoslijed pretraživanja ili čak ukloniti putanju do direktorija odabirom direktorija u polju MATLAB traži put i odredite njegovu poziciju pomoću sljedećih dugmadi:
Pokret to Top - pomaknite se na vrh liste;
Pokret Gore - pomaknuti se za jednu poziciju;
Ukloni - ukloniti sa liste;
Pokret Dole - pomeriti se za jednu poziciju naniže;
Pokret to Dno - mjesto na dnu liste.

4. Komande za postavljanje staza.

Koraci za postavljanje staza u MatLab 6 .x su duplirani od strane timova. Trenutni direktorij se postavlja naredbom cd, na primjer cd c:\users\igor. Naredba cd, izdana bez argumenta, ispisuje putanju do trenutnog direktorija. Za postavljanje staza koristite naredbu path, pozvanu s dva argumenta:

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

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

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

Napomena 3

Nemojte nepotrebno brisati putanje direktorija, posebno one u čiju svrhu niste sigurni. Uklanjanje može dovesti do toga da neke od funkcija definiranih u MatLab-u postanu nedostupne.

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

Opcija rješenja:

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

5. Funkcije datoteke

Datotečni programi o kojima se govorilo su niz MatLab komandi, oni nemaju ulazne ili izlazne argumente. Da biste koristili numeričke metode i prilikom programiranja vlastitih aplikacija u MatLabu, morate biti u mogućnosti kreirati funkcije datoteka koje proizvode neophodne radnje sa ulaznim argumentima i vrati rezultat u izlaznim argumentima. Ovaj pododjeljak pokriva nekoliko jednostavni primjeri, što vam omogućava da shvatite kako raditi s funkcijama datoteka. Funkcije datoteka, kao i procedure datoteka, kreiraju se u M-file editoru.

5.1. Funkcije datoteke s jednim ulaznim argumentom

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

Ima smisla jednom napisati funkciju datoteke, a zatim je pozvati gdje god ova funkcija treba da se izračuna. Otvorite u M-file editoru novi fajl i otkucajte tekst liste

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

Riječ funkcija u prvom redu to specificira ovaj fajl sadrži funkcijsku datoteku. Prvi red je zaglavlje funkcije, koje kuće naziv funkcije i liste ulaznih i izlaznih argumenata. U primjeru prikazanom na listi, ime funkcije je myfun, jedan ulazni argument je x, a jedan izlazni argument je f. Nakon naslova dolazi tijelo funkcije(u ovom primjeru sastoji se od jednog reda), gdje se izračunava njegova vrijednost. Važno je da se izračunata vrijednost upiše u f. Tačka sa zarezom je uključena kako bi se spriječilo prikazivanje nepotrebnih informacija na ekranu.

Sada spremite datoteku u svoj radni direktorij. Imajte na umu da odabirom stavke Sačuvaj ili Sačuvaj as meni File uzrokuje da se dijaloški okvir za spremanje datoteke pojavi u polju File ime koji već sadrži naziv myfun. Nemojte ga mijenjati, sačuvajte funkcijsku datoteku u datoteku s predloženim imenom.

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

» y =myfun(1.3)
Y =
0.2600

Vlastite funkcije mogu se pozvati iz programa datoteka i iz druge funkcije datoteke.

Upozorenje

Direktorij koji sadrži funkcijsku datoteku mora biti trenutni, ili se njegova putanja mora dodati na stazu pretraživanja, inače MatLab jednostavno neće pronaći funkciju ili će umjesto nje pozvati drugu s istim imenom (ako se nalazi u pretraživim direktorijima).

Funkcija datoteke data u listi ima jedan značajan nedostatak. Pokušaj procjene vrijednosti funkcije iz niza rezultira greškom, a ne nizom vrijednosti, kao što se događa kada se procjenjuju ugrađene funkcije.

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

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

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

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

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

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

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

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

MatLab pruža još jedan način rada sa funkcijama datoteka - koristeći ih kao argumente za neke naredbe. Na primjer, da biste napravili graf, koristite posebna funkcija fplot, koji zamjenjuje gornju sekvencu komandi. Kada pozivate fplot, ime funkcije čiji graf želite da nacrtate je zatvoreno apostrofima, granice crtanja su naznačene u vektoru reda od dva elementa

fplot("myfun", )

Iscrtajte myfun grafove koristeći plot i fplot na istim osama, koristeći hold on. Imajte na umu da graf konstruiran korištenjem fplot preciznije odražava ponašanje funkcije, budući da fplot sam bira korak argumenta, smanjujući ga u područjima brze promjene prikazane funkcije. Navedite rezultate u svom laboratorijskom izvještaju.

5.2. Funkcije datoteke s višestrukim ulaznim argumentima

Pisanje funkcija datoteke s višestrukim ulaznim argumentima se praktički ne razlikuje od pisanja s jednim argumentom. Svi ulazni argumenti su stavljeni u listu odvojeni zarezima. Na primjer, sljedeći popis sadrži funkciju datoteke koja izračunava dužinu vektora radijusa točke u trodimenzionalnom prostoru
Popis funkcije datoteke s nekoliko argumenata

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

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

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

5.3. Funkcije datoteke s više izlaznih argumenata

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

Popis funkcije za pretvaranje sekundi u sate, minute i sekunde

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

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

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

6. Osnove programiranja u MatLabu

Funkcije datoteke i programske datoteke korištene u prethodnim pododjeljcima su najjednostavniji primjeri programa. Sve MatLab naredbe koje se nalaze u njima se izvršavaju sekvencijalno. Da biste riješili mnogo ozbiljnijih problema, potrebno je pisati programe u kojima se radnje izvode ciklično ili se, ovisno o nekim uvjetima, izvršavaju različiti dijelovi programa. Pogledajmo glavne operatore koji određuju redoslijed izvršavanja MatLab komandi. Operatori se mogu koristiti i u procedurama datoteka i u funkcijama, što vam omogućava da kreirate programe sa složenim razgranatim strukturama.

6.1. Operator petlje za

Operator je dizajniran da izvrši određeni broj ponovljenih radnji. Najlakši za upotrebu za operatera izvedeno na sljedeći način:

za count = start:step:final
MatLab komande
kraj

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

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

Napomena 4

M-file editor automatski predlaže postavljanje naredbi unutar petlje, uvučeno od lijeve ivice. Koristite ovu funkciju da olakšate rad s programskim tekstom.

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

Napišite fajl program za izračunavanje sume

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

Ispis Fordem2 fajl programa za izračunavanje iznosa

% fajl program za izračunavanje iznosa
% 1/1!+1/2!+ … +1/10!

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

Ukucajte programsku datoteku u M-file editor, sačuvajte je u trenutnom direktoriju u datoteci Fordem2.m i pokrenite. Rezultat će biti prikazan u komandnom prozoru, jer u zadnjem redu programa datoteke S ne sadrži tačku i zarez za prikaz vrijednosti varijable S

Imajte na umu da se drugi redovi programa datoteka koji bi uzrokovali ispis međuvrijednosti na ekran završavaju tačkom i zarezom kako bi se potisnuo izlaz u komandni prozor.

Nije slučajno da su prva dva reda sa komentarima odvojena praznim redom od ostatka teksta programa. Oni su oni koji se prikazuju kada korisnik koristi naredbu za pomoć iz komandne linije da dobije informacije o tome šta Fordem2 radi

>> pomoć Fordem2
datotečni program za izračunavanje sume
1/1!+1/2!+ … +1/10!

Prilikom pisanja programa datoteka i funkcija datoteka, nemojte zanemariti komentare!
Sve varijable koje se koriste u datotečnom programu postaju dostupne u radnom okruženju. To su takozvane globalne varijable. S druge strane, fajl program može koristiti sve varijable unesene u radno okruženje.

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

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

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

Prije pokretanja programa, morate definirati varijablu x na komandnoj liniji koristeći sljedeće naredbe:

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

As x može biti vektor ili matrica, jer su u programu Fordem2 datoteke korišćene operacije element po element prilikom akumulacije sume.

Prije pokretanja Fordem2, morate ga dodijeliti varijabli x neku vrijednost, a da biste izračunali zbir, na primjer, iz petnaest pojmova, morat ćete unijeti izmjene u tekst programa datoteke. Mnogo je bolje napisati univerzalnu funkciju datoteke koja kao ulazne argumente uzima vrijednost x i gornju granicu iznosa, a vikend - vrijednost iznosa S(x). Funkcijska datoteka sumN prikazana je na sljedećem popisu.

Ispis funkcije datoteke za izračunavanje sume

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

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

Korisnik može naučiti o korištenju funkcije sumN upisivanjem pomoći sumN na komandnoj liniji. Prva tri reda sa komentarima biće prikazana u komandnom prozoru, odvojeni od teksta funkcije datoteke praznim redom.

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

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

Petlja for je korisna kada se ponavljaju slične radnje kada je njihov broj unaprijed određen. Fleksibilnija while petlja vam omogućava da zaobiđete ovo ograničenje.

6.2. Operator petlje while

Razmotrimo primjer izračunavanja sume, sličan primjeru iz prethodnog paragrafa. Morate pronaći zbir niza za dati x(proširenje serije):
.

Zbir se može akumulirati sve dok članovi nisu premali, recimo više po modulu A for petlje ovdje nije dovoljno, jer je broj pojmova unaprijed nepoznat. Rješenje je korištenje while petlja koji traje sve dok je uslov petlje zadovoljen:

uvjet petlje while
MatLab komande
kraj

U ovom primjeru, uvjet petlje određuje da je trenutni član veći od . Za pisanje ovog uvjeta koristite znak veće od (>). Tekst funkcije datoteke mysin, koja izračunava zbir niza, dat je u sljedećem popisu.

Popis funkcije datoteke mysin, koja izračunava sinus po proširenju serije

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

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

Imajte na umu da while petlja, za razliku od for petlje, nema varijablu petlje, tako da smo morali dodijeliti k nuli prije početka petlje, i povećati k za jedan unutar petlje.
Uslov petlje while može sadržavati više od samog znaka >. Za postavljanje uslova za izvršavanje ciklusa, važeće su i druge relacijske operacije navedene u Tabeli 1. 1.

Tabela 1. Relacijske operacije

Postavljanje složenijih uslova se vrši pomoću logičkih operatora. Na primjer, uvjet se sastoji u istovremenom ispunjavanju dvije nejednakosti i , a piše se pomoću logički operator i

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

ili ekvivalentno sa &

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

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

Tablica 2. Logički operatori

Operater

Pisanje u MatLab

Ekvivalentan unos

Logično "I"

i (x< 3, k == 4)

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

Logično "ILI"

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

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

negacija "NE"

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

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

ili u ekvivalentnom obliku

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

Organizacija ponovljenih radnji u obliku ciklusa čini program jednostavnim i razumljivim, ali je često potrebno izvršiti jedan ili drugi blok naredbi u zavisnosti od određenih uslova, tj. koristiti grananje algoritama.

6.3. Uslovna if izjava

Uslovni operator ako omogućava vam da kreirate algoritam grananja za izvršavanje naredbi, u kojem se, kada su ispunjeni određeni uslovi, pokreće odgovarajući blok MatLab operatora ili komandi.

Naredba if može se koristiti u svom jednostavnom obliku za izvršavanje bloka naredbi kada je neki uvjet zadovoljen, ili u konstrukciji if-elseif-else za pisanje algoritama grananja.
Pretpostavimo da trebamo procijeniti izraz . Pretpostavimo da izvodite izračunavanje u domeni realnog broja i želite da prikažete upozorenje da je rezultat kompleksan broj. Prije izračunavanja funkcije, trebate provjeriti vrijednost argumenta x i prikazati upozorenje u komandnom prozoru ako modul x ne prelazi jedan. Ovdje trebate koristiti uvjetnu if naredbu, čija upotreba u najjednostavnijem slučaju izgleda ovako:

ako stanje
MatLab komande
kraj

Ako je uslov ispunjen, onda se implementiraju MatLab komande koje se nalaze između if i end, a ako uslov nije ispunjen, onda se dešava prelazak na komande koje se nalaze nakon kraja. Prilikom pisanja uslova koriste se operacije date u tabeli. 1.

Funkcija datoteke koja provjerava vrijednost argumenta prikazana je na sljedećem popisu. Naredba upozorenja se koristi za prikaz upozorenja u komandnom prozoru.

Popis funkcije datoteke Rfun koja provjerava vrijednost argumenta

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

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

Sada pozivanje Rfun iz argumenta manjeg od jedan će rezultirati porukom upozorenja koja se prikazuje u komandnom prozoru:

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

Funkcija datoteke Rfun samo upozorava da je njena vrijednost složena i svi proračuni s njom se nastavljaju. Ako složeni rezultat znači grešku u proračunu, tada biste trebali prestati s izvršavanjem funkcije koristeći naredbu error umjesto upozorenja.

6.4. Operator grane ako-elseif-else

Općenito, primjena operatora grane if-elseif-else izgleda ovako:

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

U zavisnosti od implementacije jednog ili drugog od N uvjetima, odgovarajuća grana programa se pokreće ako ništa od N uslove, onda se implementiraju MatLab komande postavljene iza else. Nakon izvršenja bilo koje grane, operator izlazi. Može biti koliko god želite ili samo dvije. U slučaju dvije grane, koristi se prateći else, a elseif se preskače. Izjava uvijek mora završiti sa end.
Primjer korištenja if-elseif-else naredbe dat je u sljedećem popisu.

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

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

6.5. Operater podružnice prekidač

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

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

IN dati operator Prvo se izračunava vrijednost switch_expression (to može biti skalarna numerička vrijednost ili niz znakova). Ova vrijednost se zatim uspoređuje sa vrijednostima: vrijednost 1, vrijednost 2, ..., vrijednost N, vrijednost N+1, vrijednost N+2, ..., vrijednost NM+1, vrijednost NM+2, ... ( koji takođe može biti numerički ili niz) . Ako se pronađe podudaranje, izvršavaju se MatLab komande koje slijede odgovarajuću ključnu riječ case. U suprotnom se izvršavaju MatLab komande koje se nalaze između ključnih riječi else i end.

Linije sa ključna riječ može biti koliko god želite, ali mora postojati samo jedan red s ključnom riječi inače.

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

Upotreba prekidača je ilustrovana sljedećim primjerom:

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

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

6.6. Operator prekida petlje break

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

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

Čim varijabla z postane 0, petlja se prekida.

Naredba break vam omogućava da ranije prekinete izvršenje for i while petlji. Izvan ovih ciklusa break izjava ne radi.

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

). Među sredstvima opće namjene, koji se koristi u hemometriji, zauzima posebno mjesto MatLab paket. Njegova popularnost je neobično visoka. To je zato što je MatLab moćan i svestran za obradu višedimenzionalnih podataka. Sama struktura paketa čini ga pogodnim alatom za izvođenje matričnih proračuna. Raspon problema, čija se studija može provesti pomoću MatLab-a, pokriva: matričnu analizu, obradu signala i slike, neuronske mreže i mnogi drugi. MatLab je jezik otvorenog koda visokog nivoa koji omogućava naprednim korisnicima da razumiju programirane algoritme. Jednostavan ugrađeni programski jezik olakšava kreiranje vlastitih algoritama. Tokom mnogo godina korištenja MatLab-a stvoren je ogroman broj funkcija i ToolBox-a (paketa specijalizovanih alata). Najpopularniji je paket PLS ToolBox kompanije Eigenvector Research, Inc.

1. Osnovne informacije

1.1. MatLab radno okruženje

Da biste pokrenuli program, dvaput kliknite na ikonu. Pred vama će se otvoriti radno okruženje prikazano na slici.

Radno okruženje MatLab 6.x malo drugačiji od radnog prostora prethodnih verzija, ima praktičniji interfejs za pristup mnogim pratećim elementima

Radno okruženje MatLab 6.x sadrži sledeće elemente:

    traka sa alatkama sa dugmadima i padajućom listom;

    prozor sa karticama Launch Pad i Radni prostor, iz koje možete pristupiti raznim ToolBox modulima i sadržajima radne površine;

    prozor sa karticama Command History I Current Directory, namenjen za pregled i ponovno pozivanje prethodno unetih komandi, kao i za podešavanje trenutnog direktorijuma;

    komandni prozor koji sadrži prompt "unos" i trepćući vertikalni kursor;

    status bar.

Ako je u radnom okruženju MatLab 6.x Ako nedostaju neki prozori prikazani na slici, trebalo bi da izaberete odgovarajuće stavke u meniju Prikaz: Komandni prozor, Istorija naredbi, Trenutni direktorij, Radni prostor, Launch Pad.

Komande treba ukucati u komandni prozor. Simbol » , koji označava prompt komandne linije, nije potrebno kucati. Da biste videli radnu oblast, zgodno je koristiti trake za pomeranje ili tastere Home, End, za pomeranje levo ili desno i PageUp, PageDown za kretanje gore ili dole. Ako iznenada, nakon pomicanja po radnom području komandnog prozora, komandna linija sa trepćućim kursorom nestane, samo pritisnite Enter.

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

1.2. Jednostavne kalkulacije

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

Rice. 2 Grafički prikaz analize glavnih komponenti

Šta je radio MatLab program? Prvo je izračunala zbir 1+2, zatim je rezultat zapisala u posebnu varijablu ans i prikazala njegovu vrijednost jednaku 3 u komandnom prozoru. Ispod odgovora je komandna linija sa trepćućim kursorom, što ukazuje da je MatLab spreman za dalje proračune. Možete upisati nove izraze u komandnu liniju i pronaći njihova značenja. Ako treba da nastavite da radite sa prethodnim izrazom, na primer, izračunajte (1+2)/4,5, onda je najlakši način da koristite postojeći rezultat koji je pohranjen u varijablu ans. Ukucajte ans/4.5 (tačka se koristi prilikom unosa decimala) i pritisnite Enter, ispostavilo se

Rice. 3 Grafički prikaz analize glavnih komponenti

1.3. Echo komande

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

Rice. 4 Primjer unosa funkcije ScoresPCA

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

Najlakši način da sačuvate sve vrednosti varijabli je da koristite opciju Sačuvaj radni prostor kao u meniju Datoteka. Ovo će otvoriti dijaloški okvir Save Workspace Variables, u kojem morate navesti ime direktorija i datoteke. Podrazumevano se predlaže da se datoteka pohrani u radni poddirektorij glavnog MatLab direktorija. Program će rezultate svog rada sačuvati u datoteci sa ekstenzijom mat. Sada možete zatvoriti MatLab. U sljedećoj radnoj sesiji, da biste vratili vrijednosti varijabli, trebali biste otvoriti ovu sačuvanu datoteku koristeći podstavku Otvori menija Datoteka. Sada su sve varijable definirane u posljednjoj sesiji ponovo dostupne. Mogu se koristiti u novounesenim naredbama.

1.5. Časopis

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

obavlja sljedeće radnje:

    otvara dnevnik u datoteci exampl-1.txt;

    vrši proračune;

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

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

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

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

Sačuvaj rad-1
quit

1.6. Sistem pomoći

MatLab prozor pomoći pojavljuje se nakon odabira opcije Help Window iz menija Help ili klikom na dugme za pitanje na traci sa alatkama. Ista operacija se može izvesti upisivanjem naredbe helpwin. Da biste prikazali prozore pomoći za pojedinačne teme, otkucajte helpwin tema. Prozor pomoći vam pruža iste informacije kao i naredba pomoći, ali sučelje prozora pruža praktičniju vezu s drugim temama pomoći. Koristeći adresu web stranice Math Works, možete pristupiti serveru kompanije i izvući maksimum najnovije informacije za pitanja koja vas zanimaju. Možete provjeriti nove softverske proizvode ili pronaći odgovore na svoje probleme na stranici tehničke podrške.

2. Matrice

2.1. Skalari, vektori i matrice

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

Imajte na umu da MatLab razlikuje velika i velika slova, tako da su p i P različite varijable. Za unos nizova (vektora ili matrica), njihovi elementi se stavljaju u uglaste zagrade. Dakle, da biste unijeli vektor reda 1x3, koristite sljedeću naredbu u kojoj su elementi reda odvojeni razmacima ili zarezima.

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

Pogodno je unositi male matrice direktno iz komandne linije. U inputu, matrica se može smatrati vektorom stupca, čiji je svaki element vektor reda.

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

2.2. Pristup elementima

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

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

Ako trebate vidjeti varijable radnog okruženja, trebate ukucati naredbu u komandnoj liniji whos .

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

2.3. Osnovne matrične operacije

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

a množenje je označeno zvjezdicom *. Hajde da uvedemo matricu veličine 3×2

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

Provjerite svoj rezultat množenjem matrice P po sebi.

2.4. Kreiranje matrica posebnog tipa

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

Matrica identiteta se kreira pomoću funkcije oko

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

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

Funkcija diag formira dijagonalnu matricu od vektora, raspoređujući elemente duž dijagonale.

2.5. Matrični proračuni

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

Pronalaženje inverzna matrica provodi se pomoću funkcije inv za kvadratne matrice

3. Integracija MatLab-a i Excel-a

Integracija MatLab-a i Excel-a omogućava korisniku Excel-a pristup brojnim MatLab funkcijama za obradu podataka, različite proračune i vizualizaciju rezultata. Dodatak excllink.xla implementira ovu ekstenziju programa Excel. Za komunikaciju između MatLaba i Excela definirane su posebne funkcije.

3.1. Excel konfiguracija

Prije postavljanja Excela da radi zajedno sa MatLabom, trebali biste se uvjeriti da je Excel Link uključen instaliranu verziju MatLab. U poddirektorijumu exclink glavnog MatLab direktorijuma ili poddirektoriju kutije sa alatkama trebalo bi da postoji datoteka sa dodatkom excllink.xla. Pokrenite Excel i odaberite Dodaci iz izbornika Alati. Otvoriće se dijaloški okvir koji sadrži informacije o trenutno dostupnim dodacima. Koristeći dugme Pregledaj, navedite putanju do datoteke excllink.xla. Linija se pojavljuje na listi dodataka u dijaloškom okviru Excel Link 2.0 za upotrebu sa MatLabom sa postavljenom zastavom. Kliknite U redu, potrebni dodatak je dodan u Excel.

Imajte na umu da Excel sada ima panel Excel alati Link koji sadrži tri dugmeta: putmatrix, getmatrix, evalstring. Ovi gumbi implementiraju osnovne radnje potrebne za implementaciju odnosa između Excel-a i MatLab-a - razmjena matričnih podataka i izvršavanje MatLab komandi iz Excel okruženja. Kod ponovljenih lansiranja Excel dodatak excllink.xla se automatski povezuje.

Koordinirani rad Excel-a i MatLab-a zahtijeva još nekoliko postavki, koje su standardno prihvaćene u Excel-u (ali se mogu promijeniti). U meniju Alati idite na Opcije, što otvara okvir za dijalog Opcije. Odaberite karticu Općenito i uvjerite se da je zastavica referentnog stila R1C1 isključena, tj. ćelije su označene brojevima A1, A2 itd. Na kartici Uredi mora se postaviti zastavica Premjesti odabir nakon Enter.

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

Pokrenite Excel, provjerite da li su izvršena sva potrebna podešavanja kao što je opisano u prethodnom dijelu (MatLab mora biti zatvoren). Unesite matricu u ćelije A1 do C3, koristeći tačku za odvajanje decimalnih mjesta kako to zahtijeva Excel.

Odaberite podatke ćelije na listu i kliknite na dugme putmatrix, pojavljuje se Excel prozor uz upozorenje da MatLab ne radi. Kliknite OK, pričekajte da se MatLab otvori.

Pojavljuje se Excel dijaloški okvir sa linijom za unos za navođenje imena MatLab radne varijable u koju treba izvesti podatke iz odabranih Excel ćelija. Na primjer, unesite M i zatvorite prozor pomoću dugmeta OK. Prebaciti na komandni prozor MatLab i uvjerite se da je varijabla M kreirana u radnoj površini koja sadrži niz tri po tri:

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

Zovi inv Da biste invertirali matricu, kao i bilo koju drugu MatLab naredbu, možete to učiniti direktno iz Excela. Klikom na dugme evalstring koje se nalazi na panelu Excel Link dovodi do pojave dijaloškog okvira u čiju liniju za unos treba da upišete naredbu MatLab

IM=inv(M) .

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

Vratite se u Excel, učinite ćeliju A5 trenutnom ćelijom i kliknite na dugme getmatrix. Pojavljuje se dijaloški okvir sa linijom za unos u kojoj se od vas traži da unesete ime varijable koju želite uvesti u Excel. U ovom slučaju, takva varijabla je IM. Kliknite OK, ćelije A5 do A7 imaju unesene elemente inverzne matrice.

Dakle, da biste izvezli matricu u MatLab, trebate odabrati odgovarajuće ćelije Excel list, a za uvoz dovoljno je navesti jednu ćeliju, koja će biti gornji lijevi element uvezenog niza. Preostali elementi će biti upisani u ćelije lista u skladu sa dimenzijama niza, zamenjujući podatke sadržane u njima, tako da treba da budete oprezni kada uvozite nizove.

Gornji pristup je najjednostavniji način za razmjenu informacija između aplikacija - izvorni podaci se nalaze u Excelu, zatim se izvoze u MatLab, tamo se obrađuju na neki način i rezultat se uvozi u Excel. Korisnik prenosi podatke koristeći dugmad na traci sa alatkama Excel Link. Informacije se mogu predstaviti u obliku matrice, tj. pravougaona površina radnog lista. Ćelije raspoređene u red ili kolonu izvoze se u MatLab vektore reda i kolone. Uvoz vektora redova i vektora stupaca u Excel se odvija na sličan način.

4. Programiranje

4.1. M-fajlovi

Rad iz MatLab komandne linije postaje težak ako trebate unijeti mnogo naredbi i često ih mijenjati. Vođenje dnevnika pomoću komande dnevnik i održavanje radnog okruženja malo olakšavaju rad. Najprikladniji način za izvršavanje grupa MatLab komandi je korištenje M-fajlova, u koje možete upisivati ​​komande, izvršavati ih sve odjednom ili u dijelovima, snimiti ih u datoteku i koristiti ih kasnije. M-file editor je dizajniran za rad sa M-datotekama. Uz njegovu pomoć, možete kreirati vlastite funkcije i pozvati ih, uključujući i iz komandnog prozora.

Proširite meni Datoteka glavnog prozora MatLab-a i u Novoj stavci izaberite podstavku M-fajl. Nova datoteka se otvara u prozoru M-file editora, koji je prikazan na slici.

Postoje dvije vrste M-fajlova u MatLabu: programska datoteka ( Script M-Files), koji sadrži niz naredbi i funkcije datoteke, ( Funkcija M-Files), koji opisuju funkcije koje definira korisnik.

4.2. File program

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

Sada sačuvajte datoteku pod nazivom mydemo.m u radni poddirektorijum glavnog MatLab direktorijuma tako što ćete izabrati Sačuvaj kao iz menija File uređivača. Da biste pokrenuli sve komande sadržane u datoteci, izaberite Pokreni iz menija Debug. Na ekranu će se pojaviti grafički prozor Slika 1, koji sadrži grafove funkcija.

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

Veoma zgodna karakteristika koju nudi uređivač M-fajlova je izvršavanje nekih komandi. Zatvorite grafički prozor Slika 1. Odaberite pomoću miša dok držite lijevo dugme ili pomoću tastera sa strelicama dok držite pritisnut taster Shift, prve četiri komande i izvršite ih iz stavke Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon, koji odgovara izvršenim komandama. Imajte na umu da da biste izvršili neke naredbe, odaberite ih i pritisnite tipku F9.

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

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

4.3. Funkcija datoteke

Datotečni program o kojem se govorilo je samo niz MatLab komandi, on nema ulazne ili izlazne argumente. Da biste koristili numeričke metode i prilikom programiranja vlastitih aplikacija u MatLab-u, morate biti u mogućnosti kreirati funkcije datoteka koje izvode potrebne akcije s ulaznim argumentima i vraćaju rezultat akcije u izlaznim argumentima. Pogledajmo nekoliko jednostavnih primjera koji će vam pomoći da shvatite kako raditi s funkcijama datoteka.

Kada se predobrade podaci iz multivarijantne kemometrijske analize, često se koristi centriranje. Ima smisla jednom napisati funkciju datoteke, a zatim je pozvati gdje god je potrebno centriranje. Otvorite novu datoteku u uređivaču M-datoteka i otkucajte

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

Sada se kreirana funkcija može koristiti na isti način kao i ugrađene sin, cos i druge. Vlastite funkcije mogu se pozvati iz programa datoteka i iz druge funkcije datoteke. Pokušajte sami napisati funkciju datoteke koja će skalirati matrice, tj. podijelite svaki stupac sa standardnom devijacijom za tu kolonu.

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

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

4.4 Kreiranje grafikona

MatLab ima široke mogućnosti za grafička slika vektore i matrice, kao i za kreiranje komentara i štampanje grafova. Hajde da opišemo nekoliko važnih grafičkih funkcija.

Funkcija plot ima različite oblike pridružene ulaznim parametrima, na primjer plot(y) stvara linearni graf elemenata y u odnosu na njihove indekse. Ako su dva vektora data kao argumenti, plot(x,y) će kreirati graf y naspram x. Na primjer, da bismo nacrtali funkciju sin u rasponu od 0 do 2π, radimo sljedeće

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

MatLab automatski dodjeljuje različitu boju svakom dijagramu (osim ako to korisnik ne učini), omogućavajući vam da razlikujete skupove podataka.

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

4.5 Štampanje grafikona

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

5. Primjeri programa

Ovaj odjeljak opisuje najčešće korištene algoritme koji se koriste u analizi višedimenzionalnih podataka. Razmatraju se i najjednostavnije metode transformacije podataka - centriranje i skaliranje - i algoritmi za analizu podataka - PCA, PLS.

5.1. Centriranje i skaliranje

Često je tokom analize potrebno transformisati originalne podatke. Najčešće korištene metode za transformaciju podataka su centriranje i skaliranje svake varijable prema njenoj standardnoj devijaciji. Dat je kod funkcije za centriranje matrice. Stoga je ispod prikazan samo kod funkcije koja vage podaci. Imajte na umu da originalna matrica mora biti centrirana

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

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

%kraj skaliranja

5.2. SVD/PCA

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

X = TP t+ E

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

Najjednostavniji način pronalaženja matrica T I P- koristiti SVD dekompoziciju kroz standardnu ​​MatLab funkciju koja se zove svd .

funkcija = pcasvd(X)

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

%kraj pcasvd

5.3 PCA/NIPALS

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

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

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

Kod za NIPALS algoritam mogu napisati sami čitaoci u ovom priručniku, autori predstavljaju svoju verziju. Prilikom izračunavanja PCA, možete unijeti broj glavnih komponenti (broj varijablePC). Ako ne znate koliko komponenti je potrebno, trebali biste napisati = pcanipals (X) na komandnoj liniji i tada će program postaviti broj komponenti jednak najmanjoj od dimenzija originalne matrice X.

funkcija = pcanipals(X, brojPC)

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

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

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

Dok je d - d0 > 0,0001;
P1 = (T1" * X/(T1" * T1)); P1 = P1/norma(P1); T1 = X * P1; d0 = T1"*T1;
P1 = (T1" * X/(T1" * T1)); P1 = P1/norma(P1); T1 = X * P1; d = T1"*T1;
kraj

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

Kako izračunati PCA pomoću dodatka Chemometrics opisano je u vodiču

5.4PLS1

Najpopularnija metoda za multivarijantnu kalibraciju je metoda projekcije na latentne strukture (PLS). Ova metoda uključuje istovremenu dekompoziciju prediktorske matrice X i matrice odgovora Y:

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

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

Detaljan opis PLS metode je dat u ovoj knjizi Za pravljenje PLS1 naloga i učitavanja, koristi se rekurentni algoritam. Prvo originalne matrice X I Y centar

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

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

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

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

Evo koda za ovaj algoritam preuzet iz knjige

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

u = y(:, 1);

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

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

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

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

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

%Kraj pls

O izračunavanju PLS1 pomoću dodatka HemometrijaDodati opisano u priručniku Metode projekcije u Excelu.

5.5PLS2

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

1. Odaberite početni vektor u 2. w t = u t E a 3. w = w / (w t w) ½ 4. t = Ea w 5. q t = t t Fa / t t t 6. u = Fa q/ q t q 7. Provjerite konvergenciju, ako ne, idite na 2 8. str t = t t Ea / t t t

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

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

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

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

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

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

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

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

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

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

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

%Kraj plsr

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

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

O izračunavanju PLS2 pomoću dodatka HemometrijaDodati opisano u priručniku Metode projekcije u Excelu.

Zaključak

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

Instrukcije

MATLAB okruženje ima nekoliko načina rada. Najjednostavniji je unos komandi direktno u komandni prozor ( Komandni prozor).
Ako se ne vidi u programskom interfejsu, onda ga morate otvoriti. Komandni prozor možete pronaći kroz meni Desktop -> Komandni prozor.
Na primjer, unesite naredbe "x = y = sqrt(y);" u nizu jednu za drugom i pritisnite tipku "Enter" (); Enter). Program će trenutno kreirati varijable X, kreirati varijablu Y i izračunati njene vrijednosti ​​​​​​​​​za datu funkciju, a zatim izgraditi njen graf.
Koristeći strelice na tastaturi „gore“ i „dole“ u komandnom prozoru, možemo se prebacivati ​​između svih unetih komandi, po potrebi ih odmah promeniti i ponovnim pritiskom na Enter poslati ih u MATLAB okruženje na izvršenje.
Udoban? Bez sumnje. I što je najvažnije - vrlo brzo. Sve ove radnje traju nekoliko sekundi.
Ali šta ako vam je potrebna složenija organizacija tima? Ako vam je potrebno ciklično izvršavanje nekih naredbi? Ručno unošenje komandi jednu po jednu, a zatim dugo pretraživanje kroz istoriju može biti prilično zamorno.

Da bi olakšali život naučniku, inženjeru ili studentu, prozor urednika ( Urednik). Otvorimo prozor editora kroz meni Desktop -> Urednik.
Ovdje možete kreirati nove varijable, graditi grafikone, pisati programe (skripte), kreirati komponente za razmjenu sa drugim okruženjima, kreirati aplikacije sa korisničkim interfejsom (GUI) i uređivati ​​postojeće. Ali trenutno smo zainteresirani za pisanje programa koji sadrži funkcije za ponovnu upotrebu u budućnosti. Pa idemo na meni File i biraj Novo -> M-File.

U polju editora ćemo pisati jednostavan program, ali hajde da malo zakomplikujemo:

funkcija draw_plot(x)
y = log(x); % Postavite prvu funkciju
subplot(1, 2, 1), plot(x, y); % Izrada prvog grafikona
y = sqrt(x); % Postavite drugu funkciju
subplot(1, 2, 2), plot(x, y); % Izrada drugog grafikona

Dodali smo drugu funkciju i prikazat ćemo dva grafikona jedan pored drugog. Znak procenta označava komentare u MATLAB-u.
Ne zaboravite da sačuvate program. Standardna ekstenzija datoteke za Matlab program je *.m.
Sada zatvorite uređivač i prozor sa grafom koji smo ranije napravili.

Vratite se na komandni prozor.
Možete obrisati istoriju komandi tako da nas nepotrebne informacije ne ometaju. Da biste to učinili, kliknite desnim tasterom miša na polje za unos komande i izaberite stavku u kontekstnom meniju koji se otvara Očistite komandni prozor.
Još uvijek imamo varijablu X iz prethodnog eksperimenta, nismo je promijenili ili izbrisali. Stoga možete odmah ući u komandni prozor:
crtanje(x);
Vidjet ćete da će MATLAB pročitati našu funkciju iz datoteke i izvršiti je, crtajući graf.

Često prilikom programiranja morate ponavljati iste proračune mnogo puta, na primjer, određivanje modula broja ili izračunavanje euklidske udaljenosti između tačaka, itd. Za implementaciju takvih ponavljajućih proračuna, ima smisla kreirati funkcije i pozvati ih po potrebi.

4.1. Redoslijed definiranja i pozivanja funkcija

Prvo poglavlje ovog priručnika pokazalo je kako definirati vlastite funkcije u MatLab programu. U ovom dijelu ćemo se fokusirati na više Detaljan opis programiranje korisničkih funkcija.

Sintaksa za definiranje vlastitih funkcija u MatLabu je sljedeća:

funkcija [ RetVal1, RetVal2,… ] = Ime funkcije(arg1, arg2,…)
<тело функции>

gdje je RetVal1, RetVal2,... – skup vrijednosti koje vraća funkcija (rezultati rada); arg1, arg2,... – skup ulaznih argumenata; tijelo funkcije – skup naredbi (programa) koji se izvršavaju kada se funkcija pozove.

Pogledajmo primjer implementacije funkcije za izračunavanje Euklidske udaljenosti:

dužina funkcije = euqlid(x1, y1, x2, y2)
dužina = sqrt((x1-x2)^2+(y1-y2)^2);

Pokažimo mogućnost vraćanja nekoliko parametara na primjeru izračunavanja širine i visine pravokutnika specificiranih koordinatama gornjeg lijevog ugla (x1,y1) i donjeg desnog ugla (x2,y2):

funkcija = pravougaonikHW(x1,y1,x2,y2)
širina = abs(x1-x2);
visina = abs(y1-y2);

Ova funkcija se također može napisati sa sljedećim skupom parametara:


širina = abs(P1(1)-P1(2));
visina = abs(P2(1)-P2(2));

gdje su P1 i P2 vektori (nizovi) veličine 2 elementa i opisuju tačku u dvodimenzionalnom prostoru. U ovom slučaju, prilikom pozivanja funkcije, vrijednosti koordinata tačaka mogu se prenijeti na sljedeći način:

RectangleHW(, );

Ako programer napravi grešku i, kada poziva funkciju, prosledi pogrešnu veličinu vektora, na primer, ovako

RectangleHW(0, );

tada će se izvršavanje funkcije završiti greškom i izvršenje cijelog algoritma će se zaustaviti. Da biste izbjegli ovu situaciju, MatLab vam omogućava da provjerite ispravnost proslijeđenih argumenata i ispravno završite funkciju bez zaustavljanja cijelog algoritma. Sljedeći primjer zapisa funkcije pokazuje kako takva provjera funkcionira:

funkcija = PravougaonikHW(P1, P2)
ako dužina (P1)< 2 | length(P2) < 2
kraj

širina = abs(P1(1)-P1(2));
visina = abs(P2(1)-P2(2));

Ako se ova funkcija izvrši s pogrešnim parametrima, funkcija će prikazati poruku o grešci u MatLab komandnom prozoru, ali program će nastaviti s radom.

Predložena provjera prati ispravnost proslijeđenih argumenata. Međutim, također je važno provjeriti broj proslijeđenih ulaznih argumenata i broj vrijednosti koje vraća funkcija. Na primjer, ako je umjesto dva argumenta proslijeđen samo jedan, funkcija će se greškom prekinuti. Slično, ako funkcija očekuje da će vratiti tri argumenta kada je definirana za samo dva, tada će se također pojaviti greška.

Varijable nargin i nargout se koriste za provjeru broja proslijeđenih argumenata i broja povratnih vrijednosti na čekanju. Ispod je primjer funkcije koja provjerava da li je broj ulaznih i izlaznih argumenata ispravan.

funkcija = pravougaonikHW(P1, P2)
ako je nargina ~= 2
error("Loš broj parametara");
kraj
ako je nagout ~= 2
error("Moraju biti 2 povratne vrijednosti");
kraj
ako dužina (P1)< 2 | length(P2) < 2
error("Loš 1. ili 2. parametar");
kraj

širina = abs(P1(1)-P1(2));
visina = abs(P2(1)-P2(2));

U ovom slučaju, provjere ispravnosti parametara funkcije će se pokrenuti u sljedećim situacijama:

RectangleHW(); % Loš broj parametara
= PravougaonikHW(, ); % Mora biti 2 povrata
% vrijednosti
= PravougaonikHW(0, ); % Loš 1. ili 2. parametar

Najbolji članci na ovu temu