Documente Academic
Documente Profesional
Documente Cultură
fundamentale de limbaj
Aplicații în inginerie
MATLAB - Prezentare generală
Operații cu matrice:
Operații aritmetice, transpunerea de matrici, matricea inversă, redimensionarea și remodelarea
matricilor, produsul Kronecker, matrici Hadamard, matrici Toeplitz
Șiruri de caractere și operații cu acestea
Reprezentări grafice 2D, 3D, reprezentări grafice specializate: statistică, econometrie, etc.
Funcții integrate: funcții trigonometrice, exponent, logaritm, transofmata Fourier, soluții
numerice pentru ecuații diferențiale, etc.
Optimizare matematică
Dezvoltare de aplicații
MATLAB – Avantaje
Faptul că MATLAB este interpretat (și nu compilat). Execuția codului este mai lentă în
comparație cu limbajele compilate. Un program MATLAB nu poate rula independent de
mediul de dezvoltare.
Costul foarte mare, ceea ce îi reduce accesibilitatea
OCTAVE – alternativă open source la
MATLAB
Software de tip “open-source”, poate fi descărcat și utilizat gratuit:
https://www.gnu.org/software/octave/
Versiunea curentă este 5.2.0
Sintaxa limbajului este identică cu Matlab
Compatibil cu majoritatea platformelor: Windows, Unix, Mac
Instrumente pentru algebră liniară, rezolvare de ecuații neliniare, sisteme de ecuații,
operații cu polinoame
Integrare și derivare numerică, soluții numerice pentru ecuații diferențiale
Community packages – colecții de programe specializate: procesare audio, automatizări,
baze de date, calcul simbolic, medicină, biologie, etc
Variabile
Valori speciale: Inf, NaN, ans, date, clock, e, pi, i, (j, 1i, 1j), true, false
Tipuri de date numerice
Clase numerice:
Întreg (cu diferite subtipuri, cu sau fără semn)
Dublă/simplă precizie (numere în virgulă mobilă)
Tipuri de date numerice
Partea reală:
real(z) Reprezentarea în formă polară
Partea imaginară:
imag(z)
r – modulul: r=abs(z)
– argumentul: arg(z)
Operații cu numere complexe
z = complex(partea_reala, partea_imaginara)
Adunarea: z1 + z2
Scăderea: z1 – z2
Înmultțirea z1 * z2
Impărțirea z1 / z2
Conjugatul unui număr complex: conj(z)
Vectori
Vector_coloană, la care elementele sunt separate de caracterul punct și virgulă sau Enter:
vector_colana= [e1; e2; e3; … en]
Element Index
1 1 element_n = vector(n)
2 2
... ...
n n
Sintaxa:
Elementele matricii sunt delimitate de caracterele [ ]:
Elementele de pe linie sunt separate prin virgulă sau prin caracterul spațiu “ ”
Liniile sunt separate prin caracterul punct și virgulă “;”
A. [e11, e12, …, e1m; e21, e22, …, e2m; … en1, en2, …, enm]
B. [e11 e12 …e1m
e21 e22 …, e2m
…
en1 en2 …, enm]
Matrici – adresarea elementelor
Funcții
Dimensiunea unei matrici se determină cu funcția: size(nume_matrice)
Funcția returnează o matrice, astfel:
[nr_linii, nr_coloane] = size(nume_matrice)
Funcția length() în cazul matricilor returnează o singură valoare, respectiv cea mai mare dintre cele
două dimensiuni
nume_matrice([i j k..])
Identificarea valorilor extreme
Funcția max(a)
Argumentul funcției max() poate fi:
un vector, caz în care funcția max returnează elementul cu cea mai mare valoare a vectorului
o matrice, caz în care funcția max returnează un vector de tip linie conținând elementul cu cea mai
mare valoare de pe fiecare coloană
Funcția min(a)
Argumentul funcției min() poate fi:
un vector, caz în care funcția max returnează elementul cu cea mai mică valoare a vectorului
o matrice, caz în care funcția max returnează un vector de tip linie conținând elementul cu cea mai
mică valoare de pe fiecare coloană
Operatori relaționali – partea 1
Transpusa unei matrici. Operatorul pentru obținerea transpusei unei matrici este caracterul ‘
(apostrof simplu). Sintaxa operației:
matrice_transpusa = matrice’
Operatorul ‘ este aplicabil și vectorilor, transformând un vector de tip linie într-un vector de tip
coloană și reciproc
Concatenarea matricilor
Concatenarea orizontală a două matrici, A și B. Sintaxa operației:
[A B]
[A, B]
Concatenarea matricilor
Concatenarea verticală a două matrici, A și B. Sintaxa operației:
1. [A; B]
2. [A
B]
COLOANE
A(l:l+o, i:i+k)
l,i l,i+1 l,i+2 … l,i+k
l+1,i l+1,i+1 l+1,i+2 … l+1,i+k
… … … … …
l+o,i l+o,i+1 l+o,i+2 … l+o,i+k
n=6, m=6
l=3, o=2
i=2, k=2
Extragerea de sub-matrici
A(l:l+o, i:i+k)
Dacă numărul de linii se înlocuiește cu caracterul ”:” sintaxa devine:
A(:, i:i+k) – returnează toate liniile și intervalul de coloane între i și i+k
A(:, i:end) – returnează toate liniile și intervalul de coloane între i și ultima coloană a matricii
Intervalul de linii/coloane care se extrag sub formă de sub-matrice din matricea de bază nu
trebuie fie în mod necesar continuu. În acest caz, sintaxa este:
A([l1, l2, …, ln], interval_colane)
A(interval_linii, [col1, col2, …,coln])
Matrici speciale
1 0 0 ... 0 0
0 1 0 ... 0 0
0 0 1 ... 0 0
... ... ... ... ... ...
0 0 0 ... 1 0
0 0 0 ... 0 1
Matrici speciale
Matricea diagonală
Fie vectorul de tip linie A = [a1, a2, …, an]
Matricea diagonală corespunzătoare vectorului A este:
a1 0 0 ... 0 0
0 a2 0 ... 0 0
0 0 a3 ... 0 0
... ... ... ... ... ...
0 0 0 an-1 0
0 0 0 0 an
matrice_diagonal = diag(A)
Remodelarea matricilor
Dacă este necesar alt număr de elemente decât cel prestabilit (100), sintaxa este:
linspace(a, b, N)
Funcția linspace() funcționează la fel și în cazul în care argumentele a și b sunt valori de tip complex
Generarea automată de vectori pe baza
distanței dintre elemente
Dacă se precizează elementele de început și de sfârșit ale vectorului a respectiv b și
distanța dintre elemente d (repartizate uniform pe intervalul a...b) sintaxa de generare a
vectorului este:
x = a:d:b
Numărul de elemente al vectorului astfel creat este:
N=|(b-a)/d| + 1
în care |x| reprezintă partea întreagă a argumentului x, obținută prin
trunchierea la cel mai mic întreg
Vectorul astfel generat este de tip linie
Operatori logici
I. Valori logice
Valorile logice admise de program sunt:
1 (true) pentru valoarea logică Adevărat (1)
0 (false) pentru valoarea logică Fals (0)
Dacă unul sau ambii operanzi ai unei operații logice nu sunt de tip logic,
operandul (sau operanzii) sunt convertiți implicit la valorile logice
corespuzătoare conform regulii de conversie
Operatori logici
II. Operatorul &.Tabelul de adevăr
Operator binar A B A&B
FALSE FALSE FALSE
Operatorul logic ”ȘI” (AND)
TRUE FALSE FALSE
Simbolul operatorului: & FALSE TRUE FALS
Sintaxa: TRUE TRUE TRUE
A& B
A B A&B
and(A, B)
0 0 0
1 0 0
A și B pot fi valori sau expresii care trebuie să poată fi evaluate
0 1 0
la valori de tip logic
1 1 1
Operatori logici
II. Operatorul |.Tabelul de adevăr
Operator binar A B A&B
FALSE FALSE FALSE
Operatorul logic ”SAU” (OR)
TRUE FALSE TRUE
Simbolul operatorului: |
FALSE TRUE TRUE
Sintaxa: TRUE TRUE TRUE
A|B
or(A, B) A B A&B
0 0 0
A și B pot fi valori sau expresii care trebuie să poată fi 1 0 1
evaluate la valori de tip logic 0 1 1
1 1 1
Operatori logici
II. Operatorul ~.Tabelul de adevăr
Operator unar A ~A
FALSE TRUE
Operatorul logic de negare (NOT) TRUE FALSE
Simbolul operatorului: ~
Sintaxa: A ~A
~A 0 1
1 0
not(A)
Scurtcircuitarea operatorului & presupune utilizarea a două caractere & în loc de unul singur: &&
Fie expresia logică:
v = a1 && a2 && a3 && ... && an
Scurtcircuitarea operatorului & prin sintaxa alternativă && determină evaluarea (de la stânga la dreapta) pânâ
la momentul la care o expresie aj este evaluată la valoarea 0 logic. Restul operanzilor nu mai sunt evaluați și
rezultatul expresiei din membrul drept al operației de atribuire este evaluat la 0 logic.
Precedența operatorilor logici
1 2
Reprezentări grafice
Reprezentări grafice 2D
plot(x, y)
x – vector (linie sau coloană) reprezentând setul de valori de pe abscisa graficului
y - vector (linie sau coloană) reprezentând setul de valori de pe ordonata graficului
Condiție:
length(x) == length(y)