Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Windows 10
  • MATLAB sistemske varijable. Varijable u MATLAB okruženju

MATLAB sistemske varijable. Varijable u MATLAB okruženju

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

Prilikom odabira imena za varijablu, vodite se sljedećim pravilima.

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

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

■ Nije dozvoljeno koristiti razmake u imenima varijabli i Posebni simboli(kao što su +, -,*,/).

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

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

Prije upotrebe bilo koje varijable, možete provjeriti da li je ime odabrano za nju važeće. Za to se primjenjuje sljedeća funkcija:

isvarname ime_varijable

gdje ime_varijable je ime varijable koju želite provjeriti je li ispravno. Ova funkcija vraća 1 ako je ime važeće i 0 u suprotnom. Na primjer, ime 12_abc_3 8 je nevažeće jer počinje brojem, dakle datu funkciju vraća 0.

>> isvarname 12_abc_3 8

Postoji nekoliko rezervisanih imena varijabli u MATLAB-u. Pozivaju se varijable s takvim imenima sistemski. Postavljaju se nakon pokretanja sistema i mogu se koristiti u matematički izrazi. Sistemske varijable se mogu nadjačati, tj. mogu im se dodijeliti druge vrijednosti ako je potrebno.

Glavne varijable MATLAB sistema su navedene ispod.

■ i , j - imaginarna jedinica (kvadratni korijen od -1) koja se koristi za specifikaciju imaginarnog dijela kompleksni brojevi.

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

■ eps - greška operacija nad brojevima s pomičnim zarezom, tj. interval između broja 1.0 i sljedećeg najbližeg broja s pomičnim zarezom (jednako 2.2204e-16, ili 2-52).

■ ans - rezultat poslednja operacija bez znaka zadatka.

■ inf - oznaka beskonačnosti mašine.

■ NaN - skraćenica za riječi Ne Broj (ne broj), koji se koristi za označavanje neodređenog rezultata (na primjer, 0/0 ili Inf /Inf).

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

■ realmax - maksimalni modul realni broj (1,7977e+308, ili 21023).

U MATLAB-u, za razliku od drugih programskih jezika, tipovi varijabli nisu deklarisani unaprijed. Dovoljno je dodijeliti vrijednost varijabli određeni tip. Na primjer, za dodjelu varijable ali vrijednost 5, unesite izraz u komandnu liniju ali=5 (kao operator dodjeljivanja znak jednakosti) i pritisnite tipku , nakon čega će program odmah vratiti vrijednost ove varijable.

>> ali=5

Kao što možete vidjeti, u ovom slučaju, MATLAB ne mora dodijeliti varijablu ans da bi predstavljala rezultat, jer varijabla ali.

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

Efekat tačke sa zarezom se proteže i dalje od zadataka. Ako navedete ovaj znak na kraju bilo kog izraza unesenog u komandnu liniju, tada rezultat njegove evaluacije neće biti odmah prikazan na ekranu. Umjesto toga, pojavljuje se prompt za sljedeću naredbu () Varijabli se može dodijeliti broj, aritmetički izraz, niz znakova (zatvoren u apostrofima) ili karakterni izraz.

Da biste povećali efikasnost programa, možda ćete morati da izbrišete iz memorije računara sve varijable koje se koriste u trenutnoj sesiji ili samo neke od njih. Za brisanje memorije iz 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 porodice varijabli ( argumenti naredbe clear odmah slijede ime komande i razdvojeni su razmacima).

Da biste izbrisali sav sadržaj MATLAB komandnog prozora, koristite naredbu c1c. Nakon odabira ove naredbe, samo će informacije unesene u komandni prozor biti izbrisane, ali to neće utjecati na vrijednosti varijabli radnog prostora. Ovo se može provjeriti upisivanjem imena bilo koje od varijabli definiranih u trenutnoj sesiji na komandnoj liniji.

Kraj rada -

Ova tema pripada:

Posebni znakovi i njihova namjena

Jezik komunikacije sa matlab-om .. simboli i operatori jezika .. jezički operatori su simboli operacija nad podacima koji se u matlabu nazivaju operandi, svi opšteprihvaćeni..

Ako trebaš dodatni materijal na ovu temu, ili niste pronašli ono što ste tražili, preporučujemo da koristite pretragu u našoj bazi radova:

Šta ćemo sa 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 sa varijablama. Štaviše, korisnika ne bi trebalo da brine koje vrednosti će varijabla uzeti (kompleksne, realne ili samo cele brojeve). Da bi se promenljivoj z dodelila, na primer, vrednost 1,45, dovoljno je u komandnoj liniji napisati z = 1,45, dok će MatLab odmah prikazati vrednost z:

» z = 1,45
z=
1.4500

Ovdje se znak jednakosti koristi kao operator dodjeljivanja.Često nije baš zgodno dobiti rezultat nakon svakog zadatka. Stoga, MatLab pruža mogućnost da završi naredbu dodjele tačkom i zarezom kako bi se potisnuo izlaz rezultata u komandni prozor. Ime 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 prihvata u imenu varijable je 31.
Kao vježbu korištenja varijabli, pronađite vrijednost sljedećeg izraza:

Otkucajte sljedeći niz naredbi (obratite pažnju na tačku i zarezu u prva dva izraza dodjeljivanja da biste potisnuli srednje vrijednosti koje se ispisuju na ekran):

"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

Posljednja naredba dodjele se ne završava tačkom i zarezom da bi se odmah dobila vrijednost originalnog izraza. Naravno, možete uneti celu 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

Obratite pažnju koliko je prva notacija kompaktnija i jasnija od druge! U drugoj verziji formula nije stajala u komandnom prozoru na jednom redu, već je morala biti upisana u dva reda, za šta su na kraju prvog reda stavljene tri tačke.

Da unesete dugačke formule ili komande u komandnu liniju, stavite tri tačke (u nizu, bez razmaka), pritisnite taster i nastavite kucati formulu sljedeći red. Na ovaj način možete postaviti izraz u više redova. MatLab će procijeniti cijeli izraz ili izvršiti naredbu nakon što kliknete na u poslednjem redu (koji ne sadrži tri uzastopne tačke).

MatLab pamti vrijednosti svih varijabli definiranih tokom radne sesije. Ako su nakon unosa gornjeg primjera napravljeni daljnji proračuni i postalo je potrebno prikazati vrijednost X, onda samo treba da ukucate X na komandnoj liniji i pritisnite :

» x
-0.6611

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

,

zatim samo unesite sljedeću naredbu:

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

Pozivanje funkcija u MatLabu je prilično fleksibilno. Na primjer, e3.5 se može izračunati pozivanjem funkcije exp from komandna linija:

» 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 sa varijablama završen, a ostatak će morati biti završen tokom sljedeće sesije rada sa MatLabom. U ovom slučaju, morat ćete zadržati varijable definirane u proizvodnom okruženju.

Pregledajte varijable

Kada radite sa dovoljno veliki iznos varijable, morate znati koje se varijable već koriste, a koje ne. U tu svrhu se koristi naredba who, koja prikazuje listu varijabli korištenih u MatLab komandnom prozoru:

" SZO
Vaše varijable su:
al a2 a3

Komanda who vam omogućava da dobijete više detaljne informacije o varijablama u obliku tabele:

Ukupan zbroj je 3 elementa koji koriste 24 bajta

Prva kolona Ime se sastoji od imena korištenih varijabli. Ono što se nalazi u koloni Veličina u suštini je određeno osnovnim principom MatLab rad. MatLab program svi podaci su predstavljeni kao nizovi. Varijable al, a2 i a3 su dvodimenzionalni nizovi veličine jednu po jednu. Svaka varijabla zauzima osam bajtova, kao što je naznačeno kolonom Bytes. Konačno, zadnja kolona Class označava tip varijabli - dvostruki niz, tj. niz dvojnika. Red ispod tabele kaže da su na kraju tri elementa, tj. varijable zauzimaju dvadeset četiri bajta. Ispostavilo se da predstavljanje svih podataka u MatLabu kao nizove ima određene prednosti.
Naredba clear se koristi za brisanje svih varijabli iz memorije. Ako navedete listu varijabli u argumentima (odvojene razmakom), tada će samo one biti oslobođene iz memorije, na primjer:

» jasno al aZ
" SZO
Vaše varijable su:
a2

Počevši od verzije 6.0, postojalo je zgodan alat za pregled varijabli radno okruženje- prozor Radni prostor, da biste otišli na koji biste trebali aktivirati istoimeni bookmark. Ovaj prozor sadrži tabelu sličnu onoj koju prikazuje whos naredba. dvostruki klik na liniji koja odgovara svakoj varijabli, uzrokuje da se njen sadržaj prikaže u poseban prozor, što je posebno korisno kada radite sa nizovima. Traka sa alatkama prozora Radni prostor omogućava vam da uklonite nepotrebne varijable, sačuvate i otvorite radno okruženje.

U MATLAB sistemu postoji posebna vrsta promenljivih čija se vrednost, sa izuzetkom ans varijable, ne može menjati. Ove varijable se nazivaju sistemske varijable. Namijenjeni su za više efikasan rad prilikom proračuna, kao i za prikaz poruka sistema u slučaju netačne izjave o problemu od strane korisnika. U tabeli su navedene sistemske varijable koje se koriste u MATLAB-u.

MATLAB sistemska varijabla

Kompleksni brojevi

U MATLAB sistemu kompleksni brojevi, kao i realni, imaju tip double. Stoga nema potrebe za posebnim radom označavanja kompleksnim brojevima. Zapis se sastavlja 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. Standardno, MATLAB koristi slovo i .

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čiglednim slučajevima kada funkcija ne može imati kompleksan argument. Na primjer, funkcija rem (x,y) izračunava ostatak od x podijeljen s y, tako da će korištenje kompleksnog broja kao argumenta rezultirati greškom:

>> a=2+3*i;

>> rem(a,3)

Greška u korištenju ==> rem

Argumenti moraju biti stvarni.

Uz to, postoji i niz funkcija koje se primjenjuju 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 realna.

Ode23("lotka2",,); plot(t,y) Globalna komanda deklarira varijable ALPHA i BETA kao globalne i stoga dostupne u funkciji lotka.m. Tako se mogu mijenjati iz komandne linije, a nova rješenja će se dobiti bez uređivanja M-fajla lotka.m. Da biste radili sa globalnim varijablama, morate: deklarirati varijablu kao globalnu u svakoj M-funkciji kojoj je potrebna ova varijabla. Da bi varijabla radni prostor bio globalan, morate ga deklarisati kao globalni iz komandne linije; u svakoj funkciji koristite globalnu naredbu prije prvog pojavljivanja varijable; preporučljivo je navesti globalnu naredbu na početku M-datoteke. Globalna imena varijabli su obično duža i značajnija od imena lokalnih varijabli i često se koriste velika slova. Ovo je opciono, ali se preporučuje kako bi se osigurala čitljivost koda jezika MATLAB i smanjila mogućnost slučajnog redefiniranja globalne varijable. Posebne varijable. Neke M-funkcije vraćaju posebne varijable koje igraju važnu ulogu pri radu u okruženju MATLAB sistema: Poslednji rezultat; ako izlazna varijabla nije ans, onda MATLAB koristi varijablu ans. Preciznost s pomičnim zarezom; eps je određen dužinom mantise i za PC eps = 2.220446049250313e-016 Maksimalni broj pokretni zarez, zamislite moj realmax u kompjuteru; za PC realmax = 1,797693134862316e+308. Najmanji broj s pomičnim zarezom, zamislite moj realmin u kompjuteru; za PC realmin = 2,225073858507202e-308. Posebna varijabla za broj p: pi pi=3,141592653589793e+000. 70 Posebne varijable za označavanje imaginarnih i, j jedinica Posebna varijabla za označavanje beskonačnosti simbola? Posebna varijabla za označavanje nedefinirane vrijednosti NaN - rezultat operacija kao što su: 0/0, inf/inf. Posebna varijabla koja označava tip računara koji se koristi; za PC - PCWIN. Posebna varijabla koja označava broj flopova operacija s pomičnim zarezom. Posebna varijabla za pohranjivanje broja verzije verzije MATLAB sistema koja se koristi. Odgovarajuće M-funkcije koje generiraju ove posebne varijable nalaze se u elmat direktoriju i podržane su online pomoći. Tipovi podataka MATLAB definira šest bazni tipovi 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 pripadnosti jednog ili drugog objekta MATLAB sistema jednoj od klasa ima sljedeći oblik (slika 3.1): (char), ili samo string. To je zbog činjenice da se svi proračuni u MATLAB sistemu izvode sa dvostrukom preciznošću i većina funkcija radi sa nizovima brojeva ili nizova dvostruke preciznosti. Ostali tipovi podataka su namijenjeni za posebne aplikacije kao što su rad sa rijetkim matricama (sparse), obrada slike (uint8), rad s velikim nizovima (ćelija i struktura). Ne možete postaviti tip varijable na numerički ili niz. Ovi tipovi se zovu virtuelni i služe samo za grupisanje varijabli koje dijele zajedničke atribute. Tip uint8 je dizajniran za efikasno skladištenje podataka u memoriji. Na podatke ovog tipa mogu se primijeniti samo osnovne operacije indeksiranja i promjene veličine, ali ne matematička operacija. Da biste to učinili, takvi nizovi moraju biti konvertirani u tip double. Kreirajte vlastite tipove i dodajte metode ugrađenim tipovima. Tabela ispod sadrži sedmi tip podataka, UserObject. MATLAB jezik omogućava vam da kreirate sopstvene tipove podataka i radite sa njima po analogiji sa ugrađenim tipovima. Za ugrađene tipove podataka, možete nadjačati metodu na isti način kao što možete nadjačati objekat. Na primjer, da biste specificirali operaciju sortiranja za niz tipa uint8, kreirali biste metodu (sort.m ili sort.mex) i smjestili je u poseban direktorij @uint8. Sljedeća tabela detaljnije opisuje tipove podataka. Opis primjera klase Numerički niz dvostruka preciznost (ovo je najčešći [ 1 2; 3 4] Dvostruki tip varijable 5 + 6i u MATLAB-u 72 Niz znakova (svaki znak je dugačak 16 bita), često se naziva Char "Hello" string. matrična dvostruka preciznost (samo 2D) Rijetka struktura se koristi za pohranjivanje matrica s malim brojem unosa koji nisu nula, dozvoljavajući Sparse Speye(5) da koristi samo mali dio memorije potrebne za pohranjivanje pune matrice. 17 "zdravo" oko (2)) Ćelija ( 17 "zdravo" oko (2)) kombinuje povezane podatke, eventualno razne veličine, u jednu strukturu. Niz unosa. Sadrži nazive polja. A.dan = 12; A.color = Polja mogu sama sadržavati nizove. Kao struktura "Red"; A.mat = nizovi ćelija, nizovi magic(3); zapisi kombinuju povezane podatke i informacije o njima. 73 Niz 8-bitnih neoznačenih cijelih brojeva. Omogućava vam pohranjivanje cijelih brojeva u rasponu od 0 do 255 u 1/8 memorije potrebne za 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)") definiran od strane korisnika. Opis dijagrama. Vezne linije na dijagramu (slika 3.1) određuju da li određeni tip podataka pripada jednoj ili više klasa. Primjer. Matrica tipa sparse takođe ima tipove double i numeric. Operatori isa(S",sparse") isa(S",double") isa(S",numeric") vraćaju vrijednosti 1(true), tj. S je numerička rijetka matrica dvostruke preciznosti. Imajte na umu da je tip niz - niz je na vrhu grafikona. To znači da su svi MATLAB sistemski podaci nizovi. Svaki tip podataka može biti povezan sa svojim vlastitim funkcijama i operatorima obrade, ili drugim riječima, metodama. Podređeni tipovi podataka ispod roditeljskog tipa u dijagramu su također podržani metodama roditelja. Stoga je niz tipa double podržan metodama koje se koriste za numerički tip. Tabela prikazuje neke od ovih metoda: Metoda klase 74 Izračunavanje veličine (veličine), dužine (dužine), dimenzije (ndims), ujedinjenje niza (), transponovanje (transponovanje), indeksiranje višedimenzionalnog niza (podindeks), redefinisanje (preoblikovanje) i permutacija (permutiranje) dimenzija višedimenzionalnog niza. Indeksiranje pomoću kovrčavog sco- Niz ćelija na strani ćelije (e1,…,en) i odvajanje stavki liste zarezima. Funkcije niza(strcmp, niži), automatska konverzija znakova niza u tip double primijeniti metode dvostruke klase. Aritmetika i logičke operacije, matematika Dvostruke funkcije, funkcije matrica. Pretraga (pronalaženje), obrada kompleksnih brojeva (real, slika), formiranje vektora, izbor numeričkih redova, kolona, ​​podblokova niza, skalarno proširenje. Rijetke operacije na rijetkim matricama. Niz zapisa Pristup sadržaju polja .field (razdjelnik elemenata strukture liste je zarez). Operacija skladištenja (najčešće se koristi sa Uint8 PPP obrada slike Toolbox) UserObject Korisnički definirani prazni nizovi. Rane verzije MATLAB sistemi dozvoljavaju jedan oblik praznog niza veličine 0x0, označen kao . MATLAB podržava nizove koji imaju jednu, ali ne sve svoje dimenzije jednake nuli, odnosno nizove dimenzija 1x0, 10x0x20 ili definirane kao prazne. Uglaste zagrade nastaviti označavati niz 0x0. Prazni nizovi drugih veličina mogu se kreirati 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 bilo koja operacija koja je definirana na nizu (matrici) veličine m × n određuje tačan rezultat za slučaj kada je m ili n nula. Veličina niza (matrice) rezultata mora odgovarati vrijednosti funkcije izračunate na nuli. Na primjer, C= operator zahtijeva da nizovi A i B imaju isti broj redova. 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 će biti tačan ako je bilo koji od parametara m, n ili p jednak nuli. Mnoge operacije u MATLAB sistemu kreiraju vektor reda ili kolone. U ovom slučaju, rezultat može biti ili prazan vektor reda r = nule(1, 0) ili prazan vektor stupca C = nule (0, 1). MATLAB 5 i novije verzije podržavaju MATLAB 4 sistemska pravila za if i while izjave. Na primjer, uslovni operator kao ako A, S1, else, S0, end izvršava naredbu S0 kada je A prazan niz. Neke MATLAB sistemske funkcije kao što su sum, prod, min i max smanjuju dimenziju rezultata: ako je argument niz, onda je rezultat vektor; ako je argument vektor, onda je rezultat skalar. Za ove funkcije, sa praznim ulaznim nizom, dobijaju se sledeći rezultati: sum() = 0 ; prod() = 1; max() = ; min() = . 3.4 Operatori sistema MATLAB 5. Kombinovanje operatora u aritmetičke izraze. Ugrađene funkcije MATLAB operatori MATLAB operatori spadaju u tri kategorije: 76 Aritmetički operatori vam omogućavaju da konstruišete aritmetičke izraze i izvodite numerička izračunavanja. relacioni operatori vam omogućavaju da uporedite numeričke operande. logički operatori vam omogućavaju da gradite logičke izraze. Logički operatori imaju najmanji prioritet u odnosu na relacijske i aritmetičke operatore. Aritmetički operatori. Kada radite sa nizom brojeva, sljedeći nivoi prioriteta se postavljaju među aritmetičkim operacijama: nivo 1: transpozicija po elementima (."), eksponencijacija po elementima (.^), Hermitova konjugirana matrica transpozicija ("), matrična eksponencijacija ( ^); nivo 2: unarno sabiranje (+), unarno oduzimanje (-); nivo 3: množenje niza (.*), desna podjela (./), lijevo dijeljenje nizova (.\), množenje matrice (*), rješavanje sistema linearnih jednačina, operacija (/), operacija (\); nivo 4: sabiranje (+), oduzimanje (-); nivo 5: operator za formiranje niza (:). Unutar svakog nivoa, operatori imaju jednak prioritet i procjenjuju se slijeva nadesno. Zadani redoslijed se može promijeniti pomoću zagrada. Primjer. Neka su 2 vektora A = ; B = ; Rezultati izvršavanja naredbe C = A./B. ^ 2 je jednako C = 0,7500 9,0000 0,2000 , a operator C = (A./B). ^2 je jednako C = 2,2500 81,0000 1,0000. Kao što vidite, rezultati su potpuno drugačiji. Aritmetički operatori dozvoljavaju upotrebu indeksnih izraza. Na primjer: 77 b = sqrt (A(2)) + 2*B (1) b=7 MATLAB aritmetički operatori općenito rade na nizovima iste veličine. Za vektore i pravougaone nizove, oba operanda moraju biti iste veličine, osim u jednom slučaju da je jedan od njih skalar. Ako je jedan od operanada skalaran, a drugi nije, MATLAB pretpostavlja da se skalar proširuje na veličinu drugog operanda i specificirana operacija se primjenjuje na svaki element. Ova operacija se naziva skalarno proširenje. relacioni operatori. Postoji 6 relacijskih operatora definiranih u MATLAB-u:< Меньше <= Меньше или равно >Veće od > = Veće ili jednako == Jednako identično ~ = Nije jednako Relacioni operatori izvode poređenje element po element dva niza jednakih dimenzija. Za vektore i pravougaone nizove, oba operanda moraju biti iste veličine, osim ako jedan od njih nije skalar. U ovom slučaju, MATLAB upoređuje skalar sa svakim elementom drugog operanda. Pozicije na kojima je ova relacija tačna dobijaju vrijednost 1, gdje je lažna - 0. Relacijski operatori se obično koriste za promjenu redoslijeda izvršavanja programskih izraza. Stoga se najčešće koriste u tijelu if, for, while, switch naredbi. Relacioni operatori se uvijek izvršavaju element po element. Primjer. Uporedimo dva niza koristeći uslov A

3.3. Izvršavanje M-funkcija. Liste argumenata. Tipovi argumenata. Tipovi podataka

M-funkcija se može pozvati iz komandne linije MATLAB sistema ili iz drugih M-fajlova, obavezno navedite sve potrebne atribute - ulazne argumente u zagradama, izlazne argumente u uglastim zagradama.

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

  1. Da li je novo ime ime varijable.
  2. Da li je ovo ime podfunkcije, odnosno funkcije koja se nalazi u istoj M-datoteci i koja se poziva.
  3. Je li to ime privatne funkcije koja se nalazi u privatnom direktoriju. Ovom direktoriju mogu pristupiti samo M-datoteke postavljene jedan nivo više.
  4. Da li je to ime funkcije u MATLAB sistemskoj putanji. U ovom slučaju, sistem koristi M-datoteku koja se prva pojavljuje na pristupnoj stazi.

U slučaju duplih imena, MATLAB koristi prvo ime prema gornjoj hijerarhiji na 4 nivoa. Treba napomenuti da je u MATLAB-u 5 dozvoljeno redefinisati funkciju prema pravilima objektno orijentisanog programiranja.

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

Dozvoljene su sljedeće modifikacije naredbe clear:

Ova komanda analizira M-datoteku prosjek.m i pohranjuje rezultirajući pseudo-kod u datoteku koja se zove prosjek.p. Time se izbjegava ponovno raščlanjivanje tokom nove sesije. Pošto je raščlanjivanje veoma brzo, korišćenje naredbe pcode gotovo da nema uticaja na brzinu njenog izvršavanja.
Upotreba P-koda je korisna u dva slučaja:

  • kada je potrebno raščlaniti veliki broj M-fajlova neophodnih za renderovanje grafičkih objekata u aplikacijama koje se odnose na razvoj grafičkog korisničkog interfejsa; u ovom slučaju, upotreba P-koda omogućava značajno ubrzanje;
  • kada korisnik želi sakriti algoritme implementirane u M-datoteci.

Pravila donošenja svađe. Sa tačke gledišta programera, MATLAB sistem prosleđuje argument po njegovoj vrednosti. U stvari, samo oni argumenti koji su promijenjeni tokom rada ove funkcije se prosljeđuju po vrijednosti. Ako funkcija ne mijenja vrijednost argumenta, već ga koristi samo za proračune, tada se argument prosljeđuje referencom, što omogućava optimizaciju korištenja memorije.

Funkcija radnih prostora. Svakoj M-funkciji je dodijeljeno dodatno memorijsko područje koje se ne preklapa s radnim područjem MATLAB sistema. Ovo područje se naziva radnim područjem funkcije. Svaka funkcija ima svoj radni prostor.

Kada radite sa MATLAB sistemom, možete pristupiti samo varijablama koje se nalaze u radnom prostoru sistema ili u radnom prostoru funkcije. Ako je varijabla deklarirana globalnom, onda se može smatrati da pripada nekoliko radnih područja.

Provjera broja argumenata. Funkcije nargin i nargout vam omogućavaju da odredite broj ulaznih i izlaznih argumenata pozvane funkcije. Ove informacije se kasnije mogu koristiti u izjavama uslova za promjenu toka izračunavanja.

primjer:

funkcija c = testarg1(a,b)
if(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 sabiranja.

Razmotrimo složeniji primjer - izdvajanje dijela niza znakova prije separatora, koji može biti razmak ili bilo koji drugi znak. Kada se zada jedan ulazni argument, funkcija mora odabrati dio niza do graničnika, koji je zadano kao razmak; i svi razmaci na početku reda se uklanjaju. Kada su navedena dva argumenta, znak za razdvajanje mora biti specificiran kao drugi argument.

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

Funkcija mora imati najmanje jedan ulazni argument

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

Odredite početak odabranog podniza

Odredite kraj odabranog podniza

Odabir ostatka reda

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

Liste argumenata.

Funkcije varargin i varargout vam omogućavaju da prenesete proizvoljan broj ulaznih i izlaznih argumenata. MATLAB sistem pakuje sve specificirane 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 prihvata bilo koji broj vektora sa dva elementa kao ulazne argumente i prikazuje linije koje ih povezuju.

funkcija testvar(varargin)

za i = 1:dužina(varargin)
x(i) = varargin(i)(1);
y(i) = varargin(i)(2);
kraj

xmin = min(0, min(x));
ymin = min(0, min(y));
osa()
plot(x,y)

Dakle, funkcija testvar može raditi sa ulaznim listama različitih dužina.

primjer:

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

Formiranje ulaznog niza varargin. Budući da lista varargin pohranjuje ulazne argumente u niz ćelija, indeksi ćelija moraju se koristiti za dohvaćanje podataka. Ćelijski indeks 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 niza, a indeks u zagradi (2) ukazuje na drugi element u ćeliji.

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

Primjer
Sljedeća funkcija uzima kao ulaz niz od dva stupca, gdje je prva kolona skup vrijednosti x-koordinate, a druga je skup vrijednosti y-koordinate. Funkcija dijeli niz na pojedinačne vektore, koji se mogu proslijediti funkciji testvar kao inputi.

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

Naredba o dodjeli u for petlji koristi sintaksu dodjele niza ćelija. Lijeva strana iskaza o dodjeli koristi vitičaste zagrade da naznači da se podaci niza niza dodjeljuju ćeliji.

Za pozivanje funkcije testvar2 mogu se koristiti sljedeće izjave:

a = ";
= testvar2(a)

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

Korištenje nizova ćelija u listama argumenata. Argumenti varargin i varargout moraju biti zadnji u svojim listama argumenata. Prilikom pozivanja funkcije, argumenti koji prethode varargout-u moraju se procijeniti unutar funkcije.

Primjer
Zaglavlja funkcija ispod pokazuju ispravnu upotrebu lista varargin i varargout:

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

Varijabilne vrste.

Lokalne i globalne varijable. Upotreba varijabli u M-datoteci se ne razlikuje od korištenja varijabli na komandnoj liniji, kako slijedi:

  • varijable ne zahtijevaju deklaraciju; prije dodjeljivanja vrijednosti varijabli, morate osigurati da su sve varijable na desnoj strani vrijednosti dodijeljene;
  • svaka operacija dodjeljivanja kreira varijablu, ako je potrebno, ili mijenja vrijednost postojeće varijable;
  • imena varijabli počinju slovom iza kojeg slijedi bilo koji broj slova, brojeva i donjih crta; MATLAB sistem razlikuje velika i mala slova;
  • naziv varijable ne smije biti duži od 31 znak. Tačnije, ime može biti duže, ali MATLAB uzima u obzir samo prvi 31 znak.

Tipično, svaka M-funkcija definirana u obliku M-datoteke ima svoje lokalne varijable, koje se razlikuju od onih drugih funkcija i varijabli radnog prostora. Međutim, ako više funkcija i radni prostor deklariraju promjenjivu globalnu, onda sve koriste jednu kopiju te varijable. Bilo koja dodjela ovoj varijabli prenosi se na sve funkcije gdje je deklarirana kao globalna.

Primjer.
Pretpostavimo da je potrebno istražiti utjecaj koeficijenata a i b za model predator-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 komandnu liniju unesite operatore:

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

Globalna komanda proglašava varijable ALPHA i BETA globalnim i stoga dostupne u funkciji lotka.m. Tako se mogu mijenjati iz komandne linije, a nova rješenja će se dobiti bez uređivanja M-fajla lotka.m.

Da biste radili sa globalnim varijablama, morate:

  • deklarisati 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 komandne linije;
  • u svakoj funkciji koristite globalnu naredbu prije prvog pojavljivanja varijable; preporučljivo je navesti globalnu naredbu na početku M-datoteke.

Globalna imena varijabli su obično duža i značajnija od imena lokalnih varijabli i često koriste velika slova. Ovo je opciono, ali se preporučuje da se osigura čitljivost koda jezika MATLAB i da se smanji mogućnost slučajnog redefinisanja globalne varijable.

Posebne varijable. Neke M-funkcije vraćaju posebne varijable koje igraju važnu ulogu pri radu u MATLAB sistemskom okruženju:

ans Zadnji rezultat; ako izlazna varijabla nije specificirana, tada MATLAB koristi varijablu ans.
eps Preciznost s pomičnim zarezom; određuje se dužinom mantise i za PC eps = 2.220446049250313e-016
realmax Maksimalni broj s pomičnim zarezom koji računar može predstaviti; za PC realmax = 1,797693134862316e+308.
realmin Najmanji broj s pomičnim zarezom koji računar može predstaviti; 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 predstavljanje simbola beskonačnosti?
NaN Posebna varijabla za označavanje nedefinirane vrijednosti - rezultat operacija kao što su: 0/0, inf/inf.
kompjuter Posebna varijabla koja označava tip računara koji se koristi; za PC - PCWIN.
flops Posebna varijabla koja označava broj operacija s pomičnim zarezom.
verzija Posebna varijabla za pohranjivanje broja verzije MATLAB sistema koji se koristi.

Odgovarajuće M-funkcije koje generiraju ove posebne varijable nalaze se u elmat direktoriju 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, zbog čega MATLAB dobija ime Matrix Lab.

Dijagram pripadnosti jednog ili drugog objekta MATLAB sistema jednoj od klasa ima sljedeći oblik (slika 3.1):

Vjerovatno je da ćete većinu vremena imati posla samo sa dva od ovih tipa podataka: nizom duplikata (double) i nizom znakova (char) ili samo nizom. To je zbog činjenice da se svi proračuni u MATLAB sistemu izvode sa dvostrukom preciznošću i većina funkcija radi sa nizovima brojeva ili nizova dvostruke preciznosti.

Ostali tipovi podataka su namijenjeni za posebne aplikacije kao što su rad sa rijetkim matricama (sparse), obrada slike (uint8), rad s velikim nizovima (ćelija i struktura).

Ne možete postaviti tip varijable na numerički ili niz. Ovi tipovi se zovu virtuelni i služe samo za grupisanje varijabli koje dijele zajedničke atribute.

Tip uint8 je dizajniran za efikasno skladištenje podataka u memoriji. Na podatke ovog tipa mogu se primijeniti samo osnovne operacije indeksiranja i veličine, ali se ne može izvesti matematička operacija. Da biste to učinili, takvi nizovi moraju biti konvertirani u tip double.

Kreirajte vlastite tipove i dodajte metode ugrađenim tipovima. Tabela ispod sadrži sedmi tip podataka, UserObject. MATLAB jezik vam omogućava da kreirate sopstvene tipove podataka i radite sa njima po analogiji sa ugrađenim tipovima.

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

Sljedeća tabela detaljnije opisuje tipove podataka.

Klasa Primjer Opis
Dvostruko [ 1 2; 3 4]
5+6i
Numerički niz dvostruka preciznost (ovo je najčešći tip varijable u MATLAB sistemu
Char "hej" Niz znakova(svaki znak je dugačak 16 bita), često se naziva string.
Sparse Speye(5) rijetka matrica dvostruka preciznost (samo 2D). Rijetka struktura se koristi za pohranjivanje matrica s malim brojem elemenata koji nisu nula, što omogućava korištenje samo malog dijela memorije potrebne za pohranjivanje pune matrice. Rijetke matrice zahtijevaju korištenje posebnih metoda za rješavanje problema.
ćelija (17 "zdravo" oko (2)) Cell array. Elementi ovog niza sadrže druge nizove. Nizovi ćelija vam omogućavaju da kombinujete povezane podatke, moguće različitih veličina, u jednu strukturu.
Struktura A.dan = 12; A.color="Crvena"; A.mat = magic(3); Niz zapisa. Sadrži nazive polja. Sama polja mogu sadržavati nizove. Kao i nizovi ćelija, nizovi zapisa kombinuju povezane podatke i informacije o njima.
Uint8 Uint8(magic(3)) Niz 8-bitnih neoznačenih cijelih brojeva. Omogućava vam pohranjivanje cijelih brojeva između 0 i 255 u 1/8 memorije potrebne za niz dvostruke preciznosti. Za ove nizove nisu definirane matematičke operacije.
UserObject inline("sin(x)") Korisnički definiran tip podataka.

Opis dijagrama. Linije za povezivanje na dijagramu (slika 3.1) određuju da li određeni tip podataka pripada jednoj ili više klasa.

Primjer
Matrica tipa sparse takođe ima tipove double i numeric. Operateri
isa(S",rijetko")
isa(S",dvostruko")
isa(S",numerički")

vrati vrijednosti 1(true), tj. S je numerička rijetka matrica dvostruke preciznosti.

Imajte na umu da je tip niz - niz je na vrhu dijagrama. To znači da su svi MATLAB sistemski podaci nizovi.

Svaki tip podataka može biti povezan sa svojim vlastitim funkcijama i operatorima obrade, ili drugim riječima, metodama. Podređeni tipovi podataka ispod roditeljskog tipa u dijagramu su također podržani metodama roditelja. Stoga je niz tipa double podržan metodama koje se koriste za numerički tip.

Tabela prikazuje neke od ovih metoda:

Klasa Metoda
niz Izračunavanje veličine (veličine), dužine (dužine), dimenzija (ndims), ujedinjenja niza (), transponiranja (transponiranja), višedimenzionalnog indeksiranja (podindeks), preoblikovanja (preoblikovanja) i permutiranja (permutiranja) dimenzija višedimenzionalnog niza.
niz ćelija Indeksiranje pomoću vitičastih zagrada (e1,…,en) i odvajanje stavki liste zarezima.
String Char Funkcije niza (strcmp, niže), automatska konverzija u dvostruki tip za primjenu metoda dvostruke klase.
Dvostruko Aritmetičke i logičke operacije, matematičke funkcije, funkcije iz matrica.
Numeric Pretraga (pronalaženje), obrada kompleksnih brojeva (real, slika), formiranje vektora, izbor redova, kolona, ​​podblokova niza, skalarno proširenje.
Sparse Operacije na rijetkim matricama.
Niz strukturnih zapisa Pristup sadržaju polja .field (razdjelnik elementa liste je zarez).
Uint8 Operacija pohrane (najčešće se koristi s RFP alatnim okvirom za obradu slike)
UserObject Definisano od strane korisnika

Prazni nizovi. Rane verzije MATLAB-a dozvoljavale su jedan oblik praznog niza veličine 0x0, označen kao . MATLAB 5 podržava nizove koji imaju jednu, ali ne sve svoje dimenzije jednake nuli, odnosno nizove dimenzija 1x0, 10x0x20 ili definisane kao prazne.

Uglaste zagrade nastavljaju označavati niz 0x0. Prazni nizovi drugih veličina mogu se kreirati 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 svaka operacija koja je definirana na nizu (matrici) veličine m × n određuje tačan rezultat za slučaj kada je m ili n nula. 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 redova. Dakle, ako niz A ima veličinu m x n i B je m x p, onda je C niz veličine m x (n+p). Rezultat će biti tačan ako je bilo koji od parametara m, n ili p jednak nuli.

Mnoge operacije u MATLAB sistemu kreiraju vektor reda ili kolone. U ovom slučaju, rezultat može biti ili prazan vektor reda
r = nule (1, 0),
ili prazan vektor kolone
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 naredbu S0 kada je A prazan niz.

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

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

Top Related Articles