Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
PACHETUL DE PROGRAME MATLAB
1.1. Functii MatLab de interes general
Functii de control general
O data cu lansarea in executie a programului, utilizatorul afla primele comenzi folosite in lucrul cu MatLab. Pentru controlul general al mediului de programare MatLab, se utilizeaza functiile:
help - furnizeaza informatii despre MatLab si functiile acestuia;
type - listeaza fisierul (*.m) mentionat. Exemplu: type nume_fisier;
which - returneaza calea in care este localizat un fisier sau o functie MatLab;
who - listeaza variabilele curente din memorie.
dir - afiseaza numele tuturor fisierelor din directorul curent sau din orice alt director precizat ca argument;
delete - permite stergerea unui fisier sau a unui grafic;
Exemplu delete nume_fisier;
cd - returneaza numele directorului curent. Daca se schimba directorul, atunci se apeleaza la sintaxa:
cd cale/num_director.
clc - sterge fereastra de comenzi;
home - pozitioneaza cursorul in locatia corespunzatoare primei linii si primei coloane;
more n) - functie pentru afisarea succesiva a n linii dintr-un program sau matrice de date. Cu tasta ENTER se trece la urmatoarea secventa de n linii, iar cu tasta Q se paraseste modul de afisare cu numar de linii impus;
echo - functie cu ajutorul careia se afiseaza liniile de program in timpul executiei acestora. In mod normal comenzile din fisierele (*.m) nu sint afisate in timpul executiei.
load incarca variabilele dintr-un fisier de date de pe disc. Incarcarea unui fisier de date se apeleaza cu sintaxa:
load nume_fisier - format date
unde:
²nume_fisier² este numele fisierului care se doreste incarcat;
²format_date² este formatul datelor (ASCII sau BINAR) din acel fisier.
Dupa incarcare, datele se regasesc in memoria calculatorului cu numele pe care l-a avut fisierul de date indiferent de forma in care fusesera stocate anterior;
save salveaza variabilele intr-un fisier de date pe disc. Se apeleaza cu sintaxa:
save nume_fisier nume variabile - format_date
unde ²nume_fisier² este numele fisierului in care se salveaza variabilele ²nume_variabile², in formatul ²format_date² (ASCII sau BINAR).
Functii de control ale variabilelor din memorie
disp - afiseaza o matrice fara sa tipareasca numele acesteia. Se apeleaza cu sintaxa:
disp(X)
unde X este un text (care se pune intre apostrofuri) sau matrice;
clear - sterge variabilele din spatiul de lucru al aplicatiei. clear X - sterge variabila X din spatiul de lucru;
size - determina dimensiunea variabilelor in MatLab,
Exemplu: size (X)
returneaza un vector linie cu doua componente [m, n], care contin numarul de linii m si de coloane n ale matricei X;
length - returneaza dimensiunea maxima a unei matrice sau lungimea unui vector. Aceasta functie este echivalenta cu instructiunea max(size(X)).
Variabile speciale si constante
ans - variabila creata automat, in care este returnat rezultatul unui calcul, atunci cind expresia nu a avut atribuit un nume;
eps - variabila in care este memorata eroarea relativa pentru calculele efectuate in virgula mobila. Valoarea ei implicita este eps = 2,2204e-016, dar poate fi redefinita la orice alta valoare;
pi - variabila permanenta pi = 3,141592;
i = variabila folosita pentru introducerea numerelor complexe z = a + bi;
inf - variabila folosita pentru reprezentarea lui plus infinit, rezultat al impartirii /0.0;
NaN - variabila folosita pentru reprezentarea lui Not-a-Number, rezultat al impartirii nedefinite 0.0/0.0.
1.2 Calculul numeric cu MatLab
Calculele aritmetice asupra tablourilor de date in MatLab pot fi:
operatii dupa regulile calculului matriceal - operatii cu matrice;
operatii dupa regulile calcului scalar - operatii cu tablouri.
Operatii aritmetice cu scalari
Expresiile aritmetice pot fi evaluate si rezultatul memorat in variabilele specificate. Astfel, instructiunea:
X = A + B
atribuie variabilei X, suma dintre variabilele A si B (ale caror valori sunt cunoscute). La fel se intimpla si in cazul operatiilor de scadere, inmultire, impartire si ridicare la putere.
O valoare introdusa fara nominalizare este atribuita variabilei ans. In variabila ans este memorata in permanenta valoarea ultimei variabile careia nu i s-a atribuit un nume.
Tabelul 1.1. Forma MatLab a operatiilor cu scalari
Operatia |
Forma algebrica |
Forma Matlab |
Adunare |
A + B |
A + B |
Scadere |
A - B |
A - B |
Inmultire |
A x B |
A * B |
Impartire la dreapta |
A : B |
A / B |
Impartire la stinga |
B : A |
A B |
Ridicare la putere |
AB |
A ^ B |
Operatii aritmetice cu tablouri
Operatiile cu tablouri (matrice sau vectori) sint operatii aritmetice intre elementele situate in aceeasi pozitie a tablourilor, cunoscute sub numele de operatii element cu element.
Pentru a preciza ca inmultirea se efectueaza element cu element intre componentele a doua matrice de aceleasi dimensiuni, se utilizeaza operatorul de inmultire precedat de punct ² ², adica:
X = A .* B
Pentru efectuarea operatiilor cu tablouri se folosesc aceeasi operatori ca in operatiile cu scalari, precedati de semnul punct ² ², semn ce indica efectuarea operatiilor in ordinea element cu element. Daca unul dintre operanti este un scalar, acesta opereaza cu fiecare element al tabloului.
1.3. Introducere in programarea MatLab
MatLab-ul este un pachet de programe care lucreaza cu un singur tip de obiecte, matrici cu elemente reale sau complexe. In acest sens, scalarii sint asimilati matricilor cu o linie si o coloana (1x1), iar vectorii sint asimilati matricilor cu o linie (1xn) sau o coloana (nx1).
Pentru folosirea matricilor nu este necesara nici declararea, nici dimensionarea lor. Aceste operatii sint efectuate automat atunci cind se lucreaza cu o noua variabila de tip matrice. Mai mult, dimensiunea unei matrice se modifica automat in timpul utilizarii variabilei care identifica acea matrice. Definirea matricilor se face astfel:
elementele unei linii trebuie separate prin virgule sau spatii;
liniile se separa prin punct-virgula;
elementele matricei sint cuprinse intre paranteze drepte si pot si pot fi numere reale sau complexe.
Operatori aritmetici
² ² - plus; ² ² - minus; ² ² - multiplicare tablouri; ² ² - multiplicare;
² ² - impartire la stinga pentru matrici; ² ² - impartire la dreapta pentru matrici;
² ² - ridicare la putere; ² ¢ ² - transpunerea unei matrice.
Operatorii relationali
² ² identitate; ² > ² mai mare; ² < ² mai mic; ² >= ² mai mare sau egal;
² <= ² mai mic sau egal; ² ² diferit.
Operatori logici
² & ² (AND) - SI; ² ² (NOT) - negare; ² ² (OR) - SAU; ² XOR ² - SAU EXCLUSIV.
La efectuarea calculelor cu valori, "true" este orice diferit de 0.
Caractere speciale
punct si virgula ² ² - indica sfirsitul de linie in crearea matricilor si suprimarea afisarii cind se evalueaza o functie;
doua puncte ² ² - folosite pentru initializarea unui vector;
Exemplu: X = 0 : 2 : 10 este echivalenta cu X =
paranteze rotunde ² ² - indica ordinea de efectuare a operatiilor aritmetice, apelul unei functii sau adresarea unui element dintr-o matrice;
parantezele drepte ² ² - utilizate in crearea vectorilor sau matricilor;
transpus ² ² - transpusa unei matrice;
caracterul ² ² permite introducerea unui comentariu. Daca acest semn va apare intr-un program, partea aferenta nu este executata.
1.4. Instructiuni repetitive
Instructiunea IF simpla
Instructiunea if poate fi implementata ca instructiune if simpla, sau, poate include clauzele else sau elseif. Forma generala a unei instructiuni if simple, este:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if expresie_logica
grup de instructiuni;
end
Daca expresia logica este adevarata se executa grupul de instructiuni dintre if si end. Daca expresia logica este falsa, se trece la prima instructiune ce urmeaza dupa end.
Exemplu:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if a < 50
k = k + 1;
s = s + k;
end
Daca a este un scalar si daca a < 50, k se incrementeaza cu 1 si apoi se aduna cu s. Altfel, cele doua instructiuni sint omise, s si k raminind cu valoarea cu care au fost initializate inainte de a ajunge la instructiunea if.
Clauza ELSE
Clauza else este utilizata pentru a executa un set de instructiuni, daca expresia logica este adevarata si un alt set de instructiuni, daca expresia logica este falsa. Forma generala a instructiunii if combinata cu clauza else este urmatoarea:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if expresie_logica
grup de instructiuni A;
else
grup de instructiuni B;
end
Daca expresia logica este adevarata se executa grupul de instructiuni A, iar daca este falsa, se executa grupul de instructiuni B.
Exemplu:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if X <= 2
f = 2 * X + 8;
else
f = 3 * X ^ 2;
end
- - - - -- - - - - - - - - - -- - - - - - - - - - - - - - -
Clauza ELSEIF
Daca functia de calculat are mai multe nivele de instructiuni if-else, este dificila determinarea expresiei logice adevarate, care selecteaza grupul de instructiuni ce urmeaza a fi executat. In acest caz, se utilizeaza clauza elseif:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if expresie_logica_1
grup de instructiuni A;
elseif expresie_logica_2
grup de instructiuni B;
elseif expresie_logica_3
grup de instructiuni C;
end
Daca expresia logica_1 este adevarata, este executat numai grupul de instructiuni A. Daca expresia logica 1 este falsa si expresia 2 este adevarata este executat numai grupul de instructiuni B. Daca expresiile logice_1 si 2 sint false, iar 3 este adevarata este executat numai grupul de instructiuni C.
Clauza elseif poate fi combinata cu clauza else intr-o structura generala:
- - - - - - - - - - - - -- - - - - - - - - - - - - - - - -
if expresie_logica_1
grup de instructiuni A;
elseif expresie_logica_2
grup de instructiuni B;
elseif expresie_logica_3
grup de instructiuni C;
else grup de instructiuni D;
end
Daca nici o expresie logica dintre primele trei nu este adevarata, se va executa grupul de instructiuni D.
Instructiunea repetitiva FOR
Aceasta instructiune permite repetarea unui grup de instructiuni din corpul buclei, de n ori. Are urmatoarea schema generala:
- - - - -- - - - --- - - - -- - - - - - - - - - - - - - -
for index = expresie
grup de instructiuni;
end
unde:
index - numele contorului;
expresie - matrice, vector sau scalar;
grup de instructiuni - este orice expresie MatLab.
In aplicatii, expresie este de cele mai multe ori de forma:
k = initial : pas : final
unde:
initial - prima valoare a lui k;
final - ultima valoare a lui k;
pas - pasul de incrementare (este omis daca pas = 1).
La fiecare pas de calcul index are valoarea unuia dintre elementele expresiei.
Daca expresie este o matrice, ciclarea se face pe coloane. Pentru un ciclu for cu pas negativ sau neintreg se genereaza mai intii un vector cu pasul si limitele dorite si se citesc valorile acestuia in cadrul buclei for.
La folosirea lui for trebuie respectate urmatoarele reguli:
indexul trebuie sa fie o variabila;
daca expresia este un vector linie, bucla se executa de atitea ori cite elemente are vectorul, de fiecare data indexul avind valoarea egala cu urmatorul element din vector;
daca expresia este o matrice, indexul va avea loc la fiecare iteratie valoarea continuta in urmatoarea coloana a matricei;
la terminarea ciclului, indexul are ultima valoare utilizata;
daca se utilizeaza operatorul ² ² pentru a defini expresia, ca in urmatorul exemplu:
for k = initial: pas : final
bucla se executa de n ori:
.
Instructiunea repetitiva WHILE
Aceasta instructiune este o structura ce se utilizeaza pentru repetarea unui set de instructiuni, atita timp cit o conditie specificata este adevarata. Formatul general al acestei instructiuni:
- - - - -- - - - --- - - - -- - - - - - - - - - - - - - -
while expresie
grup de instructiuni;
end
Grupul de instructiuni se executa cit timp expresie are toate elementele nenule. Expresie este de obicei de forma:
- - - - -- - - - --- - - - -- - - - - - - - - - - - - - -
expresie_1 conditie expresie_2
Conditia poate fi constituita din unul dintre operatorii relationali: ² ² ²<² ²>² ²>=² ²<=² ² ²
In momentul in care conditia este verificata, se executa grupul de instructiuni. Dupa ce se executa grupul de instructiuni, conditia este retestata. Cind conditia este din nou adevarata, grupul de instructiuni se executa din nou. Cind conditia este falsa, se trece la urmatoarea instructiune de dupa instructiunea end. Daca expresia este intotdeauna un adevar logic (valoare diferita de zero), bucla devine infinita, atunci se face comanda Ctrl + C iesire fortata.
Instructiunea BREAK
Aceasta instructiune se utilizeaza pentru a iesi dintr-o bucla inainte ca aceasta sa se fi terminat. Se recomanda a fi utilizata daca o conditie de eroare este detectata in interiorul unei bucle. Se mai foloseste pentru a inceta executia ciclurilor for si while. In cazul unor cicluri imbricate, break comanda iesirea din ciclul cel mai interior.
1.5. Reprezentari grafice 2D
Reprezentarea grafica in coordonate liniare
Pentru reprezentarea datelor in coordonate liniare se utilizeaza functia plot, functie ce se apeleaza cu una dintre sintaxele:
plot(Y), plot(X, Y, 'linie_tip'), plot(X, Y), plot(X1, Y1, X2, Y2, . )
plot(Y) - reprezinta grafic argumentul functiei Y functie de indici, cu urmatoarele precizari:
daca argumentul Y este complex, plot(Y) este echivalent cu plot(real(Y),imag(Y));
daca Y este un vector (linie sau coloana), functia plot traseaza graficul Y = Y(i) , unde i = 1, 2, 3, , n este numarul de ordine al elementului Y;
daca Y este o matrice m x n, functia plot traseaza graficele Yj = Yj (i), unde i = 1, 2, 3, , n este numarul de ordine al elementului de pe coloana j;
plot(X, Y) - reprezinta grafic vectorul Y functie de vectorul X, cu precizarile urmatoare:
daca X este vector, iar Y este matrice, atunci coloanele lui Y sint trasate functie de vectorul X;
daca X si Y sint matrici de aceeasi dimensiune, se reprezinta coloanele lui Y functie de coloanele lui X;
plot(X1, Y1, X2, Y2) - reprezinta simultan mai multe grafice in acelasi sistem de coordonate.
Pentru reprezentarile grafice, se asociaza fiecarei caracteristici un sir de 1 - 3 caractere. Aceste siruri de caractere trebuie cuprinse intre apostrofuri si mentionate in combinatia culoare - marker sau culoare - linie - tip. Daca se precizeaza o singura caracteristica (marker, linie sau culoare), cea de-a doua este selectata de calculator.
Pentru o citire mai precisa a datelor, pe grafic, reprezentarea se poate asocia cu functia de trasare a caroiajului (functia grid).
Reprezentarea graficelor cu bare
Reprezentarea grafica cu bare se poate face cu functia bar si se apleaza cu una dintre sintaxele:
bar(Y); bar(X, Y); [xb, yb] = bar(Y); [xb, yb] = bar(X, Y)
bar(Y) - traseaza un grafic de bare cu elementele vectorului Y;
bar(X, Y) - traseaza un grafic de bare cu elementele vectorului Y, la locatiile specificate de vectorul X, adica Y = Y(X). Valorile lui X trebuie sa fie egal departate si crescatoare;
[xb, yb] = bar(Y), [xb, yb] = bar(X, Y) - nu reprezinta graficele, dar calculeaza vectorii xb, ya, astfel incit plot(xb, yb) sa poata trasa graficul de bare. Aceasta este utila in situatiile in care se doreste un control mai mare asupra graficului.
Divizarea ferestrei grafice
Functia subplot creeaza si controleaza acoperirea ecranului cu ferestre grafice. Se apeleaza cu sintaxa:
subplot(m, n, p)
Functia subplot(m, n, p) imparte ecranul intr-o matrice m x n, creeaza axele in subfereastra p si returneaza identificatorul de control al noilor axe. Argumentele m, n si p trebuie sa fie numere intregi in intervalul . Scalarul m precizeaza in cite subferestre se imparte fereastra pe verticala, iar n specifica impartirea pe orizontala.
Personalizarea graficelor
Prin personalizarea graficelor se intelege plasarea in cimpul acestora a unor texte, etichete ale axelor, a unitatilor de masura, a scalelor, precum si a titlului.
Titlul graficului curent se plaseaza deasupra acestuia cu functia title. Se apeleaza cu sintaxa:
title ¢text¢
unde ¢text¢ este un sir de caractere care reprezinta titlul graficului.
Precizarea numelui marimilor reprezentate pe fiecare axa, precum si a unitatilor de masura folosite, se face cu functiile xlabel (pentru axa x) si ylabel (pentru axa y).
Plasarea unui text in cimpul grafic se face cu functia text; se apeleaza cu sintaxa:
text (x, y, ¢text¢
1.6. Aplicatii
Sa se genereze intr-un vector numerele de la 10 la 100, alegind un pas arbitrar.
Se va considera un sistem de 4 ecuatii cu 4 necunoscute si se va rezolva prin metoda directa.
Fie A o matrice si p un scalar. Se cere sa
se determine: A/p;
p*A; Ap, A+p; A-p. determinatul, inversa si transpusa matricei A (p
- intreg pozitiv).
Se vor rezolva urmatoarele probleme:
Sa se descrie si sa se reprezinte grafic functia modul, definita de relatia:
Sa se descrie si sa se reprezinte grafic functia definita de relatia:
Sa se genereze o matrice A, cu n linii si n+1 coloane, ele carei elemente sint:
5. Sa
se creeze
un fisier functie care sa schimbe ordinea coloanelor unei
matrice X, astfel incit elementele din prima linie sa fie ordonate crescator.
Parametrul de iesire al fisierului functie va fi matricea X modificata.
Copyright © 2024 - Toate drepturile rezervate