You are on page 1of 12

Informaticaaplicatninginerie MATLAB

CURS3

PROGRAMAREANLIMBAJULMATLAB
1. FiiereMATLAB Fiierele care conin cod MATLAB sunt numite M-files sau fiiere .m . Dup cum sa precizat n capitolul anterior, aceste fiiere pot fi funcii (function) care accept argumente de intrare i furnizeaz ieiri, sau pot fi fiiere script care execut o serie de instruciuni MATLAB. Pentru ca MATLABul s recunoasc un fiier ca fiier Mfile trebuie ca numele acestuia s se termine cu extensia.m. Fiierul .m poate fi creat cu un editor de text i apoi poate fi folosit ca orice funcie sau comand MATLAB:
1. Crearea unui fiier cu un editor de text.

2. Apelarea fiierului .m de la linia de comand sau din alt fiier .m.

Caracteristicilecelordoutipuridefiieresuntprezentatentabelulurmtor: Fiierescript Nuacceptargumentedeintrareinu returneazieiri. Opereazcudateledinworkspace. Utilepentruautomatizareauneiseriide paicaretrebuieexecutaidemulteori.


Script-uri

Fiierefunction Acceptargumentedeintrareireturneazieiri. Variabileleinternealefuncieisuntlocale(implicit). UtilepentruextinderealimbajuluiMATLABpentru diverseaplicaii.

Fiierele script sunt cele mai simple fiiere MATLAB, nu au argumente de intrare sau de ieire i sunt utile pentru executarea secvenial a unor calcule care altfel ar trebui executate n mod repetat de la linia de comand. Scripturile opereaz cu datele din workspace sau pot crea date noi. Aceste datesuntdisponibiledupterminareaexecuieifiierului.

Informaticaaplicatninginerie MATLAB

Function

Ofuncie.mareurmtoarelepricomponente: Liniadedefinireafunciei LiniadeprimhelpH1 TextulHelpului Corpulfunciei Comentarii Liniadedefinire AceastlinieinformeazMATLABulcfiierulconineofuncieispecificargumentele. Exemplu:

LiniaH1 Linia H1 este o linie de comentariu care ncepe cu semnul "%" i furnizeaz prima linie text atunci cndutilizatorultasteazhelp function_namelaprompterulMATLAB. TextulHelpului Se poate crea un help online prin introducerea uneia sau mai multor linii de comentariu dup linia H1,fiecareliniencepndcu"%". Corpulfunciei Corpul funciei conine toate instruciunile n cod MATLAB care permit efectuarea calculelor i asigneaz valori argumentelor de ieire. Declaraiile din corp pot conine apelri de funcii, instruciunidesalt,intrri/ieiriinteractive,calculeetc. Comentarii O linie de comentariu ncepe dup cum sa precizat cu semnul "%"i poate fi plasat oriunde ntrun fiier.Potfiadugateliniialbeoriundenfiier,acesteafiindignorate.

Informaticaaplicatninginerie MATLAB

2. Operatoriifunciilogice OperatoriiMATLABpotficlasificaintreicategorii: Operatoriaritmetici Operatorirelaionalicarecomparoperanziicantitativ Operatorilogici Operatoriaritmetici


+ - .* ./ .\ .^ .' :

Adunare Scdere nmulire mprireladreapta mprirelastnga Putere

+ - * / \ ^

Plusunar (B = UPLUS(A)) Minusunar (B = UMINUS(A)) nmuliredematrici mprirematricealladreapta mprirematriceallastnga Puteredematrice Transpusacomplexconjugat (B = CTRANSPOSE(A))

Transpusa(B = TRANSPOSE(A)) ' Operatoruldoupuncte

Cuexcepiaunoroperatorimatriceali,operatoriiaritmeticilucreazcuelementelecorespondenteale unor tablouri de dimensiuni egale. Pentru vectorii tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n care unul dintre ei este scalar. n acest caz MATLABulaplicscalarulfiecruielementalceluilaltoperand(proprietateadeexpansiunescalar). Operatorirelaionali
< <= > >= == ~=

Maimic Maimicsauegal Maimare Maimaresauegal Egalcu(identic) Diferitde

Operatorii relaionali compar elementele corespondente ale unor tablouri de dimensiune egal. Operatoriirelaionalilucreaztotdeaunaelementcuelement.

Informaticaaplicatninginerie MATLAB

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 0 0 1 0 0 0 1 0

Operatorilogici
& | ~

AND(I) OR(SAU) NOT(NU)

O expresie care utilizeaz operatorul & este adevrat dac ambii operanzi sunt adevrai. n termeninumerici,expresiaesteadevratdacambiioperanzisuntnenuli. 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 adevrat dac unul dintre operanzi este logic adevratsaudacambiioperanzisuntadevrai.ntermeninumerici,expresiaestefalsdac ambiioperanzisuntnuli. Exemplu:
u | v ans = 1 1 1 1 0 1

O expresie care utilizeaz operatorul ~ neag operandul. n termeni numerici, orice operand nenuldevinenulioriceoperandnuldevineunu. Exemplu:
~u ans = 0 1 0 0 1 0

Informaticaaplicatninginerie MATLAB

Operatoriilogicilucreazcuelementelecorespondentealeunortablouridedimensiuniegale.Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie s aib aceeai dimensiune, cu excepia situaiei n care unul dintre ei este scalar. n acest caz, cai la operatorii aritmetici, MATLABul aplic scalarulfiecruielementalceluilaltoperand. Funciilogice nplusfadeoperatoriilogiciMATLABulfurnizeazifunciilogice: Funcie
xor

all

Descriere EXCLUSIVEOR(SAUEXCLUSIV).Returneazlogic adevratdacunuldinoperanziesteadevrati cellaltfals.ntermeninumerici,returneaz1 dacunoperandestenenulicellaltestezero; ncazcontrarreturneaz0. ALL(TOATE).Returneaz1dactoate elementeleunuivectorsuntadevratesau nenule;ncazcontrarreturneaz0.Opereazi cumatrici(pecoloane).

Exemple
a = 1; b = 1; xor(a,b) ans = 0 u = [0 1 2 0]; all(u) ans = 0 A = [0 1 2;3 5 0]; all(A) ans = 0 1 0 v = [5 0 8]; any(v) ans = 1 w = [5 NaN 8 Inf]; isnan(w) ans = 0 1 0 0

any

ANY(ORICARE).Returneaz1dacoricaredin elementeleargumentuluisuntadevratesau nenule;ncazcontrarreturneaz0. TRUEFORNOTANUMBER(ADEVARATPENTRU ELEMENTELENENUMERE).Returneazunvector careconine1pentruoricaredinelementele argumentuluicaresuntNaNi0pentrucelecare suntnumere. TRUEFORINFINITEELEMENTS(ADEVARAT PENTRUELEMENTELEINFINIT).Returneazun vectorcareconine1pentruoricaredin elementeleargumentuluicaresuntInfi0 pentrucelecaresuntfinite. Gseteindiciielementeloruneimatricicare ndeplinescocondiierelaional

isnan

isinf

w = [5 NaN 8 Inf]; isinf(w) ans = 0 0 0 1

find

A se folosi help-ul pentru mai multe detalii

Informaticaaplicatninginerie MATLAB

Prioritateaoperatorilor Deoarece se pot construi expresii cu diverse tipuri de operatori, nivelurile de prioritate determin ordinea n care sunt evaluate expresiile. n cadrul fiecrui nivel, operatorii au prioritate egali sunt evaluaidelastngaladreapta. Regulile de prioritate sunt prezentate n continuare, de la nivelul de prioritate cel mai mare spre cel maimic. Operator
() ~ (negare) .' .^ ' - (minus unar) .* ./ .\ ^ * + (plus unar) / \

Niveldeprioritate Prioritatemaxim

+ (adunare) : & < | <=

- (scdere) > >= == ~=

Prioritateminim

3. Instruciunidesaltibucle(instruciunipentrucontrolulderulriiunuiprogram) nMATLABexistmaimultetipurideinstruciunidecontrolalbuclelor: if,elseielseifexecutungrupdeinstruciunipebazauneicondiiilogice; switch, casei otherwise execut diverse grupuri de instruciuni n funcie de valoarea unei anumitecondiiilogice; while execut un grup de instruciuni de un numr nedefinit de ori pe baza unei condiii logice; forexecutungrupdeinstruciunideunnumrfixatdeori; breakterminexecuiapentruobuclforsauwhile; try, catchschimbcontrolulbucleidacoeroareestedetectatntimpulexecuiei; returnprovoacntoarcerealafunciacareaapelatprocedura. Toateinstruciuniledesaltfolosesccomandaendpentruaindicasfritulbloculuirespectiv.

Informaticaaplicatninginerie MATLAB

Instruciunileif,if-else,if-elseif ifsimplu Sintaxa


if expresie_logica grup de instructiuni end

Schemalogic

Exemplu:
i=2; j=input(' j= '); if i+j>10 fprintf('i+j=%10.3f\n',i+j); end

if-else Sintaxa
if expresie_logica grup1 de instructiuni else grup2 de instructiuni end

Schemalogic

Exemplu:
x=input(' x= '); if x>0 fprintf('x este numar pozitiv\n') else fprintf('x negativ sau zero\n') end

Informaticaaplicatninginerie MATLAB

if-elseif Sintaxa
if expresie_logica_1 grup1 de instructiuni elseif expresie_logica_2 grup2 de instructiuni end

Schemalogic

Exemplu:
u=input(' u= '); v=input(' v= '); if u>v fprintf('u este mai mare ca v\n') elseif u<v fprintf('u este mai mic ca v\n') end

if-elseif-else Sintaxa
if expresie_logica_1 grup1 de instructiuni elseif expresie_logica_2 grup2 de instructiuni else grup3 de instructiuni end

Schemalogic

Exemplul1:
u=input(' u= '); v=input(' v= '); if u>v fprintf('u este mai mare ca v\n') elseif u<v fprintf('u este mai mic ca v\n') else fprintf('u este egal cu v\n') end

Informaticaaplicatninginerie MATLAB

Exemplul2:
n=input(' n= '); if n < 0 %Daca n este negativ afisaza un mesaj de eroare. disp('valoarea furnizata trebuie sa fie pozitiva'); elseif rem(n,2)==0 %Daca n este pozitiv si par A = n/2 %Imparte n la 2. disp('n par'); else %Daca n este pozitiv si impar A = (n+1)/2 %Incrementeaza si imparte la 2 disp('n impar'); end

Instruciunileswitch,case,otherwise Sintaxa
switch expresie case valoare1 grup 1 instructiuni case valoare2 grup 2 instructiuni case valoare n grup n instructiuni otherwise grup n+1 instructiuni end

Schemalogic

Informaticaaplicatninginerie MATLAB

10

Exemplu:
culoare = input('Tastati o culoare: ','s'); switch culoare % expresia este sir de caractere case 'rosu' disp('culoarea este rosie'); case 'galben' disp('culoarea este galbena'); case 'albastru' disp('culoarea este albastra'); otherwise disp('ati tastat altceva decat rosu, galben sau albastru'); end

Switchpoaterezolvamaimultecondiiintrunsingurcazprinfolosireaacoladelor(cell array).

Exemplul3:
var=input(' var= '); switch var case 1 disp('1') case {2,3,4} disp('2 sau 3 sau 4') case 5 disp('5') otherwise disp('alt valoare') end

Informaticaaplicatninginerie MATLAB

11

Instruciuneafor Sintaxa
for index=start:increment:end grup de instructiuni end

Schemalogic

Exemplul1:
x=1:2:11; %sau x=[1 3 5 7 9 11]; suma = 0; %initializam variabila suma for i = 1:length(x) suma = suma + x(i) end suma %afisam variabila suma

Exemplul2:
x(1)=1; for n = 2:6 x(n) = 2 * x(n - 1); end x

Sepotscrieinstruciuniforncorpuluneialteinstruciunifor(for imbricat): Exemplul3:


m=5; n=8; for i = 1:m %se repeta de m ori for j = 1:n %repeta de m x n ori B(i,j) = 1/(i + j - 1); end end plot(B)

Informaticaaplicatninginerie MATLAB

12

Combinareainstruciunilorififor Exemplul4:
a=input('Tastati sir numeric= ');%exemplu [1 -2 3 -9 4 1] contor=0; for i=1:length(a) if a(i)>0 contor=contor+1; end end contor

You might also like