Documente Academic
Documente Profesional
Documente Cultură
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.
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
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
+ - * / \ ^
Plusunar (B = UPLUS(A)) Minusunar (B = UMINUS(A)) nmuliredematrici mprirematricealladreapta mprirematriceallastnga Puteredematrice Transpusacomplexconjugat (B = CTRANSPOSE(A))
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
< <= > >= == ~=
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
& | ~
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
find
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
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
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
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