Kako postaviti pametne telefone i računala. Informativni portal

Varijable sustava MATLAB. Varijable u MATLAB-u

Kao i drugi programski jezici, MATLAB ima mogućnost rada s varijablama. Varijable su imenovani objekti koji pohranjuju neku vrstu podataka. Varijable mogu biti numeričke, vektorske ili simboličke, ovisno o vrsti podataka koje pohranjuju. Varijabla ima naziv tzv identifikator... Podaci mogu promijeniti svoje vrijednosti, identifikator ostaje isti.

Prilikom odabira naziva varijable vodite se sljedećim pravilima.

■ Ime varijable može sadržavati bilo koji broj znakova, ali samo prva 63 znaka se pamte i identificiraju (ovaj broj kao najveći mogući broj znakova u nazivu varijable vraća funkcija lengthmax imena).

■ Ime varijable uvijek mora početi slovom i može sadržavati bilo koju kombinaciju slova, brojeva i podvlaka (_).

■ Razmaci i posebni znakovi (kao što su +, -, *, /) nisu dopušteni u nazivima varijabli.

■ Ime varijable ne smije biti isto kao ime drugih MATLAB varijabli, funkcija, procedura i varijabli sustava.

■ Nazivi varijabli razlikuju velika i mala slova (tj. Abc i abc su različita imena).

Prije upotrebe bilo koje varijable, možete provjeriti je li ime koje odaberete valjano. Za to se koristi sljedeća funkcija:

isvarname ime_varijable

gdje ime_varijable je naziv varijable za koju želite biti sigurni da je točna. Ova funkcija vraća 1 ako je ime valjano, 0 u suprotnom. Na primjer, ime 12_abc_3 8 nije valjano jer počinje znamenkom, pa ova funkcija vraća 0.

>> isvarname 12_abc_3 8

U MATLAB-u postoji nekoliko rezerviranih imena varijabli. Varijable s takvim nazivima se nazivaju sustavno. Postavljaju se nakon pokretanja sustava i mogu se koristiti u matematičkim izrazima. Varijable sustava mogu se nadjačati, t.j. mogu im se po potrebi dodijeliti različite vrijednosti.

Sljedeće su glavne varijable MATLAB sustava.

■ i, j je imaginarna jedinica (kvadratni korijen od -1) koja se koristi za određivanje imaginarnog dijela kompleksnih brojeva.

■ pi - broj π (π = 3,141592653589793).

■ eps - netočnost operacija s brojevima s pomičnim zarezom, t.j. interval između 1,0 i sljedećeg najbližeg broja s pomičnim zarezom (jednako 2,2204e-16, ili 2 -52).

■ ans je rezultat posljednje nepotpisane operacije dodjele.

■ inf - oznaka strojne beskonačnosti.

■ NaN - skraćenica za riječi Ne Broj (ne broj), koji označava nedefinirani rezultat (kao što je 0/0 ili Inf / Inf).

■ realmin - minimalni realni broj po modulu (2 .22 51e-308, ili 2 -1022).

■ realmax - maksimalni realni broj po modulu (1,7977e + 3 08, ili 2 1023).

U MATLAB-u, za razliku od drugih programskih jezika, tipovi varijabli nisu deklarirani unaprijed. Dovoljno je varijabli dodijeliti vrijednost određene vrste. Na primjer, za dodjelu varijabli a vrijednost 5, unesite izraz u naredbeni redak a= 5 (kao operator dodjele vrijedi znak jednakosti) i pritisnite , nakon čega će program odmah prikazati vrijednost ove varijable.

>> a=5

Kao što možete vidjeti, u ovom slučaju, MATLAB program ne mora dodijeliti varijablu ans da predstavlja rezultat, budući da je varijabla postavljena a.

Ako ne želite da se vrijednost odmah prikaže na ekranu nakon dodjele vrijednosti varijabli, završite dodjelu točkom-zarezom (;) i tek tada pritisnite .

Točka-zarez seže izvan operacija dodjele. Ako navedete ovaj znak na kraju bilo kojeg izraza unesenog u naredbeni redak, tada se rezultat njegove evaluacije neće odmah prikazati na ekranu. Umjesto toga, pojavljuje se upit za sljedeću naredbu ("). Varijabli se može dodijeliti broj, aritmetički izraz, niz znakova (ograđen apostrofima) ili znakovni izraz.

Da biste poboljšali učinkovitost programa, možda ćete morati izbrisati iz memorije računala sve varijable koje se koriste u trenutnoj sesiji ili samo neke od njih. Za brisanje memorije varijabli u MATLAB-u koristi se funkcija clear koja ima sintaksu:

· Clear - uništavanje svih varijabli;

· Clear x - uništenje varijable x;

Clear a b c - uništenje obitelji varijabli ( argumenti naredbe clear odmah iza naziva naredbe i odvojeni su razmacima).

Za brisanje cijelog sadržaja MATLAB naredbenog prozora koristite naredbu c1c. Nakon odabira ove naredbe, izbrisat će se samo podaci uneseni u naredbeni prozor, ali to neće utjecati na vrijednosti varijabli radnog prostora. To se može provjeriti upisivanjem u naredbeni redak imena bilo koje od varijabli navedenih u trenutnoj sesiji.

Kraj rada -

Ova tema pripada odjeljku:

Posebni likovi i njihova namjena

Jezik komunikacije s matlabom .. simboli i jezični operatori .. jezični operatori su simboli za operacije nad podacima koji se u matlabu nazivaju operandi svi se primjenjuju općeprihvaćeni ..

Ako vam je potreban dodatni materijal na ovu temu, ili niste pronašli ono što ste tražili, preporučujemo korištenje pretraživanja u našoj bazi radova:

Što ćemo s primljenim materijalom:

Ako vam se ovaj materijal pokazao korisnim, možete ga spremiti na svoju stranicu na društvenim mrežama:

Kao iu svim programskim jezicima, MatLab pruža mogućnost rada s varijablama. Štoviše, korisnik ne mora brinuti o tome koje će vrijednosti varijabla uzeti (složene, realne ili samo cijele brojeve). Da bi se varijabli z dodijelila npr. vrijednost 1,45, dovoljno je u naredbeni redak napisati z = 1,45, a MatLab će odmah prikazati vrijednost z:

»Z = 1,45
z =
1.4500

Ovdje se koristi znak jednakosti kao operator dodjele.Često nije baš zgodno dobiti rezultat nakon svakog zadatka. Stoga MatLab pruža mogućnost prekidanja operatora dodjele točkom i zarezom kako bi se potisnuo izlaz rezultata u naredbeni prozor. Naziv varijable može biti bilo koji niz slova i brojeva bez razmaka, koji počinje slovom. Mala i velika slova se razlikuju, na primjer MZ i mz su dvije različite varijable. Broj znakova koje MatLab percipira u nazivu varijable je 31.
Kao vježbu korištenja varijabli, pronađite značenje sljedećeg izraza:

Upišite sljedeći slijed naredbi (obratite pažnju na točku i zarez u prve dvije izjave o dodjeli da biste suzbili prikaz međuvrijednosti na ekranu):

"X = sin (1,3 * pi) / log (3,4);
»Y = sqrt (tan (2,75) / tanh (2,75));
» z= (x + y) / (x-y)
Z =
0,0243 - 0,9997i

Posljednji izraz dodjele ne završava točkom i zarezom kako bi se odmah dobila vrijednost izvornog izraza. Naravno, možete unijeti cijelu formulu odjednom i dobiti isti rezultat:

»(Sin (1,3 * pi) / log (3,4) + sqrt (tan (2,75) / tanh (2,75))) /…
(sin (1,3 * pi) / log (3,4) -sqrt (tan (2,75) / tanh (2,75)))) ans =
0,0243 - 0,9997i

Primijetite koliko je prvi unos kompaktniji i jasniji od drugog! U drugoj verziji formula nije stajala u naredbenom prozoru na jednom retku, već je morala biti napisana u dva retka, za što su tri točke stavljene na kraj prvog retka.

Za unos dugih formula ili naredbi u naredbeni redak, stavite tri točke (u nizu, bez razmaka), pritisnite tipku i nastavite upisivati ​​formulu u sljedećem retku. Na ovaj način možete postaviti izraz u više redaka. MatLab će procijeniti cijeli izraz ili izvršiti naredbu nakon što kliknete na u zadnjem retku (u kojem nema tri uzastopne točke).

MatLab pamti vrijednosti svih varijabli definiranih tijekom sesije. Ako bi se nakon unosa gornjeg primjera izvršili još neki izračuni pa je postalo potrebno ispisati vrijednost NS, onda biste trebali samo upisati NS u naredbenom retku i pritisnite :

"X
-0.6611

Gore definirane varijable mogu se koristiti i u drugim formulama. Na primjer, ako sada trebate procijeniti izraz

,

zatim samo unesite sljedeću naredbu:

"(X-y) ^ (3/2)
ans =
-0,8139 + 0,3547i

Pozivanje funkcija u MatLabu dovoljno je fleksibilno. Na primjer, možete izračunati e3.5 pozivanjem funkcije exp iz naredbenog retka:

»Exp (3.5)
ans =
33.1155

Drugi način je korištenje operatora dodjele:

»T = exp (3.5)
t =
33.1155

Pretpostavimo da je dio proračuna s varijablama obavljen, a ostatak će se morati dovršiti tijekom sljedeće sesije rada s MatLabom. U tom slučaju, morat ćete spremiti varijable definirane u proizvodnom okruženju.

Pregledanje varijabli

Kada radite s dovoljno velikim brojem varijabli, morate znati koje su varijable već korištene, a koje nisu. U tu svrhu koristi se naredba who koja u naredbenom prozoru MatLab prikazuje popis korištenih varijabli:

"Tko
Vaše varijable su:
al a2 a3

Naredba whos omogućuje vam da dobijete detaljnije informacije o varijablama u obliku tablice:

Ukupni zbroj je 3 elementa koji koriste 24 bajta

Prvi stupac, Ime, sadrži nazive korištenih varijabli. Ono što je sadržano u stupcu Veličina bitno je određeno osnovnim principom rada MatLaba. MatLab softver svi podaci prikazani su u obliku nizova. Varijable al, a2 i a3 su dvodimenzionalni nizovi jedan po jedan. Svaka od varijabli ima osam bajtova, kao što je naznačeno u stupcu Bytes. Konačno, zadnji stupac klase označava tip varijabli - dvostruki niz, tj. niz brojeva dvostruke preciznosti. Redak ispod tablice kaže da su na kraju tri elementa, t.j. varijable su dvadeset i četiri bajta. Ispada da predstavljanje svih podataka u MatLabu u obliku nizova daje određene prednosti.
Da biste oslobodili sve varijable iz memorije, koristite naredbu clear. Ako u argumentima navedete popis varijabli (odvojenih razmakom), tada će samo one biti oslobođene memorije, na primjer:

»Očisti al a3
"Tko
Vaše varijable su:
a2

Počevši od verzije 6.0 pojavio se zgodan alat za pregled varijabli radnog okruženja - the Radni prostor, za prebacivanje na koje treba aktivirati istoimenu oznaku. Ovaj prozor sadrži tablicu sličnu onoj koju prikazuje naredba who. Dvostruki klik na redak koji odgovara svakoj varijabli prikazuje njezin sadržaj u zasebnom prozoru, što je posebno korisno pri radu s nizovima. Alatna traka prozora Radni prostor omogućuje vam uklanjanje nepotrebnih varijabli, spremanje i otvaranje radnog okruženja.

U MATLAB-u postoji posebna vrsta varijabli čija se vrijednost, s izuzetkom varijable ans, ne može mijenjati. Te se varijable nazivaju varijable sustava. Dizajnirani su za učinkovitiji rad u izračunima, kao i za prikaz poruka sustava kada je korisnik pogrešno formulirao problem. U tablici su navedene varijable sustava korištene u MATLAB-u.

Zapis varijable sustava MATLAB

Kompleksni brojevi

U MATLAB sustavu kompleksni brojevi, kao i realni, su dvostrukog tipa. Stoga nema potrebe za zasebnim označavanjem kako bi se rad označio složenim brojevima. Snimanje se vrši na sljedeći način: 3 + 7i; -7,1 + 0,831E + 2 * i; 5-3j. Primjer pokazuje da se jedno od slova može koristiti za označavanje imaginarne jedinice: i ili j. MATLAB koristi slovo i prema zadanim postavkama .

Ispod je primjer izračunavanja kvadratnog korijena od -1

>> b = sqrt (a)

Za kompleksne brojeve možete koristiti iste funkcije kao i za realne brojeve, osim u očitim slučajevima kada funkcija ne može imati složen argument. Na primjer, funkcija rem (x, y) izračunava ostatak x podijeljen s y, pa će korištenje kompleksnog broja kao argumenta rezultirati pogreškom:

>> a = 2 + 3 * i;

>> rem (a, 3)

Pogreška pri korištenju ==> rem

Argumenti moraju biti stvarni.

Uz to, postoji i niz funkcija koje se odnose samo na složene varijable.

Funkcije kompleksnih varijabli

Na primjer:

>> trbušnjaci (2 + 3i)

>> conj (2 + 3i)

2,0000 - 3,0000i

>> isreal (x)

U posljednjem primjeru, isreal funkcija je vratila broj 0, jer varijabla x nije važeća.

Oda23 ("lotka2" ,,); plot (t, y) Globalna naredba proglašava varijable ALPHA i BETA globalnim i stoga dostupne u funkciji lotka.m. Tako se mogu mijenjati iz naredbenog retka, a nova rješenja će se dobiti bez uređivanja lotka.m M-datoteke. Za rad s globalnim varijablama, morate: deklarirati varijablu kao globalnu u svakoj M-funkciji kojoj je potrebna ova varijabla. Da bi varijabla radnog prostora bila globalna, morate je deklarirati kao globalnu iz naredbenog retka; u svakoj funkciji koristite globalnu naredbu prije prvog pojavljivanja varijable; preporuča se korištenje globalne naredbe na početku M-datoteke. Nazivi globalnih varijabli obično su duži i značajniji od naziva lokalnih varijabli i često se pišu velikim slovima. Ovo je izborno, ali se preporučuje za održavanje čitljivosti u MATLAB kodu i za smanjenje vjerojatnosti slučajnog redefiniranja globalne varijable. Posebne varijable. Neke M-funkcije vraćaju posebne varijable koje igraju važnu ulogu u MATLAB okruženju: Zadnji rezultat; ako izlazna varijabla nije specificirana ans, tada MATLAB koristi varijablu ans. Preciznost s pomičnim zarezom; je određen eps je duljina mantise i za PC eps = 2,220446049250313e-016 Maksimalni broj s pomičnim zarezom, predstavljen mojim realmaxom u računalu; za PC realmax = 1,797693134862316e + 308. Najmanji broj s pomičnim zarezom koji je realmin moj na računalu; za PC realmin = 2,225073858507202e-308. Posebna varijabla za p: pi pi = 3,141592653589793e + 000. 70 Posebne varijable za imaginarnu i, j jedinicu Posebna varijabla za simbol beskonačnosti? Posebna varijabla za označavanje nedefinirane vrijednosti - rezultat operacija poput: 0/0, inf / inf. Posebna varijabla za označavanje vrste računala koje računalo koristi; za PC - PCWIN. Posebna varijabla za označavanje broja flopova operacija s pomičnim zarezom. Posebna varijabla za pohranjivanje broja verzije korištene verzije sustava MATLAB. Odgovarajuće M-funkcije koje generiraju ove posebne varijable nalaze se u imeniku elmat i podržane su online pomoći. Tipovi podataka MATLAB definira šest osnovnih tipova podataka, od kojih je svaki višedimenzionalni niz. Šest klasa su double, char, sparse, uint8, cell i struct. Dvodimenzionalne verzije ovih nizova nazivaju se matrice, po čemu je MATLAB dobio ime, MATRIX LAB. Dijagram objekta MATLAB sustava koji pripada jednoj od klasa je sljedeći (slika 3.1): Slika 3.1 71 Najčešće ćete morati raditi samo s dvije od ovih vrsta podataka: nizom brojeva dvostruke preciznosti (double) i niz znakova (char) ili samo niz. To je zbog činjenice da se svi izračuni u MATLAB-u izvode s dvostrukom preciznošću i većina funkcija radi s nizovima brojeva ili nizova dvostruke preciznosti. Druge vrste podataka namijenjene su posebnim aplikacijama kao što su rad s rijetkim matricama (sparse), obrada slika (uint8), rad s nizovima velikih dimenzija (ćelije i strukture). Tip varijable ne može se postaviti na numerički ili niz. Ti se tipovi nazivaju virtualnim tipovima i koriste se samo za grupiranje varijabli koje imaju zajedničke atribute. Tip uint8 služi za učinkovito pohranjivanje podataka u memoriju. Na ovaj tip podataka mogu se primijeniti samo osnovne operacije indeksiranja i promjene veličine, ali se ne može izvesti matematička operacija. Da biste to učinili, takvi se nizovi moraju pretvoriti u dvostruki tip. Izrada vlastitih tipova i dodavanje metoda za ugrađene tipove. Tablica u nastavku sadrži sedmi tip podataka, UserObject. MATLAB vam omogućuje stvaranje vlastitih tipova podataka i rad s njima po analogiji s ugrađenim tipovima. Za ugrađene tipove podataka možete nadjačati metodu na isti način kao i za objekt. Na primjer, da biste definirali operaciju sortiranja za niz tipa uint8, morate stvoriti metodu (sort.m ili sort.mex) i smjestiti je u poseban direktorij @ uint8. Sljedeća tablica detaljnije opisuje tipove podataka. Primjer klase Opis Numerički niz dvostruke preciznosti (ovo je najčešći [1 2; 3 4] Dvostruki nary tip varijable 5 + 6i u nizu znakova MATLAB 72 (svaki znak je dugačak 16 bita), koji se često naziva redak Char "Hi". precizna rijetka matrica (samo 2D). Rijetka struktura se koristi za pohranjivanje matrica s malim brojem unosa koji nisu nula, što omogućuje Sparse Speyeu (5) da koristi samo djelić memorije potrebne za pohranu pune matrice." - Generičke matrice zahtijevaju korištenje posebnih metoda za rješavanje problema Niz ćelija Elementi ovog niza sadrže druge nizove. Nizovi ćelija omogućuju Cell (17 "zdravo" oko (2)) da kombinira povezane podatke, moguće različitih veličina, u jednu strukturu. Niz zapisa. Sadrži nazive polja. A.dan = 12; A.color = Sama polja mogu sadržavati nizove. Kao Struktura "Red"; A.mat = nizovi ćelija, nizovi magija (3); zapisi kombiniraju povezane podatke i informacije o njima. 73 Niz 8-bitnih neoznačenih cijelih brojeva. Omogućuje vam pohranjivanje cijelih brojeva u rasponu od 0 do 255 u 1/8 memorije koju zahtijeva Uint8 Uint8 (magija (3)) za niz dvostruke preciznosti. Za ove nizove nisu definirane matematičke operacije. Tip podataka definiran od strane UserObject inline ("sin (x)") korisnički definiran. Opis dijagrama. Spojne linije u dijagramu (slika 3.1) određuju pripadnost određene vrste podataka jednoj ili više klasa. Primjer. Rijetka matrica također ima dvostruke i numeričke tipove. Operatori isa (S ", rijetki") isa (S ", double") isa (S ", numerički") vraćaju vrijednosti 1 (true), odnosno, S je numerička rijetka matrica dvostruke preciznosti. Imajte na umu da je vrsta niza na vrhu grafikona. To znači da su svi MATLAB podaci nizovi. Svakom tipu podataka može se dodijeliti vlastite funkcije i operatori obrade, ili drugim riječima, metode. Podređene vrste podataka ispod nadređenog u dijagramu također su podržane od strane roditeljskih metoda. Stoga je niz tipa double podržan metodama koje se koriste za numerički tip. Neke od ovih metoda prikazane su u tablici: Metoda klase 74 Izračun veličine, duljine, dimenzije (ndims), spajanje nizova (), transponiranje, indeksiranje višedimenzionalnog niza (podindeks), nadjačavanje (preoblikovanje) i permutiranje dimenzija višedimenzionalnog niz. Indeksiranje pomoću vitičastih zagrada - Niz ćelija (e1, ..., en) i odvajanje stavki popisa zarezima. Funkcije niza (strcmp, niži), automatska konverzija znakova niza u tip double za korištenje metoda double klase. Aritmetičke i logičke operacije, matematičke funkcije, funkcije iz matrica. Pretraživanje (pronalaženje), obrada kompleksnih brojeva (real, slika), generiranje vektora, odabir Numeričkih redaka, stupaca, podblokova niza, proširenje skalara. Rijetke operacije na rijetkim matricama. Niz zapisa Pristup sadržaju polja .field (razdjelnik strukture stavki popisa je zarez). Operacija pohrane (najčešće se koristi s alatom za obradu slike Uint8 RFP) UserObject Korisnički definirana prazna polja. Ranije verzije MATLAB-a dopuštale su jedan oblik praznog niza 0x0, označen kao. MATLAB podržava nizove u kojima je jedna, ali ne i sve dimenzije nula, odnosno nizove dimenzija 1x0, 10x0x20 ili definirane kao prazne. Uglaste zagrade i dalje predstavljaju niz 0x0. Prazni nizovi različitih veličina mogu se stvoriti pomoću funkcija nula, jedinica, rand ili oka. Na primjer, da biste formirali prazan niz veličine 0x5, možete koristiti operator dodjeljivanja E = nule (0,5). 75 Glavna svrha praznih nizova je da će svaka operacija koja je definirana za niz (matricu) veličine m × n proizvesti točan rezultat za slučaj kada je m ili n jednako nuli. Veličina niza (matrice) rezultata mora odgovarati vrijednosti funkcije izračunate na nuli. Na primjer, operator C = zahtijeva da nizovi A i B imaju isti broj redaka. Dakle, ako niz A ima veličinu m? N, a B ima veličinu m? P, onda je C niz veličine m? (N + p). Rezultat je točan ako je bilo koji od parametara m, n ili p jednak nuli. Mnoge operacije u MATLAB-u stvaraju vektor retka ili vektor stupca. U ovom slučaju, rezultat može biti ili prazan vektor retka r = nule (1, 0) ili prazan vektor stupca C = nule (0, 1). MATLAB 5 i noviji podržavaju pravila sustava MATLAB 4 za if i while izjave. Na primjer, uvjetni operator poput if A, S1, else, S0, end izvršava operator S0 kada je A prazan niz. Neke MATLAB funkcije kao što su zbroj, prod, min i max smanjuju rezultat: ako je argument niz, onda je rezultat vektor; ako je argument vektor, tada je rezultat skalar. Za ove funkcije, s praznim ulaznim nizom, dobivaju se sljedeći rezultati: zbroj () = 0; prod () = 1; max () =; min () =. 3.4 Operatori sustava MATLAB 5. Kombiniranje operatora u aritmetičke izraze. Ugrađene funkcije Operatori MATLAB sustava Operatori MATLAB sustava dijele se u tri kategorije: 76 Aritmetički operatori omogućuju vam konstruiranje aritmetičkih izraza i izvođenje numeričkih izračuna. relacijski operatori omogućuju vam da uspoređujete numeričke operande. logički operatori omogućuju izgradnju logičkih izraza. Logički operatori imaju najmanji prioritet nad relacijskim i aritmetičkim operatorima. Aritmetički operatori. Kada radite s nizom brojeva, sljedeće razine prioriteta postavljaju se među aritmetičkim operacijama: razina 1: transpozicija po elementima (. "), eksponencijacija po elementima (. ^), transpozicija hermitske konjugirane matrice ("), eksponencijacija matrice ( ^); razina 2: unarno zbrajanje (+), unarno oduzimanje (-); razina 3: množenje nizova (. *), desno dijeljenje (./), lijevo dijeljenje nizova (. \), množenje matrica (*), rješavanje sustava linearnih jednadžbi, operacija (/), operacija (\); razina 4: zbrajanje (+), oduzimanje (-); razina 5: operator formiranja niza (:). Unutar svake razine, operatori imaju jednak prioritet i ocjenjuju se redoslijedom s lijeva na desno. Zadani redoslijed može se promijeniti pomoću zagrada. Primjer. Neka su dana 2 vektora A =; B =; Rezultati izvršavanja operatora C = A./B. ^ 2 jednako je C = 0,7500 9,0000 0,2000, a operator C = (A./B). ^ 2 je C = 2,2500 81,0000 1,0000. Kao što vidite, rezultati su potpuno drugačiji. Aritmetički operatori dopuštaju korištenje indeksnih izraza. Na primjer: 77 b = sqrt (A (2)) + 2 * B (1) b = 7 MATLAB aritmetički operatori obično rade s nizovima iste veličine. Za vektore i pravokutne nizove, oba operanda moraju biti iste veličine, osim ako jedan od njih nije skalar. Ako je jedan od operanada skalaran, a drugi nije, u MATLAB-u je prihvaćeno da se skalar proširuje na veličinu drugog operanda i da se navedena operacija primjenjuje na svaki element. Ova se operacija naziva skalarno širenje. Relacijski operatori. MATLAB definira sljedećih 6 relacijskih operatora:< Меньше <= Меньше или равно >Veće od> = Veće ili jednako == Jednako identitetu ~ = Nije jednako Relacijski operatori izvode elementarnu usporedbu dvaju nizova jednakih dimenzija. Za vektore i pravokutne nizove, oba operanda moraju biti iste veličine, osim ako jedan od njih nije skalar. U ovom slučaju, MATLAB uspoređuje skalar sa svakim elementom drugog operanda. Pozicije gdje je ovaj omjer istinit dobivaju vrijednost 1, gdje je netočno - 0. Operatori relacije se u pravilu koriste za promjenu redoslijeda izvršavanja programskih izraza. Stoga se najčešće koriste u tijelu naredbi if, for, while, switch. Relacijski operatori se uvijek izvode po elementima. Primjer. Usporedimo dva niza koristeći uvjet A

3.3. Izvođenje M-funkcija. Popis argumenata. Vrste argumenata. Vrste podataka

M-funkcija se može pozvati iz naredbenog retka MATLAB-a ili iz drugih M-datoteka, pazeći da navedete sve potrebne atribute - ulazne argumente u zagradama, izlazne argumente u uglastim zagradama.

Dodjeljivanje imena. Kada se pojavi novo ime, MATLAB provjerava:

  1. Je li novi naziv naziv varijable.
  2. Je li ovo ime naziv podfunkcije, odnosno funkcije koja se nalazi u istoj M-datoteci i koja se poziva.
  3. Bilo da se radi o nazivu privatne funkcije koja se nalazi u privatnom imeniku. Ovaj direktorij je dostupan samo za M-datoteke koje se nalaze jednu razinu više.
  4. Je li to ime funkcije u MATLAB stazi. U tom slučaju sustav koristi M-datoteku koja se prva pojavljuje na pristupnoj stazi.

Ako postoje duplikati imena, MATLAB koristi prvo ime prema gornjoj hijerarhiji od 4 razine. Treba napomenuti da je u MATLAB-u 5 dopušteno redefinirati funkciju prema pravilima objektno orijentiranog programiranja.

Poziv funkcije... Kada se pozove M-funkcija, MATLAB prevodi funkciju u pseudokod i učitava je u memoriju. Time se izbjegava ponovno raščlanjivanje. Pseudokod ostaje u memoriji sve dok se ne iskoristi naredba brisanje ili sesija ne završi.

Dopuštene su sljedeće izmjene naredbe clear:

Ova naredba analizira M datoteku prosjek.m i pohranjuje rezultirajući pseudokod u datoteci pod nazivom prosjek.p. Time se izbjegava ponovno raščlanjivanje tijekom nove sesije. Budući da je raščlanjivanje vrlo brzo, naredba pcode ima malo utjecaja na brzinu njezina izvršenja.
Korištenje P-koda preporučljivo je u dva slučaja:

  • kada je potrebno raščlaniti veliki broj M-datoteka potrebnih za renderiranje grafičkih objekata u aplikacijama koje se odnose na razvoj grafičkog korisničkog sučelja; u ovom slučaju, korištenje P-koda osigurava značajno ubrzanje;
  • kada korisnik želi sakriti algoritme implementirane u M-datoteci.

Pravila donošenja svađe... Sa stajališta programera, MATLAB prosljeđuje argument po njegovoj vrijednosti. Zapravo, samo oni argumenti se prosljeđuju po vrijednosti koja se mijenja kada se ova funkcija pokrene. Ako funkcija ne mijenja vrijednost argumenta, već ga koristi samo za izračune, tada se argument prosljeđuje referencom, što omogućuje optimizaciju korištenja memorije.

Funkcionirajte radna područja. Svakoj M-funkciji je dodijeljeno dodatno memorijsko područje koje se ne preklapa s radnim područjem MATLAB-a. Ovo područje se naziva radnim područjem funkcije. Svaka funkcija ima svoje radno područje.

Kada radite sa MATLAB sustavom, možete pristupiti samo varijablama koje se nalaze u radnom prostoru sustava ili u radnom prostoru funkcije. Ako je varijabla deklarirana globalnom, onda se može smatrati da pripada višestrukim radnim područjima.

Provjera broja argumenata. Funkcije nargin i nargout omogućuju vam da odredite broj ulaznih i izlaznih argumenata za pozvanu funkciju. Te se informacije kasnije mogu koristiti u uvjetnim izjavama za promjenu tijeka izračuna.

Primjer:

funkcija c = testarg1 (a, b)
ako (nargin == 1)
c = a. ^ 2;
elseif (nargin == 2)
c = + b;
kraj

S obzirom na jedan ulazni argument, funkcija izračunava kvadrat ulazne varijable; kada su data dva argumenta, izvodi se operacija zbrajanja.

Razmotrimo složeniji primjer - dodjeljivanje dijela niza znakova prije separatora, koji se može koristiti kao razmak ili bilo koji drugi znak. Kada specificira jedan ulazni argument, funkcija mora odabrati dio niza prije graničnika, koji se prema zadanim postavkama koristi s razmakom; uklanjaju se svi razmaci na početku retka. Kada su navedena dva argumenta, drugi argument mora biti znak za razgraničenje.

Ova funkcija je formatirana kao strtok M-funkcija, koja se nalazi u direktoriju strfun.

Funkcija mora imati barem jedan ulazni argument

Ako postoji jedan ulazni argument, tada se kao separator koristi razmak.

Odredite početak odabranog podniza

Odredite kraj odabranog podniza

Dodjela ostatka linije

Imajte na umu da je redoslijed argumenata na izlaznoj listi važan. Ako prilikom pozivanja M-funkcije nije naveden izlazni argument, prema zadanim postavkama prikazuje se prvi argument. Za formiranje i izlaz naknadnih argumenata potrebno je organizirati odgovarajući poziv M-funkcije.

Popis argumenata.

Funkcije varargin i varargout omogućuju vam prosljeđivanje proizvoljnog broja ulaznih i izlaznih argumenata. MATLAB sustav pakira sve navedene ulazne i izlazne argumente u niz ćelija. Svaka ćelija može sadržavati bilo koju vrstu i bilo koju količinu podataka.

Primjer
Funkcija testvar prihvaća bilo koji broj vektora s dva elementa kao ulaz i prikazuje linije koje ih povezuju.

funkcija testvar (varargin)

za i = 1: duljina (varargin)
x (i) = varargin (i) (1);
y (i) = varargin (i) (2);
kraj

xmin = min (0, min (x));
ymin = min (0, min (y));
os ()
dijagram (x, y)

Dakle, funkcija testvar može raditi na ulaznim listama različitih duljina.

Primjer:

testvar (,,,,,)
testvar ([- 1 0],,,)

Formiranje ulaznog niza varargin. Budući da popis varargin pohranjuje ulazne argumente u niz ćelija, indeksi ćelija moraju se koristiti za dohvaćanje podataka. Indeks stanica ima dvije komponente:
- indeks u vitičastim zagradama;
- indeks u zagradama.

Primjer:

y (i) = varargin (i) (2);
Ovdje indeks u vitičastim zagradama (i) označava adresu i-te ćelije varargin polja, a indeks u zagradama (2) označava drugi element u ćeliji.

Formiranje izlaznog niza varargout... S proizvoljnim brojem izlaznih argumenata, oni moraju biti upakirani u varargout polje ćelija. Da biste odredili broj izlaznih argumenata za funkciju, koristite funkciju nargout.

Primjer
Sljedeća funkcija koristi niz s dva stupca kao ulaz, gdje je prvi stupac skup vrijednosti x-koordinate, a drugi je skup vrijednosti y-koordinate. Funkcija dijeli niz u zasebne vektore, koji se mogu proslijediti funkciji testvar kao inputi.

funkcija = testvar2 (niz)
za i = 1: nargout
varargout (i) = niz (i, :);
kraj

Naredba o dodjeli u for petlji koristi sintaksu dodjele polja ćelija. Lijeva strana operatora dodjele koristi vitičaste zagrade kako bi označila da su podaci kao niz niza dodijeljeni ćeliji.

Za pozivanje funkcije testvar2 mogu se koristiti sljedeći operatori:

a = ";
= testvar2 (a)

p1 = 16
p2 = 2 7
p3 = 3 8
p4 = 4 9
p5 = 5 0

Korištenje nizova ćelija u popisima argumenata... Argumenti varargin i varargout moraju biti posljednji na svojim odgovarajućim popisima argumenata. Prilikom pozivanja funkcije, argumenti koji prethode varargoutu moraju se procijeniti unutar funkcije.

Primjer
Zaglavlja funkcija u nastavku pokazuju ispravnu upotrebu popisa varargin i varargout:

funkcija = primjer1 (a, b, varargin)
funkcija = primjer2 (x1, y1, x2, y2, zastavica)

Varijabilne vrste.

Lokalne i globalne varijable... Korištenje varijabli u M datoteci ne razlikuje se od korištenja varijabli u naredbenom retku, naime:

  • varijable ne treba deklarirati; prije dodjeljivanja vrijednosti varijabli, morate biti sigurni da su sve varijable na desnoj strani dodijeljene vrijednosti;
  • svaka operacija dodjele stvara varijablu, ako je potrebno, ili mijenja vrijednost postojeće varijable;
  • imena varijabli počinju slovom nakon kojeg slijedi bilo koji broj slova, brojeva i podvlaka; MATLAB razlikuje znakove velikih i malih slova;
  • naziv varijable ne smije biti duži od 31 znak. Točnije, naziv može biti duži, ali MATLAB uzima u obzir samo prvi 31 znak.

Tipično, svaka M-funkcija, definirana kao M-datoteka, ima svoje lokalne varijable, koje se razlikuju od varijabli drugih funkcija i varijabli radnog područja. Međutim, ako više funkcija i radni prostor deklariraju varijablu kao globalnu, tada sve koriste jednu kopiju te varijable. Bilo koja dodjela ovoj varijabli primjenjuje se na sve funkcije gdje je deklarirana kao globalna.

Primjer.
Recimo da je potrebno proučiti utjecaj koeficijenata a i b za model grabežljivac-plijen opisan Lotke-Volterra jednadžbama:

Kreirajmo M-datoteku lotka.m:

funkcija yp = lotka (t, y)
% LOTKA Lotke-Volterra jednadžbe za model grabežljivac-plijen

globalni ALPHA BETA
yp =;

Zatim kroz naredbeni redak unesite operatore:

globalni ALPHA BETA
ALFA = 0,01;
BETA = 0,02;
= ode23 ("lotka2" ,,);
parcela (t, y)

Globalna naredba deklarira varijable ALPHA i BETA kao globalne i stoga dostupne u funkciji lotka.m. Tako se mogu mijenjati iz naredbenog retka, a nova rješenja će se dobiti bez uređivanja lotka.m M-datoteke.

Za rad s globalnim varijablama, morate:

  • deklarirati varijablu kao globalnu u svakoj M-funkciji kojoj je potrebna ova varijabla. Da bi varijabla radnog prostora bila globalna, morate je deklarirati kao globalnu iz naredbenog retka;
  • u svakoj funkciji koristite globalnu naredbu prije prvog pojavljivanja varijable; preporuča se korištenje globalne naredbe na početku M datoteke.

Nazivi globalnih varijabli općenito su duži i opisniji od naziva lokalnih varijabli i često se pišu velikim slovima. Ovo je izborno, ali se preporučuje za održavanje čitljivosti u MATLAB kodu i smanjenje vjerojatnosti slučajnog nadjačavanja globalne varijable.

Posebne varijable. Neke M funkcije vraćaju posebne varijable koje su važne za rad u MATLAB okruženju:

ans Posljednji rezultat; ako nije navedena izlazna varijabla, tada MATLAB koristi varijablu ans.
eps Preciznost s pomičnim zarezom; određena je duljinom mantise i za PC eps = 2.220446049250313e-016
realmax Maksimalni broj s pomičnim zarezom koji se može predstaviti na računalu; za PC realmax = 1,797693134862316e + 308.
realmin Najmanji broj s pomičnim zarezom koji se može predstaviti na računalu; za PC realmin = 2,225073858507202e-308.
pi Posebna varijabla za broj p: pi = 3,141592653589793e + 000.
i J Posebne varijable za označavanje imaginarne jedinice
inf Posebna varijabla za označavanje simbola beskonačnosti?
NaN Posebna varijabla za označavanje nedefinirane vrijednosti - rezultat operacija poput: 0/0, inf / inf.
Računalo Posebna varijabla koja označava vrstu korištenog računala; za PC - PCWIN.
neuspjeh Posebna varijabla za označavanje broja operacija s pomičnim zarezom.
verzija Posebna varijabla za pohranjivanje broja verzije MATLAB sustava u upotrebi.

Odgovarajuće M-funkcije koje generiraju ove posebne varijable nalaze se u imeniku elmat i podržane su online pomoći.

Vrste podataka.

MATLAB definira šest osnovnih tipova podataka, od kojih je svaki višedimenzionalni niz. Šest klasa su double, char, sparse, uint8, cell i struct. Dvodimenzionalne verzije ovih nizova nazivaju se matrice, po čemu je MATLAB dobio ime od MATRIX LAB-a.

Dijagram pripadnosti jednog ili drugog objekta MATLAB sustava jednoj od klasa je sljedeći (slika 3.1):

Većinu vremena vjerojatno ćete morati imati posla samo s dvije od ovih tipova podataka: nizom dvojnika i nizom znakova (char) ili samo nizom. To je zato što su svi izračuni u MATLAB-u dvostruke preciznosti i većina funkcija radi na nizovima ili nizovima dvostruke preciznosti.

Druge vrste podataka namijenjene su za takve posebne aplikacije kao što su rad s rijetkim matricama (sparse), obrada slike (uint8), rad s velikim nizovima (ćelije i strukture).

Tip varijable ne može se postaviti na numerički ili niz. Ti se tipovi nazivaju virtualnim tipovima i služe samo za grupiranje varijabli koje imaju zajedničke atribute.

Tip uint8 služi za učinkovito pohranjivanje podataka u memoriju. Na ovaj tip podataka mogu se primijeniti samo osnovne operacije indeksiranja i promjene veličine, ali se ne može izvesti matematička operacija. Da biste to učinili, takvi se nizovi moraju pretvoriti u dvostruki tip.

Izrada vlastitih tipova i dodavanje metoda za ugrađene tipove. Tablica u nastavku sadrži sedmi tip podataka, UserObject. MATLAB vam omogućuje stvaranje vlastitih tipova podataka i rad s njima po analogiji s ugrađenim tipovima.

Za ugrađene tipove podataka možete nadjačati metodu na isti način kao i za objekt. Na primjer, da biste specificirali operaciju sortiranja za niz tipa uint8, morate stvoriti metodu (sort.m ili sort.mex) i smjestiti je u poseban direktorij @ uint8.

Sljedeća tablica detaljnije opisuje tipove podataka.

Razred Primjer Opis
Dvostruko [ 1 2; 3 4]
5 + 6i
Numerički niz dvostruka preciznost (ovo je najčešći tip varijable u MATLAB-u
Char "Hej" Niz znakova(svaki znak je dugačak 16 bita), često se naziva nizom.
Rijetko Speye (5) Rijetka matrica dvostruka preciznost (samo 2D). Rijetka struktura se koristi za pohranjivanje matrica s malim brojem elemenata koji nisu nula, što omogućuje korištenje samo malog dijela memorije potrebne za pohranu cijele matrice. Rijetke matrice zahtijevaju korištenje posebnih metoda za rješavanje problema.
stanica (17 "zdravo" oko (2)) Niz ćelija... Elementi ovog niza sadrže druge nizove. Nizovi ćelija omogućuju vam kombiniranje povezanih podataka, moguće različitih veličina, u jednu strukturu.
Struktura A.dan = 12; A.color = "Crvena"; A.mat = magija (3); Niz zapisa... Sadrži nazive polja. Sama polja mogu sadržavati nizove. Poput nizova ćelija, nizovi zapisa kombiniraju povezane podatke i informacije o njima.
Uint8 Uint8 (magija (3)) Niz 8-bitnih neoznačenih cijelih brojeva... Omogućuje vam pohranjivanje cijelih brojeva u rasponu od 0 do 255 u 1/8 memorije potrebne za niz dvostruke preciznosti. Za ove nizove nisu definirane matematičke operacije.
UserObject inline ("grijeh (x)") Korisnički definirana vrsta podataka.

Opis dijagrama... Spojne linije u dijagramu (slika 3.1) određuju pripadnost određene vrste podataka jednoj ili više klasa.

Primjer
Rijetka matrica također ima dvostruke i numeričke tipove. Operateri
isa (S ", rijetka")
isa (S ", dvostruko")
isa (S ", numerički")

vratiti vrijednosti 1 (true), to jest, S je numerička rijetka matrica dvostruke preciznosti.

Imajte na umu da je vrsta niza na vrhu grafikona. To znači da su svi MATLAB podaci nizovi.

Svakom tipu podataka može se dodijeliti vlastite funkcije i operatori obrade, ili drugim riječima, metode. Podređeni tipovi podataka koji se nalaze na dijagramu ispod nadređenog tipa također su podržani od strane roditeljskih metoda. Stoga je niz tipa double podržan metodama koje se koriste za numerički tip.

U tablici su navedene neke od ovih metoda:

Razred Metoda
Niz Izračun veličine, duljine, dimenzije (ndims), spajanje nizova (), transponiranje, višedimenzionalno indeksiranje (podindeks), redefiniranje (preoblikovanje) i permutiranje dimenzija višedimenzionalnog niza.
Niz ćelija Indeksiranje pomoću vitičastih zagrada (e1,…, en) i odvajanje stavki popisa zarezima.
String Char Funkcije niza (strcmp, niži), automatska konverzija u tip double za primjenu metoda klase double.
Dvostruko Aritmetičke i logičke operacije, matematičke funkcije, funkcije iz matrica.
Numerički Pretraživanje (pronalaženje), obrada kompleksnih brojeva (stvarnih, slikovnih), formiranje vektora, odabir redaka, stupaca, podblokova niza, skalarno proširenje.
Rijetko Operacije na rijetkim matricama.
Niz zapisa strukture Pristup sadržaju polja .field (razdjelnik stavki popisa je zarez).
Uint8 Rad pohrane (najčešće se koristi s RFP alatnim okvirom za obradu slike)
UserObject Korisnik definiran

Prazni nizovi. Rane verzije MATLAB-a dopuštale su jedan prazan oblik polja 0x0, označen kao. MATLAB 5 podržava nizove u kojima je jedna, ali ne i sve dimenzije nula, odnosno nizove dimenzija 1x0, 10x0x20 ili definirane kao prazne.

Uglaste zagrade i dalje predstavljaju niz 0x0. Prazni nizovi različitih veličina mogu se stvoriti pomoću funkcija nula, jedinica, rand ili oka. Na primjer, da biste formirali prazan niz veličine 0x5, možete koristiti operator dodjeljivanja
E = nule (0,5).

Glavna svrha praznih nizova je da će svaka operacija koja je definirana za niz (matricu) veličine m × n proizvesti ispravan rezultat za slučaj kada je m ili n jednako nuli. Veličina niza (matrice) rezultata mora odgovarati vrijednosti funkcije izračunate na nuli.

Na primjer, operater
C =
zahtijeva da nizovi A i B imaju isti broj redaka. Dakle, ako je niz A m x n i B je m x p, onda je C m x (n + p) niz. Rezultat je točan ako je bilo koji od parametara m, n ili p jednak nuli.

Mnoge operacije u MATLAB-u stvaraju vektor retka ili vektor stupca. U ovom slučaju, rezultat može biti ili prazan vektor retka
r = nule (1, 0),
ili prazan vektor stupca
C = nule (0, 1).

MATLAB 5 podržava MATLAB 4 sistemska pravila za if i while izjave. Na primjer, uvjetni operator kao
ako A, S1, else, S0, kraj
izvršava operator S0 kada je A prazan niz.

Neke MATLAB funkcije kao što su zbroj, prod, min i max smanjuju rezultat: ako je argument niz, onda je rezultat vektor; ako je argument vektor, tada je rezultat skalar.

Za ove funkcije, s praznim ulaznim nizom, dobivaju se sljedeći rezultati:
zbroj () = 0;
prod () = 1;
max () =;
min () =.

Vrhunski povezani članci