Sunteți pe pagina 1din 10

Informatica aplicată 2 - MATLAB 1

CURS 2

FUNDAMENTELE PROGRAMĂRII ÎN MATLAB (partea 2)

3. Crearea fișierelor Matlab (.m files)


Deoarece este mult mai comod și util decât introducerea comenzilor linie după linie în fereastra de
comenzi (Command Window), se lucrează cu fișiere de tip text care conțin aceste linii program cu
comenzile necesare.
Aceste fișiere conțin coduri în limbajul Matlab și sunt denumite .m files (M-files). Fișierele se
creează utilizând Editorul de text al Matlabului (Editor), se salvează și apoi se utilizează ca o
comandă Matlab obișnuită.
Numele unui fișier care calculează, de exemplu, venitul poate fi denumită pur și simplu
calculeaza_venitul. Unii programatori folosesc pentru notarea funcțiilor metoda numită “cocoașă
de camilă” (camelCase), adică calculeazaVenitul
Există două tipuri de fișiere .m:
§ Fișiere de tip script, care nu acceptă argumente de intrare și nu returnează argumente de
ieșire. Aceste fișiere operează cu date din spațiul de lucru (Workspace)
§ Fișiere (rutine) function, care acceptă argumente de intrare și returnează argumente de
ieșire. Variabilele utilizate sunt variabile locale (interne) ale funcției
Crearea fișierelor de tip .m:

Pentru a vedea conținutul unui fișier de tip .m se folosește comanda:


type numeFisier

Caracteristicile celor două tipuri de fișiere sunt prezentate în tabelul următor:

Fișierele script Fișierele function


Nu acceptă argumente de intrare și nu returnează
Acceptă argumente de intrare și returnează ieșiri
ieșiri
Operează cu datele din Workspace Variabilele interne ale funcției sunt locale (implicit)
Utile pentru automatizarea unei serii de pași care Utile pentru extinderea limbajului Matlab pentru
trebuie executați de multe ori diverse aplicații
Informatica aplicată 2 - MATLAB 2

Fișiere script
Fișierele script sunt cele mai simple fișiere Matlab, nu au argumente de intrare sau de ieșire și
sunt utile pentru executarea secvențială a unor calcule care altfel ar trebui executate în mod repetat
de la linia de comandă. Script-urile operează cu datele din Workspace și pot crea date noi. Aceste
date sunt disponibile după terminarea execuției fișierului.
Exemplu de fișier script salvat cu numele pitagoraGen_script.m :
z=x^2+y^2-2*x*y*cosd(alfa);
r=sqrt(z)

În Command Window tastăm:


x=6;
y=7;
alfa=pi/3;

La tastarea numelui fișierului script :


pitagoraGen_script

Matlab-ul execută comenzile și returnează rezultatul:


r =
6.5574

După ce se termină execuția fișierului script, toate variabilele rămân în spațiul de lucru.

Fișiere function
Aceste fișiere acceptă argumente de intrare și furnizează argumente de ieșire. Numele fișierului
Matlab (m-file) și cel al funcției (rutinei) respective trebuie să fie identice!!! Funcțiile (rutinele)
lucrează cu variabile proprii, separate de spațiul de lucru (Workspace) uzual al Matlab-ului.
O funcție .m are următoarele părți componente:
§ Linia de definire a funcției care începe cu declarația function
§ Linia de prim help H1
§ Textul Help-ului
§ Corpul funcției
§ Comentarii
§ Linia de end (end-ul funcției nu este obligatoriu)
Informatica aplicată 2 - MATLAB 3

Exemplu:
Linia de definire
Această linie informează Matlab-ul că fișierul conține o funcție și specifică argumentele.

Linia H1
Linia H1 este o linie de comentariu care începe cu semnul % și furnizează prima linie text atunci
când utilizatorul tastează help numeleFunctiei la prompterul Matlab.
Textul Help-ului
Se poate crea un help online prin introducerea uneia sau mai multor linii de comentariu după linia
H1, fiecare linie începând cu semnul %.

Corpul funcției
Corpul funcției conține toate instrucțiunile în cod Matlab care permit efectuarea calculelor și
asignează valori argumentelor de ieșire. Declarațiile din corp pot conține apelări de funcții,
instrucțiuni de salt, intrări/ieșiri interactive, calcule etc.
Comentarii
O linie de comentariu începe după cum s-a precizat cu semnul % și poate fi plasată oriunde într-un
fișier. Pot fi adăugate linii albe oriunde în fișier, acestea fiind ignorate.
Linia end-ului (nu este obligatorie)

Exemplu: funcția pitagoraGen


function [r]=pitagoraGen(x,y,alfa)
%pitagoraGen Teorema lui Pitagora generalizata
%Calculeaza lungimea unei laturi a unui triunghi in functie
%de celelalte doua laturi ale sale si cosinusul unghiului dintre ele:
% BC^2=AB^2+AC^2-2*(AB)*(AC)*cos(BAC)
%Numarul argumentelor de intrare este 3: AB, AC si BAC

z=x^2+y^2-2*x*y*cosd(alfa);
r=sqrt(z);
end %end-ul nu este obligatoriu
Informatica aplicată 2 - MATLAB 4

În Command Window tastăm:


latura=pitagoraGen(6,7,pi/3)
latura =
6.5574

După ce se termină execuția funcției, doar variabila latura rămâne în spațiul de lucru.
Se poate vizualiza fișierul cu comanda:
type pitagoraGen

Variabile globale
Dacă se dorește ca mai multe astfel de subrutine să utilizeze o anume variabilă comună, se declară
variabila respectivă ca globală, utilizând comanda global în toate funcțiile respective.
Exemplu: funcția cadereLibera.m:
function [h]=cadereLibera(t)
%cadereLibera Calculeaza spatiul parcurs de un corp in cadere libera
%Argumentul de intrare este timpul exprimat in secunde

global AccGravit
h=1/2*AccGravit*t.^2;
end %nu este obligatoriu

Se introduc în Command Window, în mod interactiv liniile:


global AccGravit
AccGravit =9.81;
h=cadereLibera([0:0.1:5])
h =
Columns 1 through 12
0 0.0491 0.1962 0.4415 0.7848 1.2263 1.7658
2.4035 3.1392 3.9731 4.9050 5.9351
Columns 13 through 24
7.0632 8.2895 9.6138 11.0363 12.5568 14.1755 15.8922
17.7071 19.6200 21.6311 23.7402 25.9475
Columns 25 through 36
28.2528 30.6563 33.1578 35.7574 38.4552 41.2510 44.1450
47.1370 50.2272 53.4155 56.7018 60.0863
Columns 37 through 48
63.5688 67.1495 70.8282 74.6051 78.4800 82.4531 86.5242
90.6934 94.9608 99.3263 103.7898 108.3515
Columns 49 through 51
113.0112 117.7691 122.6250
Informatica aplicată 2 - MATLAB 5

4. Matrice, vectori
Pentru a lucra ușor și bine cu limbajul Matlab trebuie în primul rând să se învețe manipularea
matricelor.
În Matlab, o matrice este un tablou dreptunghiular (2 dimensiuni) de numere.
Vectorii sunt matrice cu o singură linie sau coloană, iar scalarii sunt matrice 1 × 1.
Matricele se pot introduce în mai multe moduri:
§ Introducerea unei liste explicite cu elementele matricei

§ Încărcarea unor date din fișiere externe de date

§ Generarea de matrice utilizând funcții built-in

§ Crearea de matrice în fișierele M-files

Trebuie respectate câteva convenții simple:


§ Elementele unei linii sunt separate prin virgule sau spații

§ Sfârșitul unei linii se marchează cu punct și virgulă

§ Lista de elemente care formează matricea se delimitează cu paranteze drepte

Pentru introducerea matricei lui Dürer tastăm:


A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

Matlab-ul va afișa matricea:


A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

O dată introdusă, matricea este memorată în Workspace și poate fi apelată simplu, ca A.

Operatorul :
Operatorul : este foarte important.
De exemplu, expresiile următoare sunt vectori linie:
a=1:10
a =
1 2 3 4 5 6 7 8 9 10

b=100:-7:50
b =
100 93 86 79 72 65 58 51
Informatica aplicată 2 - MATLAB 6

c=0:pi/4:pi
c =
0 0.7854 1.5708 2.3562 3.1416

5. Operațiuni elementare cu matrice


Matlab-ul operează cu matricele cu aceeași ușurință cu care lucrează cu scalarii. Pentru adunarea a
două matrice se folosește pur și simplu semnul + ca la o adunare obișnuită. Bineînțeles că matricele
trebuie să aibă aceleași dimensiuni pentru a putea fi adunate.
Exemplu:
A=[2 3;15 -3];
B=[11 -21; 12 4];
C=A+B
C =
13 -18
27 1

Pentru înmulțirea a două matrice se folosește operatorul * valabil de altfel și pentru operațiile cu
scalari.
Exemplu:
D=A*B
D =
58 -30
129 -327

Dacă dimensiunile matricelor care se înmulțesc nu sunt corespunzătoare, atunci va fi furnizat un


mesaj de eroare:
E=[1 23; -12 2;1 2]
E =
1 23
-12 2
1 2
F=A*E
??? Error using ==> *
Inner matrix dimensions must agree.
Informatica aplicată 2 - MATLAB 7

PROGRAMAREA ÎN LIMBAJUL MATLAB (partea 1)

1. Operatori și funcții logice


Operatorii Matlab pot fi clasificați în trei categorii:
§ Operatori aritmetici
§ Operatori relaționali, care compară operanzii d.p.d.v. cantitativ
§ Operatori logici
Operatori aritmetici

+ Adunare + Plus unar (B=uplus(A))


- Scădere - Minus unar (B=uminus(A))
.* Înmulțire * Înmulțire de matrice
./ Împărțire la dreapta / Împărțire matriceală la dreapta
.\ Împărțire la stânga \ Împărțire matriceală la stânga
.^ Putere ^ Putere de matrice
.' Transpusa (B=transpose(A)) '
Transpusa complex conjugată
: Operatorul două puncte (B=ctranspose(A))

Cu excepția operatorilor matriceali, operatorii aritmetici lucrează cu elementele corespondente ale


unor tablouri de dimensiuni egale. Pentru vectori și tablouri dreptunghiulare operanzii trebuie să
aibă dimensiuni corespunzătoare, cu excepția situației în care unul dintre ei este scalar; în aceste
cazuri Matlab-ul aplică scalarul fiecărui element al celuilalt operand.

Operatori relaționali

< Mai mic


<= Mai mic sau egal
> Mai mare
>= Mai mare sau egal
== Identic
~= Diferit de

Operatorii relaționali compară elementele corespondente ale unor tablouri de dimensiune egală.
Operatorii relaționali lucrează totdeauna element cu element !!!.
Informatica aplicată 2 - MATLAB 8

Exemplu:
A=[2 7 6;9 0 5;3 0.5 6];
B=[8 7 0;3 2 5;4 -1 7];
A==B
ans =
0 1 0
0 0 1
0 0 0

Operatori logici

& and (și)

| or (sau)

~ not (nu)

Ø O expresie care utilizează operatorul & este adevărată dacă ambii operanzi sunt adevărați.
În termeni numerici, expresia este adevărată dacă ambii operanzi sunt nenuli.
Exemplu:
u=[1 0 2 3 0 5];
v=[5 6 1 0 0 7];
u & v
ans =
1 0 1 0 0 1

Ø O expresie care utilizează operatorul | este adevărată dacă unul dintre operanzi este logic
adevărat sau dacă ambii operanzi sunt adevărați. În termeni numerici, expresia este falsă
dacă ambii operanzi sunt nuli.
Exemplu:
u | v
ans =
1 1 1 1 0 1

Ø O expresie care utilizează operatorul ~ neagă operandul. În termeni numerici, orice operand
nenul devine nul și orice operand nul devine unu.
Exemplu:
~u
ans =
0 1 0 0 1 0
Informatica aplicată 2 - MATLAB 9

Operatorii logici lucrează cu elementele corespondente ale unor tablouri de dimensiuni egale.
Pentru vectori și tablouri dreptunghiulare ambii operanzi trebuie să aibă aceeași dimensiune, cu
excepția situației în care unul dintre ei este scalar. În acest caz, ca și la operatorii aritmetici, Matlab-
ul aplică scalarul fiecărui element al celuilalt operand.

Funcții logice
În plus față de operatorii logici, Matlab-ul furnizează și funcții logice:

Funcție Descriere Exemple


xor EXCLUSIVE OR (SAU EXCLUSIV). Returnează logic a=1; a=1;
b=1; b=0;
adevărat dacă unul din operanzi este adevărat și
xor(a,b) xor(a,b)
celălalt fals. În termeni numerici, returnează 1 dacă ans = ans =
un operand este nenul și celălalt este zero; în caz 0 1
contrar returnează 0.
all ALL (TOATE). Returnează 1 dacă toate elementele u=[0 1 2 0];
all(u)
unui vector sunt adevărate sau nenule; în caz contrar ans =
returnează 0. Operează și cu matrice (pe coloane). 0

A=[0 1 2;3 5 0];


all(A)
ans =
0 1 0
any ANY (ORICARE). Returnează 1 dacă oricare din v=[5 0 8];
any(v)
elementele argumentului sunt adevărate sau nenule; ans =
în caz contrar returnează 0. 1
isnan TRUE FOR NOT-A-NUMBER (ADEVARAT PENTRU w=[5 NaN 8 Inf];
isnan(w)
ELEMENTELE NENUMERE). Returnează un vector care ans =
conține 1 pentru oricare din elementele argumentului 0 1 0 0
care sunt NaN și 0 pentru cele care sunt numere.
isinf TRUE FOR INFINITE ELEMENTS (ADEVARAT PENTRU w=[5 NaN 8 Inf];
isinf(w)
ELEMENTELE INFINIT). Returnează un vector care ans =
conține 1 pentru oricare din elementele argumentului 0 0 0 1
care sunt Inf și 0 pentru cele care sunt finite.
find Găsește indicii elementelor unei matrice care A se folosi help-ul
pentru mai multe
îndeplinesc o condiție relațională detalii

Prioritatea operatorilor
Deoarece se pot construi expresii cu diverse tipuri de operatori, nivelurile de prioritate determină
ordinea în care sunt evaluate expresiile. În cadrul fiecărui nivel, operatorii au prioritate egală și
sunt evaluați de la stânga la dreapta.
Informatica aplicată 2 - MATLAB 10

Regulile de prioritate de la nivelul de prioritate cel mai mare spre cel mai mic sunt prezentate în
tabelul următor.

Operator Nivel de prioritate


() Prioritate maximă
~ (negare)
.' .^ ' ^ + (plus unar)
- (minus unar)
.* ./ .\ * / \
+ (adunare) - (scădere)
: < <= > >= == ~=
& | Prioritate minimă

Bibliografie
1. ***, Fundamente de Matlab, telecom.etti.tuiasi.ro/
2. Iulian Lupea, Curs Matlab
3. Nicoleta Breaz ș.a., Modelarea matematică prin Matlab
4. ***, MATLAB User’s Guide, The Mathworks Inc., SUA

S-ar putea să vă placă și

  • Test 1
    Test 1
    Document1 pagină
    Test 1
    bigcrissmall
    Încă nu există evaluări
  • CURS 10 MOM
    CURS 10 MOM
    Document18 pagini
    CURS 10 MOM
    bigcrissmall
    Încă nu există evaluări
  • Test 10
    Test 10
    Document1 pagină
    Test 10
    bigcrissmall
    Încă nu există evaluări
  • Curs 3 MQ IQ
    Curs 3 MQ IQ
    Document5 pagini
    Curs 3 MQ IQ
    bigcrissmall
    Încă nu există evaluări
  • Test 13
    Test 13
    Document1 pagină
    Test 13
    bigcrissmall
    Încă nu există evaluări
  • Curs 9
    Curs 9
    Document7 pagini
    Curs 9
    bigcrissmall
    Încă nu există evaluări
  • Curs 4
    Curs 4
    Document6 pagini
    Curs 4
    bigcrissmall
    Încă nu există evaluări
  • Laborator Nr. 3
    Laborator Nr. 3
    Document9 pagini
    Laborator Nr. 3
    bigcrissmall
    Încă nu există evaluări
  • Curs 7
    Curs 7
    Document8 pagini
    Curs 7
    bigcrissmall
    Încă nu există evaluări
  • Curs 5
    Curs 5
    Document7 pagini
    Curs 5
    bigcrissmall
    Încă nu există evaluări
  • Curs 12
    Curs 12
    Document11 pagini
    Curs 12
    bigcrissmall
    Încă nu există evaluări
  • Curs 2 FUNCTII FOURIER PENTRU EXAMEN
    Curs 2 FUNCTII FOURIER PENTRU EXAMEN
    Document9 pagini
    Curs 2 FUNCTII FOURIER PENTRU EXAMEN
    bigcrissmall
    Încă nu există evaluări
  • Curs 1
    Curs 1
    Document15 pagini
    Curs 1
    bigcrissmall
    Încă nu există evaluări
  • Catalog Case Din Lemn 2016
    Catalog Case Din Lemn 2016
    Document74 pagini
    Catalog Case Din Lemn 2016
    bigcrissmall
    Încă nu există evaluări