Kako postaviti pametne telefone i računala. Informativni portal

Pozivanje funkcije u Matlabu. MATLAB kao programski jezik

Oni koji se bave višom matematikom jako dobro znaju s kakvim matematičkim “čudovištima” ponekad imaju posla. Na primjer, možete potrošiti jako puno vremena, mentalne energije i živčanih stanica koje se ne oporavljaju na izračun nekog divovskog trostrukog integrala. Naravno, vrlo je zanimljivo izazvati integral i uzeti ga. Ali što ako umjesto toga integral prijeti da vas ponese? Ili, još gore, je li kubni trinom izmakao kontroli i poludio? Ovo ne biste poželjeli svom neprijatelju.


Prije su postojale samo dvije opcije: odustati od svega i prošetati ili ući u višesatnu bitku s integralom. Pa, nekima je trebalo mnogo sati, drugima je trebalo puno minuta – tko je kako učio. Ali nije u tome stvar. Dvadeseto stoljeće i neumitni napredak nude nam treći put, naime, omogućuju nam da uzmemo najviše složeni integral"brzo." Isto vrijedi i za rješavanje svih vrsta jednadžbi, crtanje grafova funkcija u obliku kubičnih hiperboloida itd.

Za takve izvanredne, ali povremeno nastale situacije među učenicima, postoji moćno matematičko oružje. Za one koji još ne znaju, upoznajte se s programskim paketom MATLAB.

Matlab će riješiti jednadžbu, aproksimirati je i izgraditi graf funkcije. Razumijete li što ovo znači, prijatelji?

To znači da je to jedan od najmoćnijih paketa za obradu podataka koji su danas dostupni. Naziv stoji za MatricaLaboratorija. Matrix laboratorij, ako je na ruskom . Mogućnosti programa pokrivaju gotovo sva područja matematike. Dakle, koristeći Matlab, možete:

  • Izvođenje svih vrsta operacija na matricama, rješavanje linearnih jednadžbi, rad s vektorima;
  • Izračunajte korijene polinoma bilo kojeg stupnja, izvodite operacije na polinomima, diferencirajte, ekstrapolirajte i interpolirajte krivulje, gradite grafove bilo koje funkcije;
  • Provesti statističku analizu podataka korištenjem digitalnog filtriranja, statističke regresije;
  • Odlučiti diferencijalne jednadžbe. U parcijalnim izvedenicama, linearno, nelinearno, s rubnim uvjetima - nije bitno, Matlab će sve riješiti;
  • Izvođenje cjelobrojnih aritmetičkih operacija.

Uz sve to, mogućnosti MATLAB-a omogućuju vizualizaciju podataka sve do konstrukcije 3D grafikoni i stvaranje animiranih videa.

Naš opis Matlaba, naravno, nije potpun. Uz mogućnosti i funkcije koje pruža proizvođač, postoji veliki broj Matlab alata koje su jednostavno napisali entuzijasti ili druge tvrtke.

MATLAB kao programski jezik


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


Glavna radna datoteka programa je M-datoteka. Beskrajno je tekstualna datoteka, a upravo u njemu se odvija stvarno programiranje izračuna. Usput, neka vas ova riječ ne uplaši - da biste radili u MATLAB-u, ne morate biti profesionalni programer.

M-datoteke se dijele na

  • M-scenariji. M skripta je najjednostavniji tip M datoteke i nema ulaznih ni izlaznih argumenata. Ova se datoteka koristi za automatizaciju ponovljenih izračuna.
  • M-funkcije. M-funkcije su M-datoteke koje prihvaćaju ulazne i izlazne argumente.

Kako 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 pogreška.
= veličina(x);
ako (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
greška("Ulazni niz mora biti vektor')
kraj
y = zbroj(x)/duljina(x); % Stvarni izračun

Redak definicije funkcije govori MATLAB-u da je datoteka M funkcija i također specificira popis 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 upamtiti da svaka funkcija u sustavu MATLAB sadrži liniju definicije funkcije sličnu donjoj.

Naravno, tako moćan paket je potreban ne samo da bi olakšao život studentima. Trenutno je MATLAB, s jedne strane, vrlo popularan među stručnjacima u mnogim znanstvenim i inženjerskim područjima. S druge strane, mogućnost rada s velikim matricama čini MATLAB nezamjenjiv alat financijski analitičari, omogućujući vam da riješite mnogo više problema od, na primjer, dobro poznatog Excela. Više o tome možete pročitati u preglednom članku.

Nedostaci rada s MATLAB-om


Koje su poteškoće u radu s MATLAB-om? Postoji možda samo jedna poteškoća. Ali temeljni. Kako biste u potpunosti otkrili mogućnosti MATLAB-a i jednostavno 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 kad bismo htjeli, ne možemo reći da MATLAB jestjednostavan program. Ipak, nadamo se da će sve navedeno biti dovoljan argument da krenemo u njegov razvoj.

I konačno. Ako ne znate zašto je sve u vašem životu prošlo ovako, a ne drugačije, pitajte Matlab o tome. Samo se javi naredbeni redak"zašto zašto). On će odgovoriti. Probaj!

Sada znate mogućnosti Matlaba. U području obrazovanja MATLAB se često koristi u nastavi numeričkih metoda i linearne algebre. Mnogi studenti ne mogu bez njega pri obradi rezultata eksperimenta provedenog tijekom laboratorijskog rada. Kako biste brzo i učinkovito svladali osnove rada s MATLAB-om, uvijek nam se možete obratiti, koji smo u svakom trenutku spremni odgovoriti na svako vaše pitanje.

Rad iz MatLab naredbenog retka je težak ako morate unijeti puno 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 prikladan način izvršavanje MatLab naredbi je koristiti M-datoteke, u koji možete upisivati ​​naredbe, izvršavati ih sve odjednom ili u dijelovima, spremati ih u datoteku i koristiti u budućnosti. Uređivač M-datoteka dizajniran je za rad s M-datotekama. Pomoću ovog uređivača možete stvarati vlastite funkcije i pozivati ​​ih, uključujući i iz naredbenog retka.

Proširi izbornik Datoteka glavni MatLab prozor i u item Novi odaberite podstavku M-datoteka. Nova datoteka otvara se u prozoru uređivača M-datoteka.

Unesite naredbe u editoru koje dovode do konstrukcije dva grafikona u jednom grafičkom prozoru:

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

Sada spremite datoteku pod nazivom mydemo.m u poddirektorij raditi glavni MatLab direktorij odabirom Spremi kao Jelovnik Datoteka urednik. Za pokretanje svih naredbi sadržanih u datoteci odaberite Trčanje na jelovniku Debug. Na ekranu će se pojaviti grafički prozor Lik br.1, koji sadrži grafove funkcija. Ako odlučite iscrtati kosinus umjesto sinusa, jednostavno promijenite redak g = sin(x) u M-datoteci u g = cos(x) i ponovno pokrenite sve naredbe.

Napomena 1

Ako se prilikom tipkanja napravi pogreška i MatLab ne može prepoznati naredbu, tada se izvršavaju naredbe do pogrešno unesene, nakon čega se u prozoru naredbi prikazuje poruka o pogrešci.

Vrlo zgodna prilika pod uvjetom Uređivač M-datoteka, je izvršavanje nekih naredbi. Zatvorite grafički prozor Lik br.1. Odaberite mišem dok držite lijevi gumb, ili tipke sa strelicama dok držite pritisnutu tipku , prve četiri naredbe programa i izvršiti ih od točke Ocijenite Izbor Jelovnik Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon koji odgovara izvršenim naredbama. Upamtite da za izvršavanje nekih naredbi morate ih odabrati i pritisnuti . Izvršite preostale tri programske naredbe i pratite stanje grafičkog prozora. Vježbajte sami, upišite neke primjere iz prethodnih vježbi u M-file editor i pokrenite ih.

Moguće je isporučiti pojedinačne blokove M-datoteka komentari, koji se preskaču prilikom izvođenja, ali su prikladni pri radu s M-datotekom. Komentari u MatLabu počinju znakom postotka i automatski su označeni zelena, Na primjer:

% iscrtavanje sin(x) u zasebnom prozoru

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

Otvaranje postojeće M-datoteke vrši se pomoću stavke Otvoren Jelovnik Datoteka radno okruženje ili M-file editor. Također možete otvoriti datoteku u uređivaču koristeći MatLab naredbu za uređivanje iz naredbenog retka, navodeći naziv datoteke kao argument, na primjer:

Naredba edit bez argumenta stvara novu datoteku.
Svi primjeri koji se pojavljuju u ovom i sljedećem laboratorijski rad, najbolje je upisati i spremiti u M-datoteke, nadopunjavajući ih komentarima, te izvršiti iz uređivača M-datoteka. Korištenje numeričkih metoda i programiranje u MatLabu zahtijeva stvaranje M-datoteka.

2. Vrste M-datoteka

U MatLabu postoje dvije vrste M-datoteka: programska datoteka(Script M-Files) koji sadrži niz naredbi, i datoteka-funkcija(Function M-Files), koji opisuju korisnički definirane funkcije.

Stvorili ste program datoteke (proceduru datoteke) čitajući prethodni pododjeljak. Sve varijable deklarirane u datotečnom programu postaju dostupne u radnom okruženju nakon njegovog izvođenja. Izvršite program datoteke dat u pododjeljku 2.1 u uređivaču datoteka M i upišite whos naredbu u naredbeni redak za pregled sadržaja radnog okruženja. Opis varijabli pojavit će se u naredbenom prozoru:

"Tko
Naziv Veličina Bajtovi Klasa
f 1x71 568 dvostruko polje
g 1x71 568 dvostruko polje
x 1x71 568 dvostruko polje
Ukupni ukupni broj je 213 elemenata koji koriste 1704 bajta

Varijable definirane u jednom datotečnom programu mogu se koristiti u drugim datotečnim programima iu naredbama koje se izvode iz naredbenog retka. Izvršenje naredbi sadržanih u datotečnom programu provodi se na dva načina:

  • Iz uređivača M-datoteka kao što je gore opisano.
  • Iz naredbenog retka ili drugog programa za datoteke, koristeći naziv M datoteke kao naredbu.

Korištenje druge metode mnogo je praktičnije, pogotovo ako će se stvoreni program datoteke više puta koristiti u budućnosti. Zapravo, stvorena M-datoteka postaje naredba koju MatLab razumije. Zatvorite sve grafičke prozore i upišite mydemo u naredbeni redak, pojavit će se grafički prozor koji odgovara naredbama programske datoteke mydemo.m. Nakon unosa naredbe mydemo, MatLab izvodi sljedeće radnje.

  • Provjerava je li unesena naredba naziv neke od varijabli definiranih u vremenu izvođenja. Ako je varijabla unesena, prikazuje se njezina vrijednost.
  • Ako unos nije varijabla, tada MatLab traži unesenu naredbu među ugrađenim funkcijama. Ako se ispostavi da je naredba ugrađena funkcija, ona se izvršava.

Ako se ne unese niti varijabla niti ugrađena funkcija, tada MatLab počinje tražiti M-datoteku s nazivom naredbe i ekstenzijom m. Potraga počinje s trenutni imenik(Trenutni direktorij), ako M-datoteka nije pronađena u njemu, tada MatLab pregledava direktorije instalirane u staze pretraživanja(Staza). Pronađena M-datoteka se izvršava u MatLabu.

Ako nijedna od gornjih radnji nije rezultirala uspjehom, u naredbenom prozoru prikazuje se poruka, na primjer:

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

Tipično, M-datoteke su pohranjene u korisničkom direktoriju. Kako bi ih sustav MatLab pronašao, staze moraju biti postavljene tako da pokazuju lokaciju M-datoteka.

Napomena 2

Zadržati vlastite M-datoteke izvan glavnog MatLab direktorija slijedi iz dva razloga. Prvo, kada ponovno instalirate MatLab, datoteke koje se nalaze u poddirektorijima glavnog MatLab direktorija mogu biti uništene. Drugo, kada se pokrene MatLab, sve datoteke u poddirektoriju toolboxa smještaju se u memoriju računala na neki optimalan način kako bi se povećala izvedba. Ako ste napisali M-datoteku u ovaj direktorij, možete je koristiti tek nakon ponovnog pokretanja MatLaba.

3. Postavljanje staza

U MatLab verziji 6 .x određuju se trenutni imenik i staze pretraživanja. Postavljanje ovih svojstava vrši se pomoću odgovarajućih dijaloških okvira ili pomoću naredbi iz naredbenog retka.

Trenutačni direktorij određuje se u dijaloškom okviru Trenutno Imenik radno okruženje. Prozor je prisutan u radnom prostoru ako je opcija odabrana Trenutno Imenik Jelovnik Pogled radno okruženje.
Trenutačni imenik odabire se s popisa. Ako nije na popisu, možete ga dodati iz dijaloškog okvira pretraživati za Mapa poziva se klikom na gumb koji se nalazi desno od popisa. Sadržaj trenutnog direktorija prikazan je u tablici datoteka.

Putovi pretraživanja definirani su u dijaloškom okviru set Staza putni navigator, kojem se pristupa s točke set Staza Jelovnik Datoteka radno okruženje.

Za dodavanje kataloga kliknite gumb Dodati Mapa pretraživati za Staza odaberite željeni direktorij. Dodavanje direktorija sa svim njegovim poddirektorijima vrši se klikom na gumb Dodaj s podmapama. MATLAB traži staza. Redoslijed pretraživanja odgovara lokaciji staza u ovom polju; prvi se pretražuje direktorij čija se staza nalazi na vrhu popisa. Možete promijeniti redoslijed pretraživanja ili čak ukloniti put do imenika odabirom imenika u polju MATLAB traži staza i odredite njegov položaj pomoću sljedećih gumba:
Potez do Vrh - mjesto na vrhu liste;
Potez Gore - pomaknuti se za jednu poziciju;
Ukloniti - ukloniti s popisa;
Potez dolje - pomaknuti jednu poziciju prema dolje;
Potez do Dno - mjesto na dnu liste.

4. Naredbe za postavljanje staza.

Koraci za postavljanje staza u MatLabu 6 .x umnožavaju timovi. Trenutni direktorij postavlja se naredbom cd, na primjer cd c:\users\igor. Naredba cd, izdana bez argumenta, ispisuje stazu do trenutnog direktorija. Za postavljanje staza upotrijebite naredbu path, koja se poziva s dva argumenta:

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

Korištenje naredbe path bez argumenata uzrokuje prikaz popisa putova pretraživanja na zaslonu. Možete ukloniti stazu s popisa pomoću naredbe rmpath:

rmpath("c:\users\igor") uklanja stazu do direktorija c:\users\igor s popisa staza.

Napomena 3

Nemojte nepotrebno brisati putove direktorija, osobito one u čiju svrhu niste sigurni. Uklanjanje može dovesti do toga da neke od funkcija definiranih u MatLabu postanu nedostupne.

Primjer. Stvorite u korijenskom direktoriju diska D(ili bilo koji drugi disk ili direktorij gdje je studentima dopušteno kreirati vlastite direktorije) imenik s vašim prezimenom, na primjer, WORK_IVANOV, i tamo upišite M-datoteku mydemo.m pod imenom mydemo3.m. Postavite putove datoteka i demonstrirajte pristupačnost datoteka iz naredbenog retka. Navedite rezultate u svom laboratorijskom izvješću.

Mogućnost rješenja:

1. U korijenskom direktoriju diska D kreira se imenik WORK_IVANOV.
2. M-datoteka mydemo.m zapisuje se u direktorij WORK_IVANOV pod imenom mydemo3.m.
3. Otvara se dijaloški okvir set Staza Jelovnik Datoteka MatLab radno okruženje.
4. Gumb je pritisnut Dodati Mapa i u dijaloškom okviru koji se pojavi pretraživati za Staza odabran je imenik WORK_IVANOV.
5. Dodavanje direktorija sa svim njegovim poddirektorijima vrši se klikom na gumb Dodati s Podmape. U polju se pojavljuje put do dodanog imenika MATLAB traži staza.
6. Za pamćenje putanje pritisnite tipku Uštedjeti dijaloški okvir set Staza.
7. Ispravnost svih radnji provjerava se upisivanjem naredbe mydemo3 iz naredbenog retka. Na ekranu će se pojaviti grafički prozor.

5. Funkcije datoteke

Datotečni programi o kojima se gore govori su slijed MatLab naredbi; oni nemaju ulazne ili izlazne argumente. Za korištenje numeričkih metoda i programiranje vlastitih aplikacija u MatLabu, morate biti u mogućnosti kreirati funkcije datoteka koje proizvode potrebne radnje s ulaznim argumentima i vratiti rezultat u izlaznim argumentima. Ovaj pododjeljak pokriva nekoliko jednostavni primjeri, omogućujući vam da razumijete kako raditi s funkcijama datoteke. Datotečne funkcije, kao i datotečne procedure, kreiraju se u M-file editoru.

5.1. Datotečne funkcije s jednim ulaznim argumentom

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

Funkciju datoteke ima smisla napisati jednom, a zatim je pozvati gdje god ovu funkciju treba izračunati. Otvorite u M-file editoru nova datoteka i upišite tekst popisa

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

Riječ funkcija u prvom redu to specificira ovu datoteku sadrži funkcijsku datoteku. Prvi red je zaglavlje funkcije, koje kuće naziv funkcije te liste ulaznih i izlaznih argumenata. U primjeru prikazanom u popisu, naziv funkcije je myfun, jedan ulazni argument je x, a jedan izlazni argument je f. Nakon naslova dolazi funkcija tijela(u ovom primjeru se sastoji od jedne linije), gdje se izračunava njegova vrijednost. Važno je da se izračunata vrijednost upiše u f. Točka-zarez je uključen kako bi se spriječilo prikazivanje nepotrebnih informacija na ekranu.

Sada spremite datoteku u svoj radni direktorij. Imajte na umu da odabir stavke Uštedjeti ili Uštedjeti kao Jelovnik Datoteka uzrokuje pojavu dijaloškog okvira za spremanje datoteke u polju Datoteka Ime koji već sadrži naziv myfun. Nemojte ga mijenjati, spremite funkcijsku datoteku u datoteku s predloženim nazivom.

Sada se stvorena funkcija može koristiti na isti način kao ugrađeni sin, cos i drugi, na primjer iz naredbenog retka:

» y =myfun(1.3)
Y =
0.2600

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

Upozorenje

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

Funkcija datoteke navedena u popisu ima jedan značajan nedostatak. Pokušaj evaluacije vrijednosti funkcije iz niza rezultira pogreškom, a ne nizom vrijednosti, kao što se događa kod evaluacije ugrađenih funkcija.

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

Ako ste naučili kako raditi s nizovima, tada uklanjanje ovog nedostatka neće biti teško. Samo trebate koristiti operacije s elementima kada izračunavate vrijednost funkcije.
Izmijenite tijelo funkcije kao što je prikazano u sljedećem popisu (ne zaboravite spremiti 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 se upisuje rezultat poziva myfun funkcije, automatski postaje vektor tražene veličine.

Iscrtajte funkciju myfun na segmentu iz naredbenog retka ili pomoću programa za datoteke:

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

MatLab nudi još jedan način rada s funkcijama datoteka - korištenjem ih kao argumenata za neke naredbe. Na primjer, za konstruiranje grafikona, koristite posebna funkcija fplot, koji zamjenjuje gornju sekvencu naredbi. Kada pozivate fplot, naziv funkcije čiji graf želite iscrtati nalazi se u apostrofima, granice iscrtavanja su naznačene u vektoru retka od dva elementa

fplot("myfun", )

Iscrtajte myfun grafove koristeći plot i fplot na istim osima, koristeći hold on. Imajte na umu da grafikon konstruiran korištenjem fplot-a točnije odražava ponašanje funkcije, jer fplot sam odabire korak argumenta, smanjujući ga u područjima brze promjene u prikazanoj funkciji. Navedite rezultate u svom laboratorijskom izvješću.

5.2. Datotečne funkcije s više ulaznih argumenata

Pisanje funkcija datoteke s više ulaznih argumenata praktički se ne razlikuje od pisanja s jednim argumentom. Svi ulazni argumenti smješteni su na popis odvojen zarezima. Na primjer, sljedeći popis sadrži funkciju datoteke koja izračunava duljinu radijus vektora točke u trodimenzionalnom prostoru
Ispis funkcije datoteke s nekoliko argumenata

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

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

Uz funkcije s više ulaznih argumenata, MatLab vam omogućuje stvaranje funkcija koje vraćaju više vrijednosti, tj. ima više izlaznih argumenata.

5.3. Datotečne funkcije s više izlaznih argumenata

Datotečne funkcije s više izlaznih argumenata korisne su pri procjeni funkcija koje vraćaju više vrijednosti (u matematici se zovu vektorske funkcije). Izlazni argumenti pridodaju se popisu izlaznih argumenata, odvojeni zarezima, a sam popis nalazi se u uglatim 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.

Ispis funkcije za pretvaranje sekundi u sate, minute i sekunde

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

Kada pozivate funkcije datoteke s više izlaznih argumenata, rezultat treba zapisati u vektor odgovarajuće duljine:

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

6. Osnove programiranja u MatLabu

Datotečne funkcije i programska datoteka korišteni u prethodnim pododjeljcima su najjednostavniji primjeri programa. Sve MatLab naredbe sadržane u njima izvršavaju se sekvencijalno. Za rješavanje mnogo ozbiljnijih problema potrebno je pisati programe u kojima se akcije izvode ciklički ili se, ovisno o nekim uvjetima, izvršavaju različiti dijelovi programa. Pogledajmo glavne operatore koji određuju redoslijed izvršavanja MatLab naredbi. Operatori se mogu koristiti iu datotečnim procedurama iu funkcijama, što vam omogućuje stvaranje programa sa složenim razgranatim strukturama.

6.1. Operator petlje za

Operator je dizajniran za izvođenje određenog broja ponovljenih radnji. Najlakši za korištenje za operatera provodi se na sljedeći način:

za brojanje = početak:korak:konačno
MatLab naredbe
kraj

Ovdje je count varijabla petlje, start je njezina 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 završava čim broj postane veći od konačnog. Varijabla petlje može uzeti ne samo cjelobrojne vrijednosti, već i stvarne vrijednosti bilo kojeg znaka. Pogledajmo korištenje operatora for petlje koristeći neke tipične primjere.
Neka je potrebno izvesti familiju krivulja za , koja je određena funkcijom ovisno o parametru za vrijednosti parametara od -0,1 do 0,1.
Upišite tekst procedure datoteke u M-file editor i spremite je u datoteku FORdem1.m te pokrenite na izvršenje (iz M-file editora ili iz naredbenog retka tako da u nju upišete naredbu FORdem1 i pritisnete ):

% file program za konstruiranje obitelji krivulja
x = ;
za a = -0,1:0,02:0,1
y = exp(-a*x).*sin(x);
drži se
dijagram (x, y)
kraj

Napomena 4

Uređivač M-datoteke automatski predlaže postavljanje izjava unutar petlje, uvučeno od lijevog ruba. Koristite ovu značajku kako biste olakšali rad s programskim tekstom.

Kao rezultat izvođenja FORdem1 pojavit će se grafički prozor koji sadrži traženu familiju krivulja.

Napišite program datoteke za izračunavanje zbroja

Algoritam za izračunavanje zbroja koristi akumulaciju rezultata, tj. prvo je zbroj nula ( S= 0), zatim u varijablu k upisuje se jedinica i izračunava se 1/ k!, dodaje se S i ponovno se upisuje rezultat S. Unaprijediti k povećava se za jedan, a proces se nastavlja sve dok posljednji član ne bude 1/10!. Fordem2 file program prikazan u sljedećem popisu izračunava potrebnu količinu.

Ispis Fordem2 file programa za izračun iznosa

% file program za izračun iznosa
% 1/1!+1/2!+ … +1/10!

% Reset S za akumuliranje iznosa
S = 0;
% akumulacije iznosa u ciklusu
za k = 1:10
S = S + 1/faktorijel(k);
Kraj
% ispis rezultata u naredbeni prozor S

Upišite programsku datoteku u M-file editor, spremite je u trenutni direktorij u datoteku Fordem2.m i pokrenite. Rezultat će biti prikazan u naredbenom prozoru, jer u posljednjoj liniji programa datoteke S ne sadrži točku-zarez za prikaz vrijednosti varijable S

Imajte na umu da druge linije programa datoteke koje bi uzrokovale ispis međuvrijednosti na ekranu završavaju točkom i zarezom kako bi se potisnuo izlaz u naredbeni prozor.

Nije slučajno da su prva dva retka s komentarima odvojena praznim retkom od ostatka teksta programa. Oni su oni koji se prikazuju kada korisnik koristi naredbu za pomoć iz naredbenog retka za dobivanje informacija o tome što Fordem2 radi

>> pomoć Fordemu2
file program za izračunavanje zbroja
1/1!+1/2!+ … +1/10!

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

Razmotrimo problem izračunavanja zbroja, sličan prethodnom, ali ovisno o varijabli x

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

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

Prije pokretanja programa morate definirati varijablu x na naredbenom retku pomoću sljedećih naredbi:

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

Kao x može biti vektor ili matrica, budući da su u datotečnom programu Fordem2 korištene operacije element po element prilikom akumuliranja zbroja.

Prije pokretanja Fordema2 morate dodijeliti varijablu x neku vrijednost, a da biste izračunali zbroj, na primjer, iz petnaest članova, morat ćete promijeniti tekst programa datoteke. Mnogo je bolje napisati univerzalnu funkciju datoteke koja kao ulazne argumente uzima vrijednost x i gornja granica iznosa, a vikend - vrijednost iznosa S(x). Funkcijska datoteka sumN prikazana je na sljedećem popisu.

Ispis funkcije datoteke za izračunavanje zbroja

funkcija S = zbrojN(x, N)
% file funkcija za izračunavanje zbroja
% x/1!+x^2/2!+ … +x^N/N!
% upotrebe: S = zbrojN(x, N)

% reset S za akumuliranje iznosa
S = 0;
% akumulacije iznosa u ciklusu
za m = 1:1:N
S = S + x.^m/faktorijel(m);
kraj

Korisnik može saznati više o korištenju funkcije sumN upisivanjem pomoći sumN u naredbeni redak. Prva tri retka s komentarima bit će prikazana u naredbenom prozoru, odvojena od teksta funkcije datoteke praznim retkom.

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

For petlje mogu biti ugniježđene jedna u drugu, 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 omogućuje vam da zaobiđete ovo ograničenje.

6.2. Dok operator petlje

Razmotrimo primjer izračunavanja zbroja, sličan primjeru iz prethodnog odlomka. Morate pronaći zbroj niza za dano x(proširenje serije):
.

Zbroj se može akumulirati sve dok članovi nisu premali, recimo više modulo.For petlja ovdje nije dovoljna, jer je broj članova unaprijed nepoznat. Rješenje je koristiti while petlja, koji radi sve dok je zadovoljen uvjet petlje:

dok stanje petlje
MatLab naredbe
kraj

U ovom primjeru, uvjet petlje propisuje da je trenutni izraz veći od . Za pisanje ovog uvjeta koristite znak veće od (>). Tekst funkcije datoteke mysin, koja izračunava zbroj niza, dan je u sljedećem popisu.

Popis funkcije datoteke mysin koja izračunava sinus proširenjem niza

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

S = 0;
k = 0;
dok je abs(x.^(2*k+1)/faktorij(2*k+1))>1,0e-10
S = S + (-1)^k*x.^(2*k+1)/faktorijel(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.
Uvjet while petlje može sadržavati više od znaka >. Za postavljanje uvjeta za izvođenje ciklusa vrijede i druge relacijske operacije navedene u tablici 1. 1.

Tablica 1. Relacijske operacije

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

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

ili ekvivalentno s &

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

Logički operatori i primjeri njihove uporabe dati su u tablici. 2.

Tablica 2. Logički operatori

Operater

Pisanje u MatLab

Ekvivalentan unos

Logički "I"

i (x< 3, k == 4)

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

Logički "ILI"

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

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

Negacija "NE"

Pri računanju zbroja beskonačnog niza ima smisla ograničiti broj članova. Ako niz divergira jer njegovi članovi ne teže nuli, tada uvjet za malu vrijednost trenutnog člana možda nikada neće biti zadovoljen i program će krenuti u petlju. Izvršite zbrajanje dodavanjem ograničenja broja izraza u uvjet petlje while funkcije datoteke mysin:

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

ili u ekvivalentnom obliku

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

Organizacija ponovljenih radnji u obliku ciklusa čini program jednostavnim i razumljivim, ali često je potrebno izvršiti jedan ili drugi blok naredbi ovisno o određenim uvjetima, tj. koristiti grananje algoritma.

6.3. Uvjetna izjava if

Uvjetni operator ako omogućuje vam stvaranje algoritma grananja za izvršavanje naredbi, u kojem se, kada su ispunjeni određeni uvjeti, pokreće odgovarajući blok MatLab operatora ili naredbi.

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 za grananje.
Pretpostavimo da trebamo izračunati izraz . Pretpostavimo da izvodite izračun u domeni realnog broja i želite prikazati upozorenje da je rezultat složeni broj. Prije izračuna funkcije trebali biste provjeriti vrijednost argumenta x i prikazati upozorenje u prozoru s naredbama ako modul x ne prelazi jedinicu. Ovdje morate koristiti uvjetnu if naredbu, čija upotreba u najjednostavnijem slučaju izgleda ovako:

ako stanje
MatLab naredbe
kraj

Ako je uvjet zadovoljen, tada se implementiraju MatLab naredbe koje se nalaze između if i end, a ako uvjet nije ispunjen, tada se prelazi na naredbe koje se nalaze iza end. Prilikom pisanja uvjeta koriste se operacije dane u tablici. 1.

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

Ispis 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
% vrednovanje funkcije
f = sqrt(x^2-1);

Sada pozivanje Rfuna iz argumenta manjeg od jedan rezultirat će porukom upozorenja koja se prikazuje u prozoru naredbi:

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

Funkcija datoteke Rfun samo upozorava da je njezina vrijednost složena i svi izračuni s njom se nastavljaju. Ako složeni rezultat znači pogrešku u izračunu, trebali biste prestati izvršavati funkciju pomoću naredbe pogreške umjesto upozorenja.

6.4. Operator grananja if-elseif-else

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

ako je uvjet 1
MatLab naredbe
elseif uvjet 2
MatLab naredbe
elseif uvjet 3
MatLab naredbe
. . . . . . . . . . .
elseif uvjet N
MatLab naredbe
drugo
MatLab naredbe
kraj

Ovisno o provedbi jedne ili druge od N uvjetima, odgovarajuća grana programa se izvodi ako nijedan od N uvjetima, tada se implementiraju MatLab naredbe postavljene iza else. Nakon izvršenja bilo kojeg od grananja, operater izlazi. Grana može biti koliko god želite ili samo dvije. U slučaju dvije grane, koristi se završni else, a elseif se preskače. Izjava uvijek mora završiti s krajem.
Primjer korištenja naredbe if-elseif-else dan je u sljedećem popisu.

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

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 >= 3
upozorenje("a, veće ili jednako tri")
drugo
upozorenje("a je manje od tri i nije jednako nuli, jedan, dva")
kraj

6.5. Operater poslovnice sklopka

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

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

U dati operator Prvo se izračunava vrijednost switch_expression (to može biti skalarna numerička vrijednost ili znakovni niz). Ta se vrijednost zatim uspoređuje s vrijednostima: vrijednost 1, vrijednost 2, ..., vrijednost N, vrijednost N+1, vrijednost N+2, ..., vrijednost NM+1, vrijednost NM+2, ... ( koji također može biti numerički ili string) . Ako se pronađe podudaranje, izvršavaju se MatLab naredbe koje slijede nakon odgovarajuće ključne riječi case. Inače se izvršavaju MatLab naredbe koje se nalaze između ključnih riječi else i end.

Crte sa ključna riječ može biti koliko god želite slučajeva, ali mora postojati samo jedan redak s ključnom riječi else.

Nakon izvođenja bilo kojeg od grananja, prekidač izlazi, a vrijednosti navedene u drugim slučajevima se ne provjeravaju.

Upotreba prekidača ilustrirana je 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 pauza

Prilikom organiziranja cikličkih izračuna, treba paziti da se unutar petlje ne pojave greške. Na primjer, pretpostavimo da vam je dan niz x koji se sastoji od cijelih brojeva i želite generirati novi niz y prema pravilu y(i) = x(i+1)/x(i). Očito, problem se može riješiti korištenjem for petlje. Ali ako jedan od elemenata izvorni niz jednaka nuli, tada će dijeljenje rezultirati infom, a naknadni izračuni mogu biti beskorisni. Ova se situacija može spriječiti izlaskom iz petlje ako je trenutna vrijednost x(i) nula. Sljedeći fragment programa demonstrira korištenje naredbe break za prekid petlje:

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

Čim varijabla z postane 0, petlja se prekida.

Naredba break omogućuje vam rano prekidanje izvođenja for i while petlji. Izvan ovih ciklusa break izjava Ne radi.

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

). Među sredstvima Opća namjena, koji se koristi u kemometriji, zauzima posebno mjesto MatLab paket. Njegova je popularnost neobično velika. To je zato što je MatLab moćan i svestran za obradu višedimenzionalnih podataka. Sama struktura paketa čini ga praktičnim alatom za izvođenje matričnih izračuna. Raspon problema, čije se proučavanje može provesti korištenjem MatLaba, pokriva: matričnu analizu, obradu signala i slike, neuronske mreže i mnogi drugi. MatLab je open-source jezik visoke razine koji naprednim korisnicima omogućuje razumijevanje programiranih algoritama. Jednostavan ugrađeni programski jezik olakšava stvaranje vlastitih algoritama. Tijekom dugogodišnjeg korištenja MatLaba stvoren je ogroman broj funkcija i ToolBox-ova (paketa specijaliziranih alata). Najpopularniji je paket PLS ToolBox tvrtke Eigenvector Research, Inc.

1. Osnovne informacije

1.1. MatLab radno okruženje

Za pokretanje programa 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čnije sučelje za pristup mnogim elementima podrške

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

    alatna traka s gumbima i padajućim popisom;

    prozor s karticama Launch Pad i Radni prostor, iz kojeg možete pristupiti različitim modulima ToolBoxa i sadržajima radnog stola;

    prozor s karticama Povijest naredbi I Trenutni direktorij, namijenjen za pregled i ponovno pozivanje prethodno unesenih naredbi, kao i za postavljanje trenutnog imenika;

    naredbeni prozor koji sadrži prompt "unos" i trepćući okomiti kursor;

    statusna traka.

Ako je u radnom okruženju MatLab 6.x Ako neki prozori prikazani na slici nedostaju, trebali biste odabrati odgovarajuće stavke u izborniku Pogled: Naredbeni prozor, Povijest naredbi , Trenutni imenik , Radni prostor , Pokretna ploča .

Naredbe treba upisivati ​​u naredbeni prozor. Simbol » , koji označava prompt naredbenog retka, nije potrebno upisivati. Za pregled radnog područja prikladno je koristiti trake za pomicanje ili tipke Home, End za pomicanje lijevo ili desno te PageUp, PageDown za pomicanje gore ili dolje. Ako iznenada, nakon kretanja po radnom području naredbenog prozora, naredbeni redak s trepćućim kursorom nestane, samo pritisnite Enter.

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

1.2. Jednostavni izračuni

Upišite 1+2 u naredbeni redak i pritisnite Enter. Kao rezultat toga, MatLab naredbeni prozor prikazuje sljedeće:

Riža. 2 Grafički prikaz analize glavnih komponenti

Što je učinio program MatLab? Najprije je izračunala zbroj 1+2, zatim je rezultat zapisala u posebnu varijablu ans i prikazala njezinu vrijednost, jednaku 3, u naredbenom prozoru. Ispod odgovora nalazi se naredbeni redak s trepćućim kursorom, što pokazuje da je MatLab spreman za daljnje izračune. Možete upisati nove izraze u naredbeni redak i pronaći njihova značenja. Ako trebate nastaviti raditi s prethodnim izrazom, na primjer, izračunati (1+2)/4,5, tada je najlakši način koristiti postojeći rezultat koji je pohranjen u varijabli ans. Upišite ans/4.5 (kod unosa decimala se koristi točka) i pritisnite Unesi, ispada

Riža. 3 Grafički prikaz analize glavnih komponenti

1.3. Echo naredbe

Izvršenje svake naredbe u MatLabu prati eho. 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 točkom i zarezom. Na primjer

Riža. 4 Primjer unosa funkcije ScoresPCA

1.4. Očuvanje radne okoline. MAT datoteke

Najlakši način za spremanje svih vrijednosti varijabli je korištenje opcije Spremi radni prostor kao u izborniku Datoteka. Ovo će otvoriti dijaloški okvir Save Workspace Variables, u kojem morate navesti direktorij i naziv datoteke. Prema zadanim postavkama, predlaže se spremanje datoteke u radni poddirektorij glavnog MatLab direktorija. Program će rezultate svog rada spremiti u datoteku s nastavkom mat. Sada možete zatvoriti MatLab. U sljedećoj radnoj sesiji, da biste vratili vrijednosti varijabli, trebali biste otvoriti ovu spremljenu datoteku pomoću podstavke Otvori u izborniku Datoteka. Sada su sve varijable definirane u prošloj sesiji ponovno dostupne. Mogu se koristiti u novounesenim naredbama.

1.5. Časopis

MatLab ima mogućnost zapisivanja izvršnih naredbi i rezultata u tekstualnu datoteku (vođenje dnevnika rada), koja se zatim može čitati ili ispisati iz uređivača teksta. Za početak zapisivanja koristite naredbu dnevnik. Kao argument naredbe dnevnik trebate navesti naziv datoteke u koju će biti pohranjen radni dnevnik. Naredbe koje se dalje upisuju i rezultati njihovog izvršenja bit će zapisani 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 datoteku work-1.mat ;

    sprema zapisnik u datoteku exampl-1.txt u radni poddirektorij korijenskog direktorija MatLaba 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

Spremi posao-1
prestati

1.6. Sustav pomoći

MatLab prozor za pomoć pojavljuje se nakon odabira opcije Prozor za pomoć iz izbornika za pomoć ili klikom na gumb pitanja na alatnoj traci. Ista se operacija može izvesti upisivanjem naredbe helpwin. Za prikaz prozora pomoći za pojedinačne teme, upišite helpwin tema. Prozor pomoći pruža vam iste informacije kao i naredba pomoći, ali sučelje prozora pruža praktičniju vezu na druge teme pomoći. Koristeći adresu web stranice Math Works, možete pristupiti poslužitelju tvrtke i dobiti najviše 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. Za unos skalara dovoljno je dodijeliti njegovu vrijednost nekoj varijabli, npr

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 se elementi stavljaju u uglate zagrade. Dakle, da biste unijeli vektor reda 1x3, upotrijebite sljedeću naredbu u kojoj su elementi reda odvojeni razmacima ili zarezima.

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

Prikladno je unijeti male matrice izravno iz naredbenog retka. U ulazu, matricu možemo zamisliti kao vektor stupca, čiji je svaki element vektor retka.

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

2.2. Pristup elementima

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

Također možete odabrati blokove matrice pomoću dvotočke. Na primjer, odaberimo iz matrice P blok označen bojom

Ako trebate vidjeti varijable radnog okruženja, trebate upisati naredbu u naredbeni redak čiji .

Vidi se da radna okolina sadrži jedan skalar (p), četiri matrice (A, B, P, P1) i vektor red (z).

2.3. Osnovne matrične operacije

Pri korištenju matričnih operacija ne zaboravite da za zbrajanje ili oduzimanje matrice moraju biti iste veličine, a pri množenju broj stupaca prve matrice mora biti jednak broju redaka druge matrice. Zbrajanje i oduzimanje matrica, kao i brojeva i vektora, provodi se pomoću znakova plus i minus

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

Množenje matrice brojem također se vrši pomoću zvjezdice, a možete množiti brojem i s desne i s lijeve strane. Podizanje kvadratne matrice na cjelobrojnu potenciju vrši se pomoću operatora ^

Provjerite svoj rezultat množenjem matrice P sa samom sobom.

2.4. Izrada matrica posebnog tipa

Popunjavanje pravokutne matrice nulama izvodi ugrađena funkcija nule

Matrica identiteta se kreira pomoću funkcije oko

Kao rezultat pozivanja funkcije formira se matrica koja se sastoji od jedinica one

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

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

2.5. Matrični izračuni

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

Nalaz inverzna matrica provodi pomoću funkcije inv za kvadratne matrice

3. Integracija MatLaba i Excela

Integracija MatLaba i Excela omogućuje korisniku programa Excel pristup brojnim MatLab funkcijama za obradu podataka, razne izračune i vizualizaciju rezultata. Excllink.xla dodatak implementira ovo Excel proširenje. Za komunikaciju između MatLaba i Excela definirane su posebne funkcije.

3.1. Konfiguracija programa Excel

Prije postavljanja Excela da radi zajedno s MatLabom, trebali biste provjeriti je li Excel Link uključen instalirana verzija MatLab. U poddirektoriju exclink glavnog MatLab direktorija ili poddirektoriju toolbox trebala bi se nalaziti datoteka s dodatkom excllink.xla. Pokrenite Excel i odaberite Dodaci iz izbornika Alati. Pojavljuje se dijaloški okvir koji sadrži informacije o trenutno dostupnim dodacima. Pomoću gumba Browse navedite stazu do datoteke excllink.xla. Redak se pojavljuje na popisu dodataka u dijaloškom okviru Excel Link 2.0 za korištenje s MatLabom s postavljenom zastavom. Kliknite OK, potrebni dodatak je dodan u Excel.

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

Usklađeni rad Excela i MatLaba zahtijeva još nekoliko postavki, koje su u Excelu standardno prihvaćene (ali se mogu mijenjati). U izborniku Alati idite na Opcije, otvara se dijaloški okvir Mogućnosti. Odaberite karticu Općenito i provjerite je li oznaka stila reference R1C1 isključena, tj. ćelije su označene brojevima A1, A2 itd. Na kartici Uredi mora biti postavljena oznaka Premjesti odabir nakon unosa.

3.2. Razmjena podataka između MatLaba i Excela

Pokrenite Excel, provjerite jesu li sve potrebne postavke napravljene kao što je opisano u prethodnom odjeljku (MatLab mora biti zatvoren). Unesite matricu u ćelije A1 do C3, koristeći točku za odvajanje decimalnih mjesta kako to zahtijeva Excel.

Odaberite podatke ćelije na listu i kliknite gumb putmatrix, pojavljuje se Excel prozor s upozorenjem da MatLab ne radi. Pritisnite OK, pričekajte da se MatLab otvori.

Pojavljuje se dijaloški okvir programa Excel s linijom za unos za određivanje naziva varijable MatLab radnog stola u koju treba izvesti podatke iz odabranih ćelija programa Excel. Na primjer, unesite M i zatvorite prozor tipkom OK. Prebaciti na naredbeni prozor MatLab i provjerite je li varijabla M kreirana u radnom stolu koja sadrži niz tri puta tri:

Napravite neke operacije u MatLabu s matricom M, na primjer, invertirajte je.

Poziv inv Invertiranje matrice, kao i bilo koju drugu MatLab naredbu, možete to učiniti izravno iz Excela. Klikom na gumb evalstring koji se nalazi na panelu Excel Link pojavljuje se dijaloški okvir u čiji redak za unos treba upisati MatLab naredbu

IM=inv(M) .

Rezultat je sličan onom koji se dobiva izvođenjem naredbe u MatLab okruženju.

Vratite se u Excel, učinite ćeliju A5 trenutnom ćelijom i kliknite gumb getmatrix. Pojavljuje se dijaloški okvir s linijom za unos u kojem se traži da unesete naziv 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, za izvoz matrice u MatLab, trebali biste odabrati odgovarajuće ćelije Excel list, a za uvoz je dovoljno navesti jednu ćeliju, koja će biti gornji lijevi element uvezenog niza. Preostali elementi bit će upisani u ćelije radnog lista prema dimenzijama niza, prebrišući podatke sadržane u njima, stoga treba biti oprezan pri uvozu nizova.

Gornji pristup je najjednostavniji način razmjene informacija između aplikacija - izvorni podaci se nalaze u Excelu, zatim se izvoze u MatLab, tamo se na neki način obrađuju i rezultat se uvozi u Excel. Korisnik prenosi podatke pomoću gumba alatne trake programa Excel Link. Informacije se mogu prikazati u obliku matrice, tj. pravokutno područje radnog lista. Ćelije raspoređene u retku ili stupcu izvoze se u MatLab vektore redova i vektore stupaca. Uvoz vektora redova i vektora stupaca u Excel odvija se na sličan način.

4. Programiranje

4.1. M-datoteke

Rad iz MatLab naredbenog retka postaje težak ako morate unositi mnogo naredbi i često ih mijenjati. Vođenje dnevnika pomoću naredbe dnevnik i održavanje radnog okruženja malo olakšavaju rad. Najprikladniji način za izvršavanje grupa MatLab naredbi je korištenje M-datoteka, u koje možete upisivati ​​naredbe, izvršavati ih sve odjednom ili u dijelovima, spremati ih u datoteku i koristiti kasnije. Uređivač M-datoteka dizajniran je za rad s M-datotekama. Uz njegovu pomoć možete kreirati vlastite funkcije i pozvati ih, uključujući iz naredbenog prozora.

Proširite izbornik Datoteka glavnog prozora MatLaba iu stavci Novo odaberite podstavku M-datoteka. Nova datoteka se otvara u prozoru uređivača M-datoteka, koji je prikazan na slici.

U MatLabu postoje dvije vrste M-datoteka: programska datoteka ( Skripta M-Files), koji sadrži niz naredbi i funkcija datoteke, ( Funkcija M-Files), koji opisuju korisnički definirane funkcije.

4.2. Program za datoteke

Unesite naredbe u editoru koje dovode do konstrukcije dva grafikona na jednom grafičkom prozoru

Sada spremite datoteku pod nazivom mydemo.m u radni poddirektorij glavnog MatLab direktorija odabirom Save as iz izbornika File uređivača. Za pokretanje svih naredbi sadržanih u datoteci odaberite Pokreni iz izbornika Debug. Na ekranu će se pojaviti grafički prozor Slika 1, koji sadrži grafove funkcija.

Izlaz naredbi programa datoteke u prozor naredbi. Da biste potisnuli izlaz, naredbe morate završiti točkom i zarezom. Ako se prilikom tipkanja napravi pogreška i MatLab ne može prepoznati naredbu, tada se izvršavaju naredbe do pogrešno unesene, nakon čega se u prozoru naredbi prikazuje poruka o pogrešci.

Vrlo zgodna značajka koju pruža uređivač M-datoteka je izvršavanje nekih naredbi. Zatvorite grafički prozor Slika 1. Odaberite pomoću miša dok držite lijevu tipku ili pomoću tipki sa strelicama dok držite pritisnutu tipku Shift, prve četiri naredbe i izvršite ih iz stavke Tekst. Imajte na umu da je u grafičkom prozoru prikazan samo jedan grafikon koji odgovara izvršenim naredbama. Upamtite da za izvršavanje nekih naredbi, odaberite ih i pritisnite tipku F9.

Pojedinačni blokovi M-datoteke mogu se opremiti komentarima koji se preskaču tijekom izvođenja, ali su prikladni za rad s M-datotekom. Komentari počinju znakom postotka i automatski su označeni zelenom bojom, na primjer:

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

4.3. Funkcija datoteke

Datotečni program o kojem se gore govori samo je slijed MatLab naredbi; on nema ulazne ili izlazne argumente. Da biste koristili numeričke metode i kada programirate vlastite aplikacije u MatLabu, morate biti u mogućnosti kreirati funkcije datoteke koje izvode potrebne akcije s ulaznim argumentima i vraćaju rezultat akcije u izlaznim argumentima. Pogledajmo nekoliko jednostavnih primjera koji će vam pomoći da shvatite kako raditi s funkcijama datoteke.

Pri pretprocesiranju podataka iz multivarijantne kemometrijske analize često se koristi centriranje. Funkciju datoteke ima smisla napisati jednom, a zatim je pozvati gdje god je potrebno centriranje. Otvorite novu datoteku u uređivaču M-datoteka i upišite

Riječ funkcija u prvom retku označava da ova datoteka sadrži funkcijsku datoteku. Prvi redak je zaglavlje funkcije, koje sadrži naziv funkcije i popis ulaznih i izlaznih argumenata. U primjeru, naziv 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 se sastoji od dva retka), gdje se izračunava njezina vrijednost. Važno je da se izračunata vrijednost upiše u Xc. Ne zaboravite staviti točku i zarez kako biste spriječili prikazivanje nepotrebnih informacija na ekranu. Sada spremite datoteku u svoj radni direktorij. Imajte na umu da odabir Spremi ili Spremi kao iz izbornika Datoteka rezultira pojavljivanjem dijaloškog okvira Spremi datoteku, s poljem Naziv datoteke koje već sadrži centrirano ime. Nemojte ga mijenjati, spremite funkcijsku datoteku u datoteku s predloženim nazivom!

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

Možete napisati funkcijsku datoteku s nekoliko ulaznih argumenata koji se nalaze na popisu odvojenom zarezima. Također možete stvoriti funkcije koje vraćaju više vrijednosti. Da biste to učinili, izlazni argumenti se dodaju, odvojeni zarezima, na popis izlaznih argumenata, a sam popis se nalazi u uglatim zagradama. Dobar primjer je funkcija koja pretvara vrijeme navedeno u sekundama u sate, minute i sekunde.

Kada pozivate funkcije datoteke s više izlaznih argumenata, rezultat treba zapisati u vektor odgovarajuće duljine.

4.4 Izrada grafikona

MatLab ima brojne mogućnosti za grafička slika vektore i matrice, kao i za izradu komentara i ispis grafikona. Opišimo nekoliko važnih grafičkih funkcija.

Funkcija zemljište ima različite oblike povezane s ulaznim parametrima, na primjer plot(y) stvara linearni grafikon elemenata y u odnosu na njihove indekse. Ako su dva vektora dana kao argumenti, plot(x,y) će stvoriti grafikon y naspram x. Na primjer, da biste nacrtali funkciju sin u rasponu od 0 do 2π, učinite sljedeće

Program je izgradio grafikon ovisnosti koji se prikazuje u prozoru Slika 1

MatLab automatski dodjeljuje različite boje svakom dijagramu (osim ako to ne učini korisnik), omogućujući vam razlikovanje skupova podataka.

Tim drži se omogućuje vam dodavanje krivulja postojećem grafikonu. Funkcija podzaplet omogućuje prikaz više grafikona u jednom prozoru

4.5 Ispis grafikona

Stavka Ispis u izborniku Datoteka i naredba ispisati ispisati MatLab grafiku. Izbornik Ispis otvara dijaloški okvir koji vam omogućuje odabir uobičajenih standardnih opcija ispisa. Tim ispisati pruža veću fleksibilnost u ispisu i omogućuje kontrolu nad ispisom iz M-datoteka. Rezultat se može poslati izravno na zadani pisač ili spremiti u određenu datoteku.

5. Primjeri programa

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

5.1. Centriranje i skaliranje

Često je tijekom analize potrebno transformirati izvorne podatke. Najčešće korištene metode za transformaciju podataka su centriranje i skaliranje svake varijable prema njezinoj standardnoj devijaciji. Naveden je kod funkcije za centriranje matrice. Stoga je u nastavku prikazan samo kod funkcije koja mjerila podaci. Imajte na umu da izvorna 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 komprimiranja podataka je multivarijatna analiza je analiza glavnih komponenti (PCA). S matematičkog gledišta, PCA je dekompozicija izvorne matrice x, tj. njegovo predstavljanje kao produkt dviju matrica T I P

x = TP t+ E

Matrica T naziva se matrica rezultata, a matrica se naziva matrica reziduala.

Najjednostavniji način za pronalaženje matrica T I P- koristiti SVD dekompoziciju kroz standardnu ​​MatLab funkciju tzv svd .

funkcija = pcasvd(X)

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

%kraj pcasvd

5.3 PCA/NIPALS

Za izradu PCA računa i učitavanja koristi se rekurentni algoritam NIPALS koji izračunava jednu komponentu u svakom koraku. Prvo originalna matrica x se transformira (minimalno - centrira; vidi) i pretvara 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čuna sljedećeg ( a-th) komponente, pretpostavljamo ta=t I stra=str E a+1 = Eat str a na a+1.

Kod za algoritam NIPALS čitatelji mogu napisati sami; u ovom priručniku autori predstavljaju svoju verziju. Prilikom izračuna PCA možete unijeti broj glavnih komponenti (varijabla brojPC). Ako ne znate koliko je komponenti potrebno, trebali biste napisati = pcanipals (X) u naredbeni redak i tada će program postaviti broj komponenti jednak najmanjoj dimenziji originalne matrice x.

funkcija = pcanipals(X, brojPC)

% izračunavanje broja komponenti
= veličina(X); P=; T=;

Ako je lenfth(numberPC) > 0
pc = brojPC(1);
elseif (dužina(brojPC) == 0) & X_r< X_c
pc = X_r;
drugo
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 = cat(1, P, P1"); T = ;
kraj

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

5.4PLS1

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

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

Projekcija je konstruirana dosljedno - tako da se maksimizira korelacija između odgovarajućih vektora x-računi ta I Y-računi ua. Ako podatkovni blok Y uključuje višestruke odgovore (tj. K>1), mogu se konstruirati dvije projekcije početnih podataka – PLS1 i PLS2. U prvom slučaju za svaki od odgovora g k konstruiran je vlastiti projekcijski podprostor. Istovremeno, računi T (U) i opterećenja P (W, Q) ovise o tome koji se odgovor koristi. Ovaj pristup se zove PLS1. Za PLS2 metodu konstruira se samo jedan prostor projekcije koji je zajednički svim odgovorima.

Detaljan opis PLS metode dan je u ovoj knjizi.Za izradu PLS1 računa 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čuna 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 primijenite isti algoritam na njih, zamjenjujući indeks a na a+1.

Ovdje je kod 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);

% Kriterij konvergencije postavljen je vrlo visoko.
kri = 100;

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

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

% Kriterij konvergencije je norma u-uold podijeljena s 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 KemometrijaDodaj u opisano u priručniku Metode projekcije u Excelu.

5.5PLS2

Za PLS2 algoritam je sljedeći. Prvo originalne matrice x I Y transformiraju (makar - središte; 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čuna 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 i Fa +1 = F atq t i primijenite isti algoritam na njih, zamjenjujući indeks a na a+1.

Ovdje je šifra, koja je također posuđena 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, a SS zbrojeve
% kvadrata za reziduale.
% a je broj komponenti.
%
% Za komponente: koristite sve naredbe za kraj.

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

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

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

% Spremite vektore u matrice.
W = ;
T = ;
U = ;
Q = ;
P = ;
kraj;

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

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

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

% Izračunajte udio upotrijebljenog SS-a.
= veličina(SS);
tt = (SS * dijag(SS(1,:).^(-1)) - jedinice(a, b)) * (-1)

%Kraj plsr

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

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

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

Zaključak

MatLab je vrlo popularan alat za analizu podataka. Prema anketi, koristi ga čak trećina svih istraživača, dok program Unsrambler koristi samo 16% znanstvenika. Glavni nedostatak MatLaba je njegova visoka cijena. Osim toga, MatLab je dobar za rutinske izračune. Nedostatak interaktivnosti čini ga nezgodnim pri izvođenju pretraživanja, istraživačkih izračuna za nove, neistražene skupove podataka.

upute

MATLAB okruženje ima nekoliko načina rada. Najjednostavniji je unos naredbi izravno u naredbeni prozor ( Naredbeni prozor).
Ako nije vidljiv u sučelju programa, morate ga otvoriti. Prozor s naredbama možete pronaći kroz izbornik Radna površina -> Naredbeni prozor.
Na primjer, unesite naredbe "x =; y = sqrt(x); plot(y);" u ovaj prozor jednu za drugom i pritisnite tipku "Enter" ( Unesi). Program će trenutno kreirati varijable X, kreirati varijablu Y i izračunati njezine vrijednosti​​​za zadanu funkciju, a zatim izgraditi njezin graf.
Strelicama tipkovnice “gore” i “dolje” u naredbenom prozoru možemo prelaziti između svih unesenih naredbi, po potrebi ih odmah mijenjati i ponovnim pritiskom na Enter slati u MATLAB okruženje na izvršenje.
Udobno? nedvojbeno. I što je najvažnije - vrlo brzo. Sve te radnje traju nekoliko sekundi.
Ali što ako trebate složeniju organizaciju tima? Ako trebate cikličko izvršavanje nekih naredbi? Ručno unošenje naredbi jednu po jednu i zatim dugotrajno pretraživanje povijesti može biti prilično zamorno.

Kako bismo olakšali život znanstveniku, inženjeru ili studentu, prozor za uređivanje ( Urednik). Otvorimo prozor uređivača kroz izbornik Radna površina -> Urednik.
Ovdje možete kreirati nove varijable, graditi grafikone, pisati programe (skripte), kreirati komponente za razmjenu s drugim okruženjima, kreirati aplikacije s korisničkim sučeljem (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 jelovnik Datoteka i izabrati Novi -> M-datoteka.

U polje uređivača ćemo pisati jednostavan program, ali zakomplicirajmo malo:

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

Dodali smo drugu funkciju i prikazat ćemo dva grafikona jedan pored drugog. Znak postotka označava komentare u MATLAB-u.
Ne zaboravite spremiti program. Standardna ekstenzija datoteke za program Matlab je *.m.
Sada zatvorite editor i prozor s grafikonom koji smo ranije napravili.

Vratite se u naredbeni prozor.
Možete obrisati povijest naredbi kako nam nepotrebne informacije ne bi smetale. Da biste to učinili, desnom tipkom miša kliknite polje za unos naredbe i odaberite stavku u kontekstnom izborniku koji se otvori Očisti prozor s naredbama.
Još uvijek imamo varijablu X iz prethodnog eksperimenta; nismo je promijenili niti izbrisali. Stoga možete odmah unijeti u naredbeni prozor:
crtanje_plot(x);
Vidjet ćete da će MATLAB pročitati našu funkciju iz datoteke i izvršiti je, crtajući graf.

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

4.1. Redoslijed definiranja i pozivanja funkcija

U prvom poglavlju ovog priručnika prikazano je kako definirati vlastite funkcije u programu MatLab. U ovom odjeljku usredotočit ćemo se na više Detaljan opis programiranje korisničkih funkcija.

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

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

gdje 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:

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

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

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

Ova se funkcija 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 točku u dvodimenzionalnom prostoru. U ovom slučaju, prilikom pozivanja funkcije, vrijednosti koordinata točaka mogu se proslijediti na ovaj način:

PravokutnikHW(, );

Ako programer pogriješi i prilikom poziva funkcije proslijedi krivu veličinu vektora, na primjer, ovako

PravokutnikHW(0, );

tada će izvršenje funkcije završiti s greškom i zaustavit će se izvršenje cijelog algoritma. Kako biste izbjegli ovu situaciju, MatLab vam omogućuje provjeru točnosti proslijeđenih argumenata i ispravno prekidanje funkcije bez zaustavljanja cijelog algoritma. Sljedeći primjer zapisa funkcije pokazuje kako takva provjera funkcionira:

funkcija = PravokutnikHW(P1, P2)
ako duljina (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 netočnim parametrima, funkcija će prikazati poruku o pogrešci u MatLab naredbenom prozoru, ali će program nastaviti s radom.

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

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

funkcija = PravokutnikHW(P1, P2)
ako je nargin ~= 2
error("Loš broj parametara");
kraj
ako je nargout ~= 2
pogreška("Moraju biti 2 povratne vrijednosti");
kraj
ako duljina (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 pokrenut će se u sljedećim situacijama:

PravokutnikHW(); % Loš broj parametara
= PravokutnikHW(, ); % Mora biti 2 povratak
% vrijednosti
= PravokutnikHW(0, ); % Loš 1. ili 2. parametar

Najbolji članci na temu