Variabile simple și tipuri de date de bază în MatLab. Variabile de sistem MATLAB

Ca și alte limbaje de programare, MATLAB are capacitatea de a lucra cu variabile. Variabile- Acestea sunt obiecte numite care stochează orice date. Variabilele pot fi numerice, vectoriale sau caractere, în funcție de tipul de date pe care le stochează. Variabila are un nume numit identificator. Datele își pot schimba valorile, identificatorul rămâne același.

Când alegeți un nume pentru o variabilă, urmați aceste instrucțiuni:

■ Un nume de variabilă poate avea orice număr de caractere, dar numai primele 63 de caractere sunt memorate și identificate (acest număr este număr posibil caracterele din numele variabilei sunt returnate de funcția name lengthmax).

■ Un nume de variabilă trebuie să înceapă întotdeauna cu o literă și poate conține orice combinație de litere, cifre și litere de subliniere (_).

■ Spațiile și spațiile nu sunt permise în numele variabilelor. Simboluri speciale(cum ar fi +, -, *, /).

■ Numele variabilei nu trebuie să fie același cu numele altor variabile, funcții, proceduri sau variabile de sistem MATLAB.

■ Numele variabilelor fac distincție între literele mici și mari (adică, Abс și аВс sunt nume diferite).

Înainte de a utiliza orice variabilă, puteți verifica dacă numele pe care îl alegeți pentru aceasta este valid. Pentru aceasta este folosită următoarea funcție:

isvarname nume_variabilă

Unde nume_variabilă este numele variabilei pe care doriți să vă asigurați că este corectă. Această funcție returnează 1 dacă numele este valid, 0 în caz contrar. De exemplu, numele 12_abc_3 8 este incorect deoarece începe cu un număr, deci această funcție returnează valoarea 0.

>> isvarname 12_abc_3 8

În MATLAB, există mai multe nume de variabile care sunt rezervate. Variabilele cu aceste nume sunt numite sistemică. Sunt setate după pornirea sistemului și pot fi utilizate în expresii matematice. Variabilele de sistem pot fi suprascrise, de ex. dacă este necesar, li se pot atribui alte valori.

Următoarele sunt principalele variabile ale sistemului MATLAB.

■ i, j - unitate imaginară (rădăcină pătrată a lui -1), folosită pentru a specifica partea imaginară numere complexe.

■ pi - numărul π (π = 3,141592653589793).

■ eps - eroarea operaţiilor asupra numerelor în virgulă mobilă, adică. intervalul dintre numărul 1.0 și următorul cel mai apropiat număr în virgulă mobilă (egal cu 2.2204e-16 sau 2 -52).

■ ans - rezultatul ultimei operaţii fără semn de atribuire.

■ inf - desemnarea infinitului maşinii.

■ NaN - abreviere pentru cuvinte Nu un număr (nu un număr), folosit pentru a desemna un rezultat nedefinit (de exemplu, 0/0 sau Inf /Inf).

■ realmin - modulo minim numar real(2 .22 51e-308 sau 2 -1022).

■ realmax - numărul maxim modulo real (1,7977e+3 08, sau 2 1023).

În MATLAB, spre deosebire de alte limbaje de programare, tipurile de variabile nu sunt declarate în prealabil. Este suficient să atribuiți o valoare variabilei anumit tip. De exemplu, pentru a atribui o variabilă A valoarea 5, introduceți expresia la linia de comandă A=5 (ca operator de atribuire se aplică semnul egal) și apăsați tasta , după care programul va afișa imediat valoarea acestei variabile.

>> A=5

După cum puteți vedea, în acest caz programul MATLAB nu este nevoie să atribuiți variabila ans pentru a reprezenta rezultatul, deoarece variabila este definită A.

Dacă nu doriți ca valoarea să fie afișată imediat pe ecran după atribuirea unei valori unei variabile, terminați operația de atribuire cu punct și virgulă (;) și apoi apăsați .

Efectul punctului și virgulă se extinde dincolo de operatorii de atribuire. Dacă specificați acest caracter la sfârșitul oricărei expresii introduse în linia de comandă, rezultatul calculului său nu va fi afișat imediat pe ecran. În schimb, apare un prompt pentru următoarea comandă () Variabilei i se poate atribui un număr, o expresie aritmetică, un șir de caractere (închis în apostrofe) sau o expresie de caractere.

Pentru a îmbunătăți eficiența programului, poate fi necesar să ștergeți din memoria computerului fie toate variabilele utilizate în sesiunea curentă, fie doar unele dintre ele. Pentru a șterge memoria variabilelor din MATLAB, utilizați funcția clear, care are sintaxa:

· clear – distrugerea tuturor variabilelor;

· clear x – distrugerea variabilei x;

clear a b c – distrugerea unei familii de variabile ( argumentele pentru comanda clear vin imediat după numele comenzii și sunt separate prin spații).

Pentru a șterge întregul conținut al ferestrei de comandă MATLAB, utilizați comanda c1c. După selectarea acestei comenzi, doar informațiile introduse în fereastra de comandă vor fi șterse, dar valorile variabilelor spațiului de lucru nu vor fi afectate. Acest lucru poate fi verificat tastând în linia de comandă numele oricăreia dintre variabilele specificate în sesiunea curentă.

Sfârșitul lucrării -

Acest subiect aparține secțiunii:

Personaje speciale și scopul lor

Limbajul de comunicare cu matlab.. simboluri și operatori ai limbajului.. operatorii de limbaj sunt simboluri ale operațiilor pe date numite operanzi în matlab, toți cei general acceptați sunt folosiți..

Dacă aveți nevoie material suplimentar pe acest subiect, sau nu ați găsit ceea ce căutați, vă recomandăm să utilizați căutarea în baza noastră de date de lucrări:

Ce vom face cu materialul primit:

Dacă acest material ți-a fost util, îl poți salva pe pagina ta de pe rețelele sociale:

3.3. Efectuarea funcțiilor M. Liste de argumente. Tipuri de argumente. Tipuri de date

Funcția M poate fi apelată de la Linie de comanda Sistemul MATLAB sau din alte fișiere M, asigurându-vă că indicați toate atributele necesare - argumentele de intrare în paranteze, argumentele de ieșire între paranteze drepte.

Atribuirea unui nume. Când apare un nume nou, MATLAB verifică:

  1. Este noul nume un nume de variabilă?
  2. Acest nume este numele unei subfuncții, adică o funcție care se află în același fișier M și este numită?
  3. Nu este un nume? funcţie privată, plasat în directorul privat. Acest director este accesibil doar pentru fișierele M situate cu un nivel mai înalt.
  4. Este numele unei funcții din calea sistemului MATLAB. În acest caz, sistemul utilizează fișierul M care apare primul în calea de acces.

În cazul numelor duplicate, MATLAB folosește prenumele conform ierarhiei pe 4 niveluri de mai sus. Trebuie remarcat faptul că în sistem MATLAB 5 este permisă redefinirea unei funcţii după regulile programării orientate pe obiecte.

Apelarea unei funcții. La apelând funcția M, sistemul MATLAB traduce funcția în pseudocod și o încarcă în memorie. Acest lucru evită re-analizarea. Pseudocodul rămâne în memorie până când este utilizată comanda de ștergere sau se încheie sesiunea.

Următoarele modificări ale comenzii clear sunt valabile:

Această comandă face analizare M fișier average.m și salvează pseudocodul rezultat într-un fișier numit average.p. Acest lucru evită analizarea repetată în timpul unei noi sesiuni. Deoarece analizarea este atât de rapidă, utilizarea comenzii pcode are un impact redus asupra vitezei de execuție.
Utilizarea codului P este recomandabilă în două cazuri:

  • când trebuie să analizați un numar mare Fișiere M necesare pentru redarea obiectelor grafice în aplicațiile de dezvoltare GUI utilizator; în acest caz, utilizarea codului P oferă o accelerare semnificativă;
  • atunci când utilizatorul dorește să ascundă algoritmii implementați în fișierul M.

Reguli pentru transmiterea argumentelor. Din punctul de vedere al programatorului, sistemul MATLAB transmite un argument după valoarea sa. De fapt, doar acele argumente care se modifică în timpul funcționării acestei funcții sunt transmise ca valori. Dacă o funcție nu modifică valoarea argumentului, ci o folosește doar pentru calcule, atunci argumentul este transmis prin referință, ceea ce permite optimizarea utilizării memoriei.

Spații de lucru funcționale. Fiecărei funcție M i se aloca o zonă de memorie suplimentară care nu se suprapune cu spațiul de lucru al sistemului MATLAB. Această zonă se numește zona de lucru a funcției. Fiecare funcție are propriul spațiu de lucru.

Când lucrați cu MATLAB, puteți accesa doar variabilele situate în spațiul de lucru al sistemului sau în Zona de lucru funcții. Dacă o variabilă este declarată globală, atunci poate fi considerată ca aparținând mai multor spații de lucru.

Verificarea numărului de argumente. Funcțiile nargin și nargout vă permit să determinați numărul de argumente de intrare și de ieșire ale funcției apelate. Aceste informații pot fi utilizate ulterior în declarațiile de condiție pentru a modifica progresul calculelor.

Exemplu:

funcția c = testarg1(a,b)
if(nargin == 1)
c = a.^2;
elseif (nargin == 2)
c = + b;
Sfârşit

Când i se oferă un singur argument de intrare, funcția calculează pătratul variabilei de intrare; când sunt date două argumente, se efectuează o operație de adunare.

Să luăm în considerare mai multe exemplu complex- selectarea unei părți dintr-un șir de caractere înaintea delimitatorului, care poate fi un spațiu sau orice alt caracter. Când i se oferă un singur argument de intrare, funcția trebuie să selecteze partea din șir înaintea delimitatorului, care în mod implicit este un spațiu; și toate spațiile de la începutul liniei sunt eliminate. Când se specifică două argumente, al doilea argument trebuie să fie un caracter delimitator.

Această funcție este împachetată ca funcția M strtok, care se află în directorul strfun.

Funcția trebuie să aibă cel puțin un argument de intrare

Dacă există un singur argument de intrare, atunci un spațiu este folosit ca delimitator.

Determinați începutul subșirului selectat

Determinați sfârșitul subșirului selectat

Evidențiind restul liniei

Rețineți că ordinea argumentelor din lista de ieșire este important. La apelarea unei funcții M, dacă nu este specificat niciun argument de ieșire, primul argument este afișat implicit. Pentru a genera și a scoate argumente ulterioare, este necesar să se organizeze un apel adecvat la funcția M.

Liste de argumente.

Funcțiile varargin și varargout vă permit să transmiteți un număr arbitrar de argumente de intrare și de ieșire. Sistemul MATLAB împachetează toate argumentele de intrare și ieșire specificate într-o matrice de celule. Fiecare celulă poate conține orice tip și orice cantitate de date.

Exemplu
Funcția testvar acceptă orice număr de vectori cu două elemente ca argumente de intrare și afișează liniile care le conectează.

funcția testvar(varargin)

pentru i = 1:lungime(varargin)
x(i) = varargin(i)(1);
y(i) = varargin(i)(2);
Sfârşit

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

Astfel, funcția testvar poate funcționa cu liste de intrare de diferite lungimi.

Exemplu:

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

Formarea matricei de intrare varargin. Deoarece lista varargin stochează argumentele de intrare într-o matrice de celule, este necesar să folosiți indici de celule pentru a prelua datele. Un index de celulă are două componente:
- index în paranteze;
- index în paranteze.

Exemplu:

y(i)= varargin(i)(2);
Aici, indexul din acolade (i) indică adresa celulei i-a a matricei varargin, iar indexul din paranteze (2) indică al doilea element din celulă.

Formarea matricei de ieșire varargout. Dacă există un număr arbitrar de argumente de ieșire, acestea trebuie să fie împachetate într-o matrice de celule varargout. Pentru a determina numărul de argumente de ieșire pentru o funcție, trebuie să utilizați funcția nargout.

Exemplu
Următoarea funcție folosește o matrice cu două coloane ca intrare, unde prima coloană este un set de valori de coordonate x, iar a doua este un set de valori de coordonate y. Funcția împarte matricea în vectori individuali, care pot fi transmise funcției testvar ca intrări.

functie = testvar2(arrayin)
pentru i = 1:nargout
varargout(i) = arrayin(i, :);
Sfârşit

Operatorul de atribuire în pentru buclă folosește sintaxa de atribuire a matricei de celule. Partea stângă a operatorului de atribuire folosește acolade pentru a indica faptul că datele șirului de matrice sunt alocate celulei.

Următoarele instrucțiuni pot fi folosite pentru a apela funcția testvar2:

a = ";
= testvar2(a)

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

Utilizarea matricelor de celule în listele de argumente. Argumentele varargin și varargout trebuie să fie ultimele din listele lor de argumente respective. La apelarea unei funcții, argumentele care preced varargout trebuie evaluate în cadrul funcției.

Exemplu
Titlurile funcțiilor de mai jos arată utilizarea corectă listează varargin și varargout:

function = example1(a,b,varargin)
funcția = exemplu2(x1,y1,x2,y2,flag)

Tipuri variabile.

Variabile locale și globale. Utilizarea variabilelor într-un fișier M nu este diferită de utilizarea variabilelor pe linia de comandă, și anume:

  • variabilele nu necesită declarare; Înainte de a atribui o valoare unei variabile, trebuie să vă asigurați că tuturor variabilelor din partea dreaptă li s-au atribuit valori;
  • orice operațiune de atribuire creează o variabilă dacă este necesar sau modifică valoarea unei variabile existente;
  • numele variabilelor încep cu o literă urmată de orice număr de litere, cifre și litere de subliniere; MATLAB face distincție între caracterele mari și mici;
  • Numele variabilei nu trebuie să depășească 31 de caractere. Mai exact, numele poate fi mai lung, dar MATLAB ține cont doar de primele 31 de caractere.

De obicei, fiecare funcție M specificată ca fișier M are propriile variabile locale, care sunt distincte de variabilele altor funcții și variabile ale spațiului de lucru. Cu toate acestea, dacă mai multe funcții și un spațiu de lucru declară o variabilă globală, atunci toate au o singură copie a acelei variabile. Orice atribuire acestei variabile se aplică tuturor funcțiilor în care este declarată globală.

Exemplu.
Să presupunem că vrem să studiem influența coeficienților a și b pentru un model prădător-pradă descris de ecuațiile Lotke-Volterra:

Să creăm un fișier M lotka.m:

funcția yp = lotka(t, y)
%LOTKA din ecuația Lotke-Volterra pentru modelul prădător-pradă

global ALPHA BETA
yp = ;

Apoi, prin linia de comandă, introduceți operatorii:

global ALPHA BETA
ALPHA = 0,01;
BETA = 0,02;
= ode23("lotka2",,);
complot(t,y)

Comanda globală declară variabilele ALPHA și BETA globale și, prin urmare, sunt disponibile în funcția lotka.m. Astfel, acestea pot fi modificate din linia de comandă, iar noi soluții vor fi obținute fără editarea fișierului M lotka.m.

Pentru a lucra cu variabile globale aveți nevoie de:

  • declarați variabila ca globală în fiecare funcție M care are nevoie de această variabilă. Pentru ca o variabilă de spațiu de lucru să fie globală, trebuie să o declarați ca globală din linia de comandă;
  • în fiecare funcție, utilizați comanda globală înainte de prima apariție a variabilei; Este recomandat să specificați comanda globală la începutul fișierului M.

Numele variabilelor globale sunt de obicei mai lungi și mai semnificative decât numele variabilelor locale și sunt adesea folosite litere mari. Acest lucru este opțional, dar recomandat pentru a asigura lizibilitatea codului MATLAB și pentru a reduce șansa de a suprascrie accidental o variabilă globală.

Variabile speciale. Unele funcții M returnează variabile speciale care joacă un rol important atunci când lucrează în mediul de sistem MATLAB:

ans Ultimul rezultat; dacă variabila de ieșire nu este specificată, atunci MATLAB folosește variabila ans.
eps Precizie în virgulă flotantă; determinată de lungimea mantisei și pentru PC eps = 2.220446049250313e-016
realmax Numărul maxim în virgulă mobilă care poate fi reprezentat de un computer; pentru PC realmax = 1,797693134862316e+308.
realmin Cel mai mic număr în virgulă mobilă care poate fi reprezentat de un computer; pentru PC realmin = 2.225073858507202e-308.
pi Variabilă specială pentru numărul p: pi=3,141592653589793e+000.
eu, j Variabile speciale pentru a reprezenta unitatea imaginară
inf Variabilă specială pentru a reprezenta simbolul infinitului?
NaN O variabilă specială pentru a denota o valoare nedefinită - rezultatul unor operații precum: 0/0, inf/inf.
calculator O variabilă specială pentru a indica tipul de computer utilizat; pentru PC - PCWIN.
flops O variabilă specială pentru a indica numărul de operații în virgulă mobilă.
versiune O variabilă specială pentru a stoca numărul versiunii de sistem MATLAB utilizate.

Funcțiile M corespunzătoare care generează aceste variabile speciale se află în directorul elmat și sunt susținute de un ajutor online.

Tipuri de date.

MATLAB definește șase tipuri de bază date, fiecare dintre acestea fiind o matrice multidimensională. Cele șase clase sunt double, char, sparse, uint8, cell și struct. Versiunile bidimensionale ale acestor tablouri sunt numite matrici, de unde MATLAB își primește numele MATRIX LAB.

Diagrama apartenenței unui anumit obiect al sistemului MATLAB la una dintre clase are următoarea formă (Fig. 3.1):

Este posibil ca de cele mai multe ori să aveți de-a face doar cu două dintre aceste tipuri de date: o matrice de duble și o matrice de caractere (char), sau doar un șir. Acest lucru se datorează faptului că toate calculele din MATLAB sunt efectuate cu precizie dublă și majoritatea funcțiilor operează pe matrice sau șiruri cu precizie dublă.

Alte tipuri de date sunt destinate unor astfel de persoane aplicatii speciale, cum ar fi lucrul cu matrici rare (sparse), prelucrarea imaginilor (uint8), lucrul cu matrice de dimensiuni mari (celulă și struct).

Nu puteți seta tipul de variabilă la numeric sau matrice. Aceste tipuri sunt numite virtuale și servesc numai pentru gruparea variabilelor care au atribute comune.

Tipul uint8 este conceput pentru a stoca datele în mod eficient în memorie. Numai operațiunile de bază de indexare și redimensionare pot fi aplicate datelor de acest tip, dar nu operatie matematica. Pentru a face acest lucru, astfel de matrice trebuie convertite la tipul dublu.

Creare propriile tipuriși adăugarea de metode pentru tipurile încorporate. Tabelul de mai jos conține al șaptelea tip de date - UserObject. limbajul MATLAB vă permite să vă creați propriile tipuri de date și să lucrați cu ele în același mod ca și tipurile încorporate.

Pentru tipurile de date încorporate, puteți suprascrie o metodă în același mod ca și pentru un obiect. De exemplu, pentru a seta o operație de sortare pentru o matrice de tip uint8, trebuie să creați o metodă (sort.m sau sort.mex) și să o plasați într-un director special @uint8.

Următorul tabel descrie tipurile de date mai detaliat.

Clasă Exemplu Descriere
Dubla [ 1 2; 3 4]
5+6i
Matrice numerică dublă precizie (acesta este cel mai comun tip de variabilă în MATLAB
Char "Buna ziua" Matrice de caractere(fiecare caracter are 16 biți lungime), adesea numit șir.
Rară Speye(5) Matrice rară dublă precizie (doar bidimensională). O structură rară este utilizată pentru a stoca matrice cu un număr mic de elemente diferite de zero, ceea ce permite utilizarea doar a unei mici părți din memoria necesară pentru stocarea întregii matrice. Matricele rare necesită utilizarea unor metode speciale pentru a rezolva probleme.
Celulă (17 ochi „bună ziua” (2)) Matrice de celule. Elementele acestei matrice conțin alte matrice. Matricele de celule vă permit să îmbinați date aferente, Pot fi diferite dimensiuni, într-o singură structură.
Struct A.zi = 12; A.culoare = „Roșu”; A.mat = magie(3); Matrice de înregistrări. Include numele câmpurilor. Câmpurile în sine pot conține matrice. Ca și matricele de celule, matricele de înregistrări combină date și informații legate de acestea.
Uint8 Uint8(magie(3)) Matrice de numere întregi fără semn pe 8 biți. Vă permite să stocați numere întregi în intervalul de la 0 la 255 în 1/8 din memoria necesară pentru o matrice de precizie dublă. Nu sunt definite operații matematice pentru aceste tablouri.
UserObject inline ("sin(x)") Tip de date definit de utilizator.

Descrierea diagramei. Liniile de legătură din diagramă (Fig. 3.1) determină dacă un anumit tip de date aparține uneia sau mai multor clase.

Exemplu
O matrice de tip sparse are și tipuri duble și numerice. Operatori
isa(S",rar")
isa(S",dublu")
isa(S",numeric")

returnează valorile 1 (adevărat), adică S este o matrice numerică rară cu precizie dublă.

Rețineți că tipul de matrice este în partea de sus a diagramei. Aceasta înseamnă că toate datele sistemului MATLAB sunt matrice.

Fiecare tip de date poate fi asociat cu propriile funcții și operatori de procesare, sau cu alte cuvinte, cu metode. Tipurile de date copil, situate sub tipul părinte din diagramă, sunt, de asemenea, acceptate de metodele părintelui. Prin urmare, o matrice de tip double este suportată de metodele utilizate pentru tipul numeric.

Tabelul prezintă câteva dintre aceste metode:

Clasă Metodă
Matrice Calculați dimensiunea, lungimea, ndims, uniunea matricei (), transpunerea, subindexul, remodelarea și permutarea dimensiunilor unui tablou multidimensional.
Celula matrice de celule Indexarea folosind acolade(e1,…,en) și separând elementele listei cu virgule.
String Char Funcții șir (strcmp, inferior), conversie automată în tip dublu pentru aplicarea metodelor de clasă dublă.
Dubla Operații aritmetice și logice, functii matematice, funcțiile matricelor.
Numeric Căutare (găsire), prelucrare de numere complexe (reale, imagine), formarea vectorilor, selecția rândurilor, coloanelor, subblocuri matrice, extindere scalară.
Rară Operații pe matrici rare.
Matrice de înregistrări Struct Acces la conținutul câmpului.câmp (separator de elemente de listă - virgulă).
Uint8 Operațiune de stocare (utilizată cel mai adesea cu PPP Image Processing Toolbox)
UserObject Definit de utilizator

Matrice goale. Versiuni timpurii Sistemele MATLAB au permis o singură formă a unui tablou gol de dimensiunea 0x0, notat cu . MATLAB 5 acceptă tablouri care au una, dar nu toate, dimensiunile lor egale cu zero, adică tablouri cu dimensiunile 1x0, 10x0x20 sau definite ca goale.

Paranteza patrata continuă să desemneze tabloul 0x0. Matricele goale de alte dimensiuni pot fi create folosind funcțiile zerouri, unu, rand sau ochi. De exemplu, pentru a forma o matrice goală de dimensiunea 0x5, puteți utiliza operatorul de atribuire
E = zerouri (0,5).

Scopul principal al tablourilor goale este ca orice operație care este definită pe o matrice (matrice) de dimensiunea m?n să determine rezultatul corect pentru cazul în care m sau n este zero. Mărimea tabloului rezultat (matricea) trebuie să se potrivească valoarea functiei, calculat la zero.

De exemplu, operatorul
C=
necesită ca tablourile A și B să aibă același număr de rânduri. Astfel, dacă tabloul A este de dimensiunea m x n și B este de dimensiunea m x p, atunci C este o matrice de dimensiunea m x (n+p). Rezultatul va fi corect dacă oricare dintre parametrii m, n sau p este zero.

Multe operații din MATLAB creează un vector rând sau un vector coloană. În acest caz, rezultatul poate fi fie un vector rând gol
r = zerouri (1, 0),
sau un vector coloană gol
C = zerouri (0, 1).

MATLAB 5 acceptă regulile de sistem MATLAB 4 pentru instrucțiunile if și while. De exemplu, operator condițional tip
dacă A, S1, altfel, S0, se încheie
execută instrucțiunea S0 când A este o matrice goală.

Unele funcții MATLAB precum sum, prod, min și max reduc dimensionalitatea rezultatului: dacă argumentul este un tablou, atunci rezultatul este un vector; dacă argumentul este un vector, atunci rezultatul este un scalar.

Pentru aceste funcții, când tabloul de intrare este gol, se obțin următoarele rezultate:
suma() = 0 ;
prod() = 1;
max() = ;
min() = .

În MATLAB, există un tip special de variabilă a cărei valoare, cu excepția variabilei ans, nu poate fi modificată. Aceste variabile sunt numite variabile de sistem. Sunt concepute pentru mai mult munca eficientaîn timpul calculelor, precum și pentru ca sistemul să afișeze mesaje atunci când utilizatorul setează incorect problema. Tabelul oferă o listă de variabile de sistem utilizate în MATLAB.

Notații variabile de sistem MATLAB

Numere complexe

În sistemul MATLAB, numerele complexe, ca și numerele reale, sunt de tip dublu. Prin urmare, nu este nevoie de marcaje separate care indică lucrul cu numere complexe. Înregistrarea se face astfel: 3+7i; -7,1+0,831E+2*i; 5-3j. Exemplul arată că pentru a desemna unitatea imaginară, puteți folosi una dintre literele: i sau j. În mod implicit, MATLAB folosește litera i .

Mai jos este un exemplu de calcul al rădăcinii pătrate a lui -1

>> b=sqrt(a)

Pentru numerele complexe, puteți utiliza aceleași funcții ca și pentru numerele reale, cu excepția cazurilor evidente în care o funcție nu poate avea un argument complex. De exemplu, funcția rem (x,y) calculează restul lui x împărțit la y, astfel încât utilizarea unui număr complex ca argument va produce o eroare:

>> a=2+3*i;

>> rem(a,3)

Eroare la utilizarea ==> rem

Argumentele trebuie să fie reale.

Alături de aceasta, există și o serie de funcții care se aplică numai variabilelor complexe.

Funcții ale variabilelor complexe

De exemplu:

>> abs(2+3i)

>> conj(2+3i)

2,0000 - 3,0000i

>> isreal(x)

În ultimul exemplu, funcția isreal a returnat numărul 0, deoarece variabila x nu este validă.

Ode23("lotka2",,); plot(t,y) Comanda globală declară variabilele ALPHA și BETA globale și, prin urmare, sunt disponibile în funcția lotka.m. Astfel, acestea pot fi modificate din linia de comandă, iar noi soluții vor fi obținute fără editarea fișierului M lotka.m. Pentru a lucra cu variabile globale, trebuie: să declarați variabila ca globală în fiecare funcție M care necesită această variabilă. Pentru ca o variabilă de spațiu de lucru să fie globală, trebuie să o declarați ca globală din linia de comandă; în fiecare funcție, utilizați comanda globală înainte de prima apariție a variabilei; Se recomandă să specificați comanda globală la începutul fișierului M. Numele variabilelor globale sunt de obicei mai lungi și mai descriptive decât numele variabilelor locale și folosesc adesea majuscule. Acest lucru este opțional, dar recomandat pentru a asigura lizibilitatea codului MATLAB și pentru a reduce șansa de a suprascrie accidental o variabilă globală. Variabile speciale. Unele funcții M returnează variabile speciale care joacă un rol important atunci când lucrează în mediul de sistem MATLAB: Ultimul rezultat; dacă variabila de ieșire nu este așa specificată, atunci MATLAB folosește variabila ans. Precizie în virgulă flotantă; eps este determinat de lungimea mantisei și pentru PC eps = 2,220446049250313e-016 Număr maxim în virgulă mobilă reprezentabil de realmax într-un computer; pentru PC realmax = 1,797693134862316e+308. Cel mai mic număr în virgulă mobilă care poate fi reprezentat prin realmin într-un computer; pentru PC realmin = 2.225073858507202e-308. Variabilă specială pentru numărul p: pi pi=3,141592653589793e+000. 70 Variabile speciale pentru a desemna unitatea imaginară i, j Variabilă specială pentru a desemna simbolul infinitului inf? O variabilă specială pentru a desemna o valoare NaN nedefinită - rezultatul operațiilor de tip: 0/0, inf/inf. O variabilă specială pentru a indica tipul de computer utilizat; pentru PC - PCWIN. O variabilă specială pentru a indica numărul de flop-uri ale operațiunilor în virgulă mobilă. O variabilă specială pentru stocarea numărului versiunii versiunii utilizate a sistemului MATLAB. Funcțiile M corespunzătoare care generează aceste variabile speciale se află în directorul elmat și sunt susținute de un ajutor online. Tipuri de date MATLAB definește șase tipuri de date de bază, fiecare dintre acestea fiind o matrice multidimensională. Cele șase clase sunt double, char, sparse, uint8, cell și struct. Versiunile bidimensionale ale acestor tablouri sunt numite matrici, de unde MATLAB își primește numele MATRIX LAB. O diagramă a apartenenței unui anumit obiect de sistem MATLAB într-una dintre clase arată astfel (Figura 3.1): Figura 3.1 71 Este probabil ca cel mai adesea să aveți de-a face cu doar două dintre aceste tipuri de date: o matrice de date duble. numere de precizie (duble) și o matrice de caractere (char), sau doar un șir. Acest lucru se datorează faptului că toate calculele din MATLAB sunt efectuate cu precizie dublă, iar majoritatea funcțiilor operează pe matrice sau șiruri cu precizie dublă. Alte tipuri de date sunt destinate unor astfel de aplicații speciale, cum ar fi lucrul cu matrici rare (sparse), prelucrarea imaginilor (uint8), lucrul cu matrice de dimensiuni mari (celulă și struct). Nu puteți seta tipul de variabilă la numeric sau matrice. Aceste tipuri sunt numite virtuale și servesc numai pentru gruparea variabilelor care au atribute comune. Tipul uint8 este conceput pentru a stoca datele în mod eficient în memorie. La acest tip de date pot fi aplicate doar operații de bază de indexare și redimensionare, dar nu pot fi efectuate operații matematice. Pentru a face acest lucru, astfel de matrice trebuie convertite la tipul dublu. Creați-vă propriile tipuri și adăugați metode pentru tipurile încorporate. Tabelul de mai jos conține al șaptelea tip de date - UserObject. Limbajul MATLAB vă permite să vă creați propriile tipuri de date și să lucrați cu ele în același mod ca și tipurile încorporate. Pentru tipurile de date încorporate, puteți suprascrie o metodă în același mod ca și pentru un obiect. De exemplu, pentru a specifica o operație de sortare pentru o matrice de tip uint8, trebuie să creați o metodă (sort.m sau sort.mex) și să o plasați într-un director special @uint8. Următorul tabel descrie tipurile de date mai detaliat. Exemplu de clasă Descriere Matrice numerică cu precizie dublă (aceasta este cea mai comună [ 1 2; 3 4] Tip dublu de variabilă 5 + 6i în MATLAB 72 Matrice de caractere (fiecare caracter are 16 biți), adesea numit șir Char „Bună ziua” . Matrice rară cu precizie dublă (numai bidimensională) Structura rară este utilizată pentru a stoca matrice cu un număr mic de elemente diferite de zero, permițând lui Sparse Speye(5) să utilizeze doar o fracțiune din memoria necesară. matrice Sparse - matricele căsătorite necesită utilizarea unor metode speciale pentru a rezolva probleme. Matricele de celule permit celulei (17 ochi „bună ziua” (2)) să combine date asociate, posibil de dimensiuni diferite, într-o singură structură. O serie de înregistrări. Include numele câmpurilor. A.zi = 12; A.color = Câmpurile în sine pot conține matrice. Similar cu Struct „Roșu”; A.mat = matrice de celule, matrice magic(3); înregistrările combină date și informații legate de acestea. 73 Matrice de numere întregi fără semn pe 8 biți. Vă permite să stocați numere întregi în intervalul de la 0 la 255 în 1/8 din memoria necesară de Uint8 Uint8 (magic(3)) pentru o matrice cu precizie dublă. Nu sunt definite operații matematice pentru aceste tablouri. Tip de date definit de utilizator UserObject inline ("sin(x)"). Descrierea diagramei. Liniile de legătură din diagramă (Figura 3.1) determină dacă un anumit tip de date aparține uneia sau mai multor clase. Exemplu. O matrice de tip sparse are și tipuri duble și numerice. Operatorii isa(S",sparse") isa(S",double") isa(S",numeric") returnează valorile 1 (adevărat), adică S este o matrice numerică rară de dublă precizie. Rețineți că tipul de matrice este în partea de sus a diagramei. Aceasta înseamnă că toate datele sistemului MATLAB sunt matrice. Fiecare tip de date poate fi asociat cu propriile funcții și operatori de procesare, sau cu alte cuvinte, cu metode. Tipurile de date copil, situate sub tipul părinte din diagramă, sunt, de asemenea, acceptate de metodele părintelui. Prin urmare, o matrice de tip double este suportată de metodele utilizate pentru tipul numeric. Tabelul prezintă câteva dintre aceste metode: Metoda clasei 74 Calculul mărimii (dimensiunii), lungimii (lungimii), dimensiunilor (ndims), uniunii matricei (), transpunerii (transpunerii), indexării matricei multidimensionale (subindex), suprascrierii (reformarii) și permutare (permutare) a dimensiunilor unui tablou multidimensional. Indexarea folosind forme ondulate - Matrice de celule din partea celulei (e1,…,en) și separarea elementelor listei cu virgule. Funcții șir (strcmp, inferior), conversie automată String Charical la tipul dublu pentru aplicarea metodelor clasei duble. Aritmetică și operatii logice, funcții matematice, funcții matematice duble, funcții de matrice. Căutare (găsire), prelucrare de numere complexe (reale, imagine), formarea vectorilor, selecția rândurilor, coloanelor, subblocuri matrice, extindere scalară. Operații rare pe matrici rare. Matrice de înregistrări Acces la conținutul câmpului.câmp (separatorul Struct al elementelor listei este o virgulă). Operațiune de stocare (utilizată cel mai adesea cu Uint8 PPP Image Processing Toolbox) UserObject Matrice goală definită de utilizator. Versiunile timpurii ale MATLAB au permis o singură formă a unui tablou gol de dimensiunea 0x0, notat cu . MATLAB acceptă tablouri care au una, dar nu toate, dimensiunile lor egale cu zero, adică tablouri cu dimensiuni de 1x0, 10x0x20 sau definite ca goale. Parantezele pătrate continuă să indice matricea 0x0. Matricele goale de alte dimensiuni pot fi create folosind funcțiile zerouri, unu, rand sau ochi. De exemplu, pentru a forma o matrice goală de dimensiunea 0x5, puteți utiliza operatorul de atribuire E = zeros(0,5). 75 Scopul principal al tablourilor goale este ca orice operație care este definită pe o matrice (matrice) de dimensiunea m?n să determine rezultatul corect pentru cazul în care m sau n este zero. Mărimea tabloului rezultat (matricea) trebuie să corespundă valorii funcției calculate la zero. De exemplu, operatorul C = necesită ca tablourile A și B să aibă acelasi numar linii. Astfel, dacă tabloul A are dimensiunea m?n, iar B are dimensiunea mp, atunci C este o matrice de dimensiunea m?(n+p). Rezultatul va fi corect dacă oricare dintre parametrii m, n sau p este zero. Multe operații din MATLAB creează un vector rând sau un vector coloană. În acest caz, rezultatul poate fi fie vectorul rând r = zeros(1, 0) fie vectorul coloană gol C = zeros(0, 1). MATLAB 5 și versiunile ulterioare acceptă regulile de sistem MATLAB 4 pentru instrucțiunile if și while. De exemplu, o instrucțiune condiționată precum if A, S1, else, S0, end execută instrucțiunea S0 când A este o matrice goală. Unele funcții MATLAB precum sum, prod, min și max reduc dimensionalitatea rezultatului: dacă argumentul este un tablou, atunci rezultatul este un vector; dacă argumentul este un vector, atunci rezultatul este un scalar. Pentru aceste funcții, dacă tabloul de intrare este gol, se obțin următoarele rezultate: sum() = 0 ; prod() = 1; max() = ; min() = . 3.4 Operatori ai sistemului MATLAB 5 Combinarea operatorilor în expresii aritmetice. Funcții încorporate Operatori MATLAB Operatorii MATLAB se împart în trei categorii: 76 de operatori aritmetici vă permit să construiți expresii aritmetice și să efectuați calcule numerice. Operatorii relaționali vă permit să comparați operanzi numerici. operatorii logici vă permit să construiți expresii logice. Operatori logici au cea mai mică prioritate în raport cu operatorii relaționali și aritmetici. Operatori aritmetici. Când se lucrează cu o matrice de numere, se stabilesc următoarele niveluri de prioritate între operațiile aritmetice: nivelul 1: transpunerea în funcție de element (."), exponențierea în funcție de element (.^), transpunerea matricei conjugate hermitian ("), exponențiarea matricei ( ^); nivelul 2: adunare unară (+), scădere unară (-); nivelul 3: înmulțirea matricei (.*), împărțirea la dreapta (./), împărțirea matricei stânga (.\), înmulțirea matricei (*), rezolvarea sistemelor ecuatii lineare, operațiune (/), operațiune (\); nivelul 4: adunare (+), scădere (-); nivelul 5: operator de formare a matricei (:). În cadrul fiecărui nivel, operatorii au prioritate egală și sunt evaluați în ordine de la stânga la dreapta. Ordinea implicită poate fi modificată folosind paranteze. Exemplu. Fie 2 vectori A = ; B = ; Rezultatele executării operatorului C = A./B. ^2 este egal cu C = 0,7500 9,0000 0,2000 , iar operatorul C = (A./B). ^2 este egal cu C = 2,2500 81,0000 1,0000. După cum puteți vedea, rezultatele sunt complet diferite. Operatorii aritmetici permit utilizarea expresiilor de index. De exemplu: 77 b = sqrt (A(2)) + 2*B (1) b=7 Operatorii aritmetici ai sistemului MATLAB lucrează, de regulă, cu tablouri de aceeași dimensiune. Pentru vectori și tablouri dreptunghiulare, ambii operanzi trebuie să aibă aceeași dimensiune, cu excepția cazului în care unul dintre ei este scalar. Dacă unul dintre operanzi este un scalar, iar celălalt nu, MATLAB presupune că scalarul este extins la dimensiunea celui de-al doilea operand și operația specificată este aplicată fiecărui element. Această operație se numește expansiune scalară. Operatori relaționali. Următorii 6 operatori relaționali sunt definiți în MATLAB:< Меньше <= Меньше или равно >Mai mare decât > = Mai mare sau egal cu == Egal cu identic ~ = Nu este egal Operatorii relaționali efectuează o comparație element cu element a două tablouri de dimensiuni egale. Pentru vectori și tablouri dreptunghiulare, ambii operanzi trebuie să aibă aceeași dimensiune, cu excepția cazului în care unul dintre ei este scalar. În acest caz, MATLAB compară scalarul cu fiecare element al celuilalt operand. Pozițiile în care această relație este adevărată primesc valoarea 1, unde fals - 0. Operatorii relaționali sunt de obicei utilizați pentru a modifica secvența de execuție a instrucțiunilor programului. Prin urmare, ele sunt folosite cel mai adesea în corpul instrucțiunilor if, for, while, switch. Operatorii relaționali sunt întotdeauna executați element cu element. Exemplu. Să comparăm două matrice folosind condiția A