Curs_Matlab

download Curs_Matlab

of 34

Transcript of Curs_Matlab

  • 7/24/2019 Curs_Matlab

    1/34

  • 7/24/2019 Curs_Matlab

    2/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    2

    ops Operators and special characters. all(), any, xor, or,

    lang Programming language constructs. if, for, while

    strfun Character strings. char, strcat

    iofun File input/output. fscanf, fseek

    timefun Time and dates. clock, date

    datatypes Data types and structures. cell, class, int8, double, logical

    2.Mediul de lucru MATLAB Set de faciliti care permit manevrarea variabilelor n spaiulde lucru, importul/exportul de date, dezvoltarea, manipularea, editarea i depanarea fiierelorMATLAB (.m) i a aplicaiilor MATLAB. Aceste faciliti sunt n dir.generaldin toolbox/matlab/:

    general General purpose commands.

    Exemple: beep, delete, dir, rmdir, dos, echo, exit, import, load, who, whos, ver, save, quit etc.

    3.Handle Graphics Reprezint sistemul grafic al MATLAB-ului. Cuprinde comenzi denalt nivel pentru vizualizarea datelor bi i tri-dimensionale, procesarea imaginilor, animaie,

    prezentri grafice. Permite de asemenea utilizarea unor comenzi de nivel sczut pentru crearea unorinterfee grafice GUI. Funciile grafice sunt organizate n 5 directoaredin toolbox/matlab/:graph2d Two-dimensional graphs.

    graph3d Three-dimensional graphs.

    Specgraph Specialized graphs.

    graphics Handle Graphics.

    uitools Graphical user interface tools.

    4.Biblioteca de funcii matematice a MATLAB-ului Reprezint o colecie complex dealgoritmi de calcul pornind de la funcii elementare (sinus, cosinus etc.) pn la funcii sofisticate(inversarea de matrice, valori proprii, funcii Bessel, FFT etc.). Funciile matematice sunt organizate

    n 8 directoare:elmat Elementary matrices and matrix manipulation. isempty(x),zeros(3)

    elfun Elementary math functions.abs(),sin(),tan,sinh,exp,log, log2, log10, imag,real

    specfun Specialized math functions. bessel,cross,dot,

    matfun Matrix functions numerical linear algebra. trace,lu,rank,svd,eig ...

    datafun Data analysis and Fourier transforms. fft, ifft,mean,var,std

    polyfun Interpolation and polynomials. Legendre, convhull

    funfun Function functions and ODE solvers. Ode23, ode45()

    sparfun Sparse matrices. full(), sparse()

    5.Interfaa de aplicaii program a MATLAB-ului (API) este o bibliotec care permitescrierea de programe n C sau Fortran care interacioneazcu MATLAB-ul. Include faciliti pentruapelarea rutinelor din MATLAB, apelarea MATLAB-ului ca main de calcul, scrierea i citireafiierelor de tip MAT .

  • 7/24/2019 Curs_Matlab

    3/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    3

    SIMULINK este un pachet software pentru modelarea, simularea i analiza sistemelordinamice. Pot fi modelate sisteme (mecanice, electrice) liniare,neliniare, continue, discrete, hibride.

    SIMULINK are interfagraficutilizator (GUI) pentrucrearea modelelor sub forma unor diagrame construite din

    blocuri, pe baza unor tehnici de tip click-and-dragrealizatecu mouse-ul. Astfel, trasarea diagramelor este simpl i

    intuitiv, aproape la fel de simplca trasarea acestor diagrame direct pe hrtie. n plus, se evitformularea matematic laborioas (sistemele dinamice sunt de regul descrise de ecuaiidifereniale).

    Real-time Workshop este un program care permite generarea de cod C pentruschemele bloc create n SIMULINK i astfel permite rularea de aplicaii n timp real.

    2. MEDIUL DE LUCRU MATLAB

    Lansare sub Windows: shortcut la programul executabil

    La pornire, MATLAB-ul executautomat fiierele:

    matlabrc.m rezervat pentru administratorul de sistem istartup.m. (n directorul local) este destinat utilizatorilor; se pot defini setrile implicitepentru instrumenteleHandle Graphicsi se pot predefini variabile n spaiul de lucru.

    Terminarea sesiunii de lucru: comanda >>quitla prompterul MATLAB sau exitdin meniul FileFereastra de comand(fereastra principal) unde Interpretorul MATLAB afieazun prompter (>>).

    De exemplu, pentru introducerea unei matrice 3 x 3 se poate tasta: A = [1 2 3; 4 5 6; 7 8 10]

    i la apsarea tastelor Entersau Return, MATLAB-ul rspunde cu:A =

    1 2 34 5 67 8 10

    Editarea liniilor de comandn fereastra principalArrow Key Control Key efectsau: Ctrl-p previous line - comanda precedenta

    sau: Ctrl-n next line comanda urmatoare tastata

    tergerea ferestrei de comand: >> clc %clear command..., nu terge variabile din spaiul de lucru.

    Controlul afirii paginilor ecran n fereastra de comandControlul afirii paginilor n fereastra de comand: moreoff i moreon.

    ntreruperea unui program care ruleaz: Ctrl-c.Comanda formatcontroleazformatul numeric (numrul de zecimale) al valorilor afiate pe

    ecran (dar nu reprezentarea n memorie): File/ Preferences/Comand Window sau comanda:formatshort(4 zecimale (implicit), : 3.1416) sau format long(15 zecimale: 3.141592653589793) etc.

    Suprimarea afirii rezultatelor unei linii comand- dacncheiem linia de comandcupuncti virgul; rezultatele nu sunt afiate la ecran.Exemplu:>> magic(3)ans =

    8 1 63 5 74 9 2

    A = magic(3);

  • 7/24/2019 Curs_Matlab

    4/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    4

    Linii de comand lungi: ntrerupere prin trei puncte urmate de Return sau Enter pentru a

    indica faptul cexpresia continupe linia urmtoare. Exemplu:s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 . . .

    - 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

    Fereastra de comandpermite rularea comenzilor MATLAB, lansarea unor instrumente cum arfi Editor/Debugger i permite startarea toolbox-urilor.

    Spaiul de lucru al MATLAB-ului (workspace)-conine un set de variabile (vectori, matrice, structuri, cells etc.) care pot fi manevrate din linia

    de comand. comenzile >>whoiwhos(mai detaliat) listeazvariabilele curente din workspace.comanda >>clear % tergerea variabilelor din workspace>>clear v1 % terge variabila v1>>clear v* % terge variabilele care ncep cu caracterul v

    Citirea sau scrierea unor fiiere .mat (fiiere de date Matlab) din programe externe n C sauFortran se poate face cu Interfaa de Aplicaii Program (API).

    ncrcarea i salvarea din workspaceComenzile save iloadau rolul de a salva variabileledin spaiul de lucru i respectiv de a le

    rencrca ntr-o sesiune ulterioar. Aceste comenzi se pot folosi i pentru a importa i exporta date.Pe platformele Windows, operaiile save, load sunt disponibile i prin selectarea opiunilorSave Workspace As, respectivLoad Workspacedin meniul File.

    Formatul n care comanda savestocheazdatele poate fi controlat prin adugarea unor flag-uri(opiuni) n lista de nume de fiiere sau variabile:

  • 7/24/2019 Curs_Matlab

    5/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    5

    -mat Utilizeazformatul binartip .MAT (implicit).

    -ascii Utilizeazformatul ASCII pe 8 digii.

    -ascii -double Utilizeazformatul ASCII pe 16 digii.

    -ascii -double tabs Delimiteazelementele tablourilor cu tab-uri.

    -append Adaugdatele ntr-un fiier .MAT existent.

    Exemple:savesave f1_var [mat]

    Salveaztoate variabilele n fiierul matlab.matSalveaztoate variabilele n fiierulfi_var.mat

    ncrcarea unor fiiere cu date ASCII (format text)Comanda loadimportfiiere de date ASCII. Exemplu: scriem fisierul date.datconinnd:1 2 3 42 3 4 5

    load date.dat %incarca i creaza variabila matrice [1 2 3 4; 2 3 4 5]

    creeazo variabilcu numele date n workspace.Nume de fiiere ca iruri de caractereDacnumele fiierelor sau variabilelor cu care se lucreazsunt stocate n variabile de tip ir de

    caractere, se poate folosi dualitatea comand/funcie pentru a apela loadi saveca funcii. Deexemplu

    save('myfile','VAR1','VAR2') %salveaza variabilele var1 i var2 n myfile.dat A = 'myfile'; load(A)

    au acelai efect cu: save myfile VAR1 VAR2 load myfile

    Wildcards Comenzile loadi savepermit specificarea unui caracter special de tip wildcard (*).Exemplu: save rundata x* %salveaz toate variabilele din workspace care ncep cu x n fiierulrundata.mat.

    Browser-ul Workspace (varianta grafica comenzii whos) permite vizualizarea coninutuluispaiului de lucru curent.

    Exemplu: vizualizarea datelor incrcate cu load

    Directorul curental MATLAB-ul pentru lucrul cu fiiere de tip .m i .mat.

    3. FUNDAMENTE DE PROGRAMARE N MATLAB

    3.1. Cuvinte rezervate (Keywords) ale limbajului MATLAB: 'break' , 'case', 'continue' 'if ''else' 'elseif' 'end' 'for' 'function' global' 'otherwise' 'persistent' 'return' 'switch''try' catch 'while'. Pentru listarea lor se tasteazfuncia: iskeyword

  • 7/24/2019 Curs_Matlab

    6/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    6

    3.2. Expresii

    MATLAB-ul lucreazcu expresii matematice ca i celelalte limbaje de programareInstruciunile Matlab sunt adesea de forma:

    variabila=expresiesau numai:

    expresie

    Se evalueaz valoarea expresiei din dreapta semnului = iar valoarea obinut se atribuievariabilei din stnga semnului =.Pentru forma simplificat(a doua) valoarea expresiei se atribuie unei variabile `ans` (answer)

    create imediat de Matlab.>> 1/3ans =

    0.3333Expresia = niruire de operanzi i operatori; operanzii: nume de variabile, constante, nume

    (sau apel) de funcii, operatorii: +, *, .*, ^, .^ etc.Matlab lucreaz n mod linie avnd la baz un interpretor (i nu compilator). Fiecare

    instruciune pe rnd este trimisinterpretorului i evaluat.

    3.3. O variabilMATLAB este un nume care se asigneaz (asociaz) unei zone de memorieunde sunt stocate valori. Prin numecitim/scriem valoarea din/n memorie, i folosim valoarea nexpresii. MATLAB dispune de trei tipuri de variabile: locale, globaleipersistente(locale funciei, nu

    se terg la ieire, valoarea lor este reinuti regsitla un nou apel al aceleai funcii).

    MATLAB-ulNU necesitdeclararea dimensiunii variabilelor, deoarece la ntlnirea unui nounume de variabilgenereazautomat variabilarespectivi alocspaiul necesar de memorie.

    Tipul de datasociat numelui se poate schimba n acelai program:>> a=123 >> a='qwer' >> a=[1 2 3; 2 3 4; 3 4 5]

    Numele unei variabileeste o liter, urmatde un numr orict de mare de litere, cifre sausimboluri. Din nume numai primele 31 de caractere sunt folosite pentru identificare.

    MATLAB-ul este case sensitive- face distincie ntre literele mici i cele mari (n nume).Exemplu:

    a = 30 >> A=30 % alta variabila diferita de a

    creeazo matrice 1 x 1cu numele ai stocheaz(memoreaz) valoarea 30

    Reprezentarea numerelor imaginare este realizatcu litera isau j. Exemple:

    >> sqrt(-2)ans =

    0 + 1.4142i

    >> abs(3+4j)ans =

    5

    >> ians =0 + 1.0000i

    >> jans =0 + 1.0000i

    >> exp(i*pi/2)ans =

    0.0 + 1.0000icos(pi/2) + i*sin(pi/2)

    Operatori elementariOperatori aritmetici n cadrul expresiilor:+ adunare - scdere \ mprire la stnga* multiplicare / mprire ^ ridicare la putere`transpusa unei matrice sau complex conjugata unui numr complex( ) operatorul de specificare a ordinii de evaluare (cu prioritate maxim)3.4.FunciiMATLAB-ul furnizeaz un mare numr de funcii matematice elementare standard: abs,

    angle, sqrt, exp, log,log10,log2, sin (argument n radiani), asin, sind (argumentgrade), asind, atan2, sinh, imag, real, rem, sign (Ex: Angle(i) => pi/2)

    Existi funcii matematice avansate (funcii Bessel, gama etc.),multe dintre acestea acceptnd argumente complexe.

  • 7/24/2019 Curs_Matlab

    7/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    7

    Pentru vizualizarea funciilor elementare se poate tasta: help elfunPentru a vedea lista funciilor avansate se poate tasta: help specfun sau help elmat

    O parte din funcii (cum ar fi sqrt,sin)sunt de tipbuilt-in, fac parte din nucleul Matlab,fiind compilate i astfel ofer vitez de execuie sporit (accesul la structura funciei nefiind

    permis). Unele funcii sunt implementate ca fiiereMATLAB (M-files) i pot fi modificate.

    Pentru a gsi calea spre codul sursa unei funcii MATLAB M-file folosimfuncia which:>> which exp => built-in (D:\MATLAB\toolbox\matlab\elfun\@double\exp) % double method>> whichpascal=> D:\MATLAB\toolbox\matlab\elmat\pascal.m

    Sunt doutipuri de fiiere M-files: script i function(pot primi i returna valori).

    Cteva funcii furnizeazvalorile unor constante:

    pi 3.14159265

    i i j Imaginary unit, (sqrt(-1) )

    epsPrecizia Floating-point 2-52 (2.2204e-016)

    Realmin Cel mai mic numr real floating-point, 2-1022 (2.2251e-308)

    Realmax Cel mai mare numr real floating-point, 21023 (1.7977e+308)

    Inf Infinit

    NaN Not a Number

    Numele funciilor NU sunt rezervate i deci este posibilsuprascrierea lor.Exemplu:eps = 1.e-6 true=0 (implicit true=1)

    Funcia originaleste reconstituit(tergnd variabilele noi) prin comanda:

    clear eps clear true3.5.Exemple de expresiiExemple de expresii i rezultatele evalurii acestor expresii:

    rho = (1+sqrt(5))/2rho =

    1.6180

    a = abs(3+4i)a =

    5

    >> exp(i*pi)ans =-1.0000 + 0.0000i

    huge1 = exp(log(realmax))huge1 =

    1.7977e+308

    toobig = pi*hugetoobig =

    Inf

    Curs 23.6.Tipuri de date in MatlabTipul fundamental de dat la baza produsului Matlab este matricea. Elementele matricei

    sunt de acelai tip de dat: ntreg sau real, logic, caracter, structuretc.Tipurile structuri celule de tablouristocheaztipuri diferite de daten cmpurile lor.Pot fi de asemenea dezvoltate tipuri noi de date proprii utilizatorului folosind clase Matlab

    (user classes i Java classes). Sunt 15 tipuri fundamentale de date (matrice sau tablou) variind de laminim 0 x 0 elemente la n dimensionale.

  • 7/24/2019 Curs_Matlab

    8/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    8

    Cuvintele cheie asociatetipurilor fundamentale suntscrise cu litere mici (Figura->).

    Pot fi create matrice 2Dde tip double i logical fiecare

    putnd fi n format FULL sauSPARSE (pentru matrice cu

    marea majoritate a elementelornule pentru economie dememorie).

    Tipul de dat Exemple Descrierentreg:int8, uint8,int16,uint16,int32, uint32,int64, uint64

    uint16(65000)( conversie la uint16 )

    Tablou de ntregi signed (int) i unsigned (uint)Pe 8, 16, 32 resp. 64 bii.

    Single

    (4 octei)

    single(3.1 * 10^38) Tablou de numere n simpl precizie. Dpdv almemoriei: mai puin dect tipul double avnd maimicprecizie i domeniu de valori mai ngust.Domeniul 0: 1.17549e-038 to 3.40282e+038Spaierea:Eps(1)=4.7684e-007 aprox. (=2^-21)

    Double(tip implicit)

    (8 octei)

    3.4 * 10^3005 + 6i[1 2; 3 4.1]

    Tablou de numere n dublprecizie (este tipul implicitde dat). Tablourile 2D pot fi de tip sparse.Domeniul: -1.79769e+308 to -2.22507e-308 and

    2.22507e-308 to 1.79769e+308Spaierea(eps): 2.2204e-016 aprox (=2^-52)

    Logical

    (1 octet)

    x = [true, true, false, 1];

    >> magic(2) => ans =1 34 2

    >> magic(2) > 2ans =

    0 11 0

    Existdouvalori logice: 1 (true) i 0 (false).Orice valoare diferitde 0 este considerattrue (1)>> true & [0 1 4 -4 false true]ans =

    0 1 1 1 0 1Tablourile 2D de valori logice pot fi sparse (rare).

    Char

    (2 octei/caracter)

    'Dati val. pt. vector: 'mesaj='Hello'>> mesaj(2:4)ans =

    ell

    Tablou de tip caracter (sau ir de caracterestring);- fiecare caracter se memo. pe 16 bii (2oct) lungime.Tablou de caractere. irurile sunt reprezentate cavectori de caractere. Pentru tablouri ce conin mai mult

    de un ir se preferfolosirea tipului cell arrays.Structure str.numar = 124;str.color = 'alb';str.matr = magic(3);str.logic=[true];

    prin . se refera cmpul

    str(2).numar = -17;

    Structura este un set de cmpuri; fiecare cmp arenume propriu (numar, color, matr) i memoreazoricetip de dat. Structura are nume ex:str;Ostructursingulareste un tablou 1 x 1 de structuriaa cum un scalar numeric (ex:7) este o matrice 1 x 1;se pot forma tablouri de structuri.

    Cell array a{1,1} = 12;a{1,2} = 'Red';a{1,3} = magic(4);

    Tablou de celule indexate. Fiecare celul poatememora un tablou de orice tip sau mrime. Celuleletabloului se referprin acolade, ex: a{1,1} = tablou 1x1

  • 7/24/2019 Curs_Matlab

    9/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    9

    a{2,3}='a'

    b={5, 'e', [1 2;3 4]}

    de double, a{1,2}=tablou 1x3 caractere, a{1,3}=matrice4x4cell2={12, 'asdf', [1 2;3 4]; 1:3,[],'aa'} (alt exemplu)

    Functionhandle

    ra2=@sqrtstruct(2).a1=@sincell2{4,1}=@cos

    Pointer la o funcie. Cmpul a1 al structurii structmemoreazpointer la funcie.>> ra2(2) ans =1.4142>> cell2{4,1}(pi) >> >> struct(2).a1(pi/2)

    ans = > -1 ans= > 1User class polynom([0 -2 -5]) Obiecte construite dintr-o clasdefinitde utilizatorJava class java.awt.Frame Obiecte construite dintr-o clasJava (vezi clase Java)

    Valorile numerice sunt stocate intern, implicit n format virgul mobildouble-precision.Pentru a stoca un ntreg trebuie realizatconversie (vezi funcii de conversie) de la tipul double latipul ntreg dorit.

    Ex.1. pentru a memora valoarea 325 ntr-o variabilntreagcu semn pe 16-bit:x = int16(325); % x este un tablou 1 x 1 de ntregi cu semnx1=int32(500.499) % se va memora 500 (partea fracionareste neglijat)x1=int32(500.502) % se va memora 501 (rotunjire la ntregul mai mare)

    Ex.2.Tablou de valori logice

    >> val_log=true $ este un tablou 1x1 de valori logice>> a = [true, true, false, true, false] $ a este tablou 1 x 5 de val. logice

    a =1 1 0 1 0

    b = [2.5 6 .7 9.2 inf 4.8];isfinite(b)ans => 1 1 1 0 1

    d=magic(3)8 1 63 5 74 9 2

    >> d>=5ans =

    1 0 10 1 10 1 0

    Ex.3.Tablou 1D, ir de caractere, 1 x 14 numit: pr_nupr_nu =Marius Giurgiu

    - n workspaceapare:Name Size Bytes Classpr_nu 1x14 28 char

    Tablou 2Dde caractere sau tablou de iruri de caractere de lungimi egale:>> nume= ['Marius Giurgiu ' ;'Mircea Bolboaca'] % s-a adugat un blank dupGiurgiu pt. lungimi egalenume =Marius GiurgiuMircea Bolboaca

    >> nume(2, 7:15) % linia 2 coloanele 7:15ans =

    BolboacaEste incomodde a lucra cu iruri de lungimi egale n tablouri de caractere. Se poate trece la

    tipul cell arraycare permite iruri de lungimi oarecare. Conversia se face cu funcia cellstr:>> cell_array1=cellstr(nume)cell_array1 = { 'Marius Giurgiu' , ...

    'Mircea Bolboaca' }>> cell_array1{1}ans =Marius Giurgiucell_array1{1}(1)

    >> cell_array1{2}ans =Mircea Bolboaca>> cell_array1{2}(2:4) %identific cell cu { }ans = % apoi in tablou refer cu ( )

  • 7/24/2019 Curs_Matlab

    10/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    10

    ans => M irc

    Ex.4. Structuri (tablou de cmpuri cu nume)Construirea unui tablou de structuri 1x1 (structursingular) prin asignare de date fiecrui

    cmp n parte:student.nume = 'Giurgiu';student.prenume = 'Marius';

    student.note = [9 7 10; 8 9 10; 9 8 4];In continuare se poate aduga a doua structur=> tablou de structuri:student(2).nume='Botean'student(2).prenume='Tudor'student(2).note=[4 8; 9 9; 10 9]

    Accesarea datelor n structur:Pentru afiare n fereastra de comenzi tastm:>>student(1) % sau student(2)ans =

    nume: 'Giurgiu'prenume: 'Mircea'

    note: [3x2 double]

    >> student(1).noteans =

    9 7 108 9 109 8 4

    >> student(2).note(3,1)ans =

    10

    Exemple:Cell arraysTabloul(matricea) de celuleeste folosit la stocarea indexata datelor de tipuri diferite. n

    celulele tabloului pot fi stocate date de tipuri i mrimi diverse. Putem spune c celulele sunt

    cmpuri frnume (dar indexate pentru a putea fi referite).Ex1: Urmtoarea instruciune creeazun tablou A de 2 x 2 celule:

    A = {[1 4 3; 0 5 8; 7 2 9], 'Marius Giurgiu' ; 3+7i, -pi : pi/4 : pi};

    Se poate iniializa individualfiecare celul:A(1,1) = {[1 4 3; 0 5 8; 7 2 9]}; %sauA{1,1} = [1 4 3; 0 5 8; 7 2 9];

    % Obs: paranteze rotunde ( ) i acolade {} NU: A3{1,1} = {[1 4 3; 0 5 8; 7 2 9]}A(1,2) = {'Marius Giurgiu'}; %sau A{1,2} = 'Marius Giurgiu';A(2,1) = {3+7i}; % A{2,1} = 3+7i;

    A(2,2) = {-pi:pi/4:pi}; % A{2,2} = [-pi:pi/4:pi];Dac introducem A(3,3) = {5}; se va extinde tabloul

    de celule cu 4 celule vide.(clear A %Seterge A i se initializeazdin nou)

    Ex2: Dacse iniializeaz: >>A{1,1} = {[1 4 3; 0 5 8; 7 2 9]} ,se obine un cell array pentru A{1,1}

    se poate aduga: A{1,3} = {'abc', 'de'} i A{2,2} = [1 2 3]Extragem caracterul b: A{1,3}{1,1}(2)

    Ex3: n figura alturatobservm un tablou de celule cu urmtoarele componente (celule):

  • 7/24/2019 Curs_Matlab

    11/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    11

    aa{1,1} conine tablou de ntregi frsemn,aa{1,2} conine tablou de iruri de caractere (irurile

    sunt de lungimi egale),aa{1,3} conine tablou de numere complexeaa{2,1} conine ir (1D) de numere n virgulmobilaa{2,2} conine tablou 2D de ntregi cu semnaa{2,3} tablou de celule de tipuri variate

    Ex.4: Observai urmtoarele exemple:aa{1,1}={1 2 3; 2 3 4; 3 4 5}aa{1,2}={'11'; 'qwe'; 'wd45'}aa{1,3}={'11' 'qwe' 'wd45'}aa{1,4}={'11', 'qwe', 'wd45'}aa{2,3}={'text', [4 2;1 5]; [1.2 2.3;1.22 1.3], .2+5i}Exemplu - referire elemente:aa{2,3}{1,1}(2)='a' % s-a schimbat e cu a

    Ex.5:WIREFRAME. Stack{1,1}(1,1)

    Structura WIREFRAME cu cmpul Stack de tip cell array; se refercelula {1,1} care esteun ir de caractere => este referit primul caracter din ir.

    2.OperatoriOperatorii MATLAB pot fi clasificai n trei categorii: Operatori aritmetici Operatori relaionali (comparoperanzii cantitativ) Operatori logici

    *Operatori aritmetici

    + Adunare .^ Fiecare element din matrice la putere[2 3 4] .^ 2 => [4 9 16]

    - Scdere ' Transpusa unei matrice reale

    .* nmulire element cu elem.

    [2 3] .* [10 20] -> [20 60]

    ' Transpusa + conjugata complexa numerelor

    complexe din matrice (dacexist)./ mprire la dreapta:1 ./[1 2 3]

    1.0000 0.5000 0.3333>>[1 2] . / [2 3]

    0.5000 0.6667

    .' Transpusa fr conjugata complex anumerelor complexe

    .\ mprire la stnga: 2 .\[1 2 3]0.5000 1.0000 1.5000

    * nmulire matriceal(| nm. dounumere)Amxn* Bnxp=> Cmxp

    + Plus unar A/B mprire matricealla dreapta A*B^-1

    - Minus unar A\B mprire matricealla stnga A^-1 *B

    : Operatorul doupuncte ^ Matrice ptraticla o putere

    Operatorii aritmetici pe element (.*, ./) lucreaz cu elementele corespondente ale unor tablouri dedimensiuni egale.

    Unii operatori binari lucreazcu un operand matrice i cellalt scalar. n acest caz MATLAB-ul aplicscalarul fiecrui element al matricei, ex: [2 3] 1 [1 2]

    *Operatori relaionali= Mai mare sau egal Mai mare ~= Diferit de

  • 7/24/2019 Curs_Matlab

    12/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    12

    Operatorii relaionali comparelementele corespondenteale unor tablouri de dimensiune egal.Operatorii relaionali lucreaztotdeauna element cu element. Exemplu:

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

    A == Bans =

    0 1 00 0 10 0 0

    Rezultatele comparaiilor sunt valori de tiplogic: 0 sau 1

    >> A>=B0 1 11 0 10 1 0

    CURS 3*Operatori logici

    & AND (I)

    | OR (SAU)

    ~ NOT (Negatie)

    1 & 1 = 1

    0 & 1 = 0

    1 & 0 = 0

    0 & 0 = 0

    1 I 1 = 1

    0 I 1 = 1

    1 I 0 = 1

    0 I 0 = 0

    XOR(0, 0) = 0

    XOR(0, 1) = 1

    XOR(1, 0) = 1XOR(1, 1) = 0

    Operatorii logici aplicai elementelor corespondente ale unor tablouri de dimensiuni egale.Pentru vectori i tablouri dreptunghiulare ambii operanzi trebuie saibaceeai dimensiune

    O expresie care utilizeaz operatorul & (I) este adevrat dac ambii operanzi suntadevrai. n termeni numerici, expresia este adevrat dac ambii operanzi sunt nenuli.Exemplu:

    u = [1 0 -2 3 0 -5]; v = [5 6 -1 0 0 7]; u &vans= 1 0 1 0 0 1

    O expresie care utilizeaz operatorul | (SAU) este adevrat dac cel puin unul dintreoperanzi este logic adevrat. Pentru operanzi numerici, expresia este fals dac ambiioperanzi sunt nuli. Exemplu:

    u |vans = 1 1 1 1 0 1

    O expresie care utilizeazoperatorul ~ (NOT)neaglogic operandul. n termeni numerici,orice operand nenul devine nul i orice operand nul devine unu. Exemplu:

    u = [1 0 -2 3 0 -5]; ~uans = 0 1 0 0 1 0

    Un operand este scalar i cellalt vector: n acest caz, ca i la operatorii aritmetici,MATLAB-ul aplicscalarul fiecrui element al celuilalt operand.

    u = [1 0 -2 3 0 -5];>> u | 0

    ans = 1 0 1 1 0 1

    v = 5 6 -1 0 0 7>> v & 4

    ans =1 1 1 0 0 1

    Funcii logicen plus fade operatorii logici MATLAB-ul furnizeazi funcii logice:

    Funcie Descriere Exemple

    xor Realizeaz sau exclusiv. Returneaz logic adevrat dacunul din operanzi este adevrat i cellalt fals. n termeninumerici, returneaz1 dacun operand este nenul i cellalteste zero.

    a = 1; b = 1; xor(a,b)ans = 0

  • 7/24/2019 Curs_Matlab

    13/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    13

    all Parametrul este vector: returneaz1 dac toate elementelevectorului sunt adevrate sau nenule.

    Parametrul este matrice(acioneazpe coloane):

    u = [0 1 2 0]; all(u)ans = 0

    A = [0 12; 3 50]; all(A)ans = 0 1 0

    any Parametrul vector: returneaz 1 dac cel puin unul dintreelementele argumentului este adevrat (nenul); n cazcontrar returneaz0.

    Parametrul matrice(acioneazpe coloane)

    v = [5 0 8]; any(v)ans = 1>> any([5 08; 2 04])ans = 1 0 1

    Alte funcii: isnan, isinf, find.

    3.Prioritatea operatorilorSe pot scrie expresii care folosesc orice combinaie de operatori aritmetici, relaionali i logici.

    a) ordinea de evaluare a expresiei este datde nivelele de precedena/prioritateb) n cadrul fiecrui nivel de precedenoperatorii au aceeai prioritate i se evalueazde la

    stnga la dreapta.c) prioritatea maximo au parantezele:

    1. Paranteze ()2. Transpusa (.'), putere (.^), transpusa cu complex conjugate ('), matrice la putere (^)3. plus unar (+), minus unar (-), negare logic(~)4. nmulire (.*), mprire la dreapta (./), la stnga (.\), nmulire de matrice (*),mprire matrice dreapta (/),mprire matrice stnga (\)5. adunare (+), scdere (-)6. operatorul doupuncte (:)7. mai mic (=),test egalitate (==), test diferit (~=)8. i (&)9. sau (|)

    Exemplu: observai scrierea compacti puterea operatorilor n Matlab:Sse evalueze (frciclri) expresia A(r,) pentru: r=0:0.01:2.5 i =[0.03, 0.05,0.1,0.2,0.5]

    ze=[0.03 0.05 0.1 0.20 0.50]'; r=0:0.005:2.5;X=sqrt( ((2*ze*r).^2+1) ./( (ones(size(ze))*(1-r.*r).^2) + (2*ze*r).^2) );plot(r,X)

    La numrtor: prin ze*rse nmulete:o matrice coloanze (transpune) cu o matrice linie r;

    apoi se ridicla ptrat fiecare element din matrice.

    La numitor: primul termen 22 )1( r rezult vector iar al doilea22

    4 r matrice => avem nevoie de matrice i n primul termen.size(ze) returneaz perechea de valori (5,1); acesta este argument

    pentru funcia ones() care creazmatricea cu 5 linii i o coloande valoriunitare.

    >> ones(size(ze))ans =

    1111

    ones(size(ze))*(1-r.*r).^2

    Sunt generate 5 linii identice care vor fi adunate cumatricea (2*ze*r).^2 (n care fiecare linie (r) senmulete cu un alt zeta)ze*r => matrice 5x501X => matrice 5x501

    2222

    22

    4)1(

    41),(

    rr

    rrA

    +

    +=

  • 7/24/2019 Curs_Matlab

    14/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    14

    1>> [1 1 1]' * [4 5 6 7 8]

    ans =4 5 6 7 84 5 6 7 84 5 6 7 8

    plot(r,X) => 5 grafice, pentru abscisa (vectorul) r setraseazfiecare linie din matricea X.

    4. Instruciuni pentru controlul derulrii unui program4.1. if - end, if else - end, if - elseif else - end, if elseif - end

    - executun grup de instruciuni pe baza unei condiii logice.- dupelseif poate snu mai existe un else

    if expresie_logicagrup de instructiuni

    end

    ...i=2;j=input('j= ');ifi+j>0

    fprintf('i+j=%7.2f\n',(i+j)^2 );

    endif expresie_logica

    grup1 de instructiunielse

    grup2 de instructiuniend

    - - - - - - - - -ifx>0

    fprintf('x este numar pozitiv\n')else

    fprintf('x negativ sau zero\n')endifa>b

    disp('a>b')elseifab'a>b'else

    'a mai mic sau egal cu b'end

    n=input('n= ');ifn < 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, imparte n la 2.

    A = n/2; disp('n par');else %Daca n este pozitiv si impar incrementeaza si imparte la 2

    A = (n+1)/2; disp('n impar');enda=input('a= ');ifa

  • 7/24/2019 Curs_Matlab

    15/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    15

    4.2.switch, case otherwiseswitch expresie %scalar sau sir de caractere/string

    case valoare_1grup 1 instructiuni

    % se executpentru: expresie== valoare_1 =>truecase valoare_2grup 2 instructiuni

    % se executpentru: expresie== valoare_2 =>truecase valoare_n

    grup n instructiuni

    otherwise

    grup n+1 instructiuni% se executdacexpresienu egaleaznici un caz

    end

    %switch poate rezolva mai multe condiii ntr-un%singur caz prin folosirea acoladelor { } (cell array).

    var=input('var= ')switch var

    case 1disp('1')

    case {2,3,4}disp('2 sau 3 sau 4')

    case 5disp('5')

    otherwisedisp('altvaloare')

    end

    exemplul 2switch var1

    case -1disp('minus unu');case 0

    disp('zero');case 1

    disp('unu, pozitiv');otherwise

    disp('alta valoare');end

    sircar = input('Tastati o culoare: ','s'); % descriptor spentru citire sirswitchsircar % valoarea citita este sir de caractere

    case'rosu'disp('ati tastat rosu');case'galben'

    fprintf('ati tastat %s\n', sircar);case{'albastru','violet'}

    disp('ati tastat albastru sau violet');otherwise

    disp('ati tastat altceva decat rosu, galben, albastru, violet');end

    Spre deosebire de limbajul C, daca un caz este adevrat i acesta se execut, se sare dupend frafolosi instruciune Break. In C se executimplicit i cazurile urmtoare (daca nu existinstr. break).

    4.3. Instruciunea de ciclare for- Executo instruciune sau un grup de instruciuni de un numr cunoscut dinainte de ori:

  • 7/24/2019 Curs_Matlab

    16/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    16

    ===

    n

    inx

    iXVAR1

    212 )][(

    for index = start:increment:end

    grup de instructiuniend

    x=3:8; %sau x=[3 4 5 6 7 8];suma=0; %initializam variabila sumafori=1:length(x)

    suma=suma + x(i);

    endsuma % se afisaza 33%sau: sum(3:8) sum([3:8])

    x(1)=1; %se adaugvalori in vect. x(i)for n = 2 : 6

    x(n) = 2 * x(n - 1);end%rezulta: 1 2 4 8 16 32

    for k=1:2:n. . .

    end

    n=100; %increment 1.25

    mu = sum(x)/length(x); %vectorizarevariance2=sum(( x-mu).^2)/length(x);

    sau: sum((x-mu).*(x-mu))sau: (x-mu)*(x-mu)

    Calcule cu matrice

    %Numrare elemente ai pozitive din vectora=input(`Tastati sir numeric= `);

    %exemplu [5 -3 1 -9 4 1]contor=0;fori=1:length(a)

    Suma elementelor aijde pe DP (i = j) folosind un ciclu for

    a=[2-1 3 ;-9 41; 2 2 2]sum=0;nc= length(a(1,:)) %lin 1 i toate coloanele

  • 7/24/2019 Curs_Matlab

    17/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    17

    ifa(i)>0contor=contor+1

    endenddisplay(contor)

    fori=1:ncsum=sum+a(i,i);fprintf('i=%d j=%d a=%.3f\n',i,i,a(i,i));

    endsum

    Se citete matricea ptratica=[1 2 34; 2 3 4 5; 3 4 5 6;4 5 6 7]. Se parcurg elementele matricei unucte unu i se calculeazsuma elementelor pozitive situate deasupra DP i deasupra DS.

    Fiecare element nsumat va ndeplini simultan trei condiii:Condiii de poziie n matrice: 1) i

  • 7/24/2019 Curs_Matlab

    18/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    18

    i=1; %initializam indicele in_e= length(x)whilei

  • 7/24/2019 Curs_Matlab

    19/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    19

    while expresie logica

    bloc de instructiuni

    end

    switch expresie

    % scalar sau sir de caractere/stringcase valoare1

    grup1 instructiuni

    case valoare2grup 2 instructiuni

    . . .case valoare n

    grupn instructiuni

    otherwise

    grup n+1 instructiuniend

    Sse traseze schema logicasociatprogramuluide mai jos: conine decizii multiple n corpul ciclului for

  • 7/24/2019 Curs_Matlab

    20/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    20

    Programul contorizeaznumrul deapariii n irul xa valorilor 1, 2, 3 i restulde valori.

    x=input('Tastati un sir de valori x=[...] ');v1=0; v2=0; v3=0; v=0;fori=1:length(x)

    ifx(i)==1

    v1=v1+1;elseifx(i)==2

    v2=v2+1;elseifx(i)==3

    v3=v3+1;else

    v=v+1;end

    endfprintf('v1=%d v2=%d v3=%dv=%d\n',v1,v2,v3,v);

    Observai:

    1.Asemnarea deciziei multiple realizatecu if-elseifi cea realizatcu switch-case2. S-au compus schemele logice pentru fori if-elseif (sau switch)3.Linia ntreruptmrginete corpulinstruciunii de ciclare for i coninedeciziile multiple4. Rescriei exemplul folosindinstruciunea switch-case

    5. Definirea unei funcii n Matlab5.1. Sintaxa definirii unei funcii:

    in1, in2,inn sunt argumente de intrare(parametri formali)ou1,out2,outm sunt argumente de ieirein1, in2, ou1,out2, sunt variabile localeai sunt parametri actuali sau efectivi care auvalori concrete la momentul apelului funcieiriprimesc valorile de la outi

    1. Funciile sunt subprograme (apelate) care folosesc parametri de intrare (in1, in2,) i parametride ieire (ou1,out2,)pentru a comunica cu programul apelant, cu alte funcii sau cu fereastra decomenzi.2. Definiia funciei este salvatntr-un fiier ce poartacelai nume cu cel al funcieisau altul iextensia .m In cazul n care numele funciei este diferit de al fiierului se folosete numelefiierului la apel. Calea spre fiier trebuie setatSet Path dacfiierul nu se afln directorulcurent sau n lista de ci spre directore.3. Apelul funciei este: nume_fun(a1, a2,,an) unde a1, a2, ,ansunt parametri efectivi (actuali)avnd valori concrete/cunoscute (la momentul apelului).4.Valorile parametrilor efectivi sunt transferate parametrilor formali n ordine de la stnga la dreap.

  • 7/24/2019 Curs_Matlab

    21/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    21

    ===

    n

    inx

    iXVAR1

    212 )][(

    5. O funcie poate fi apelatde mai multe ori; la fiecare apel, prin parametri de intrare, se aplicacelai algoritm de calcul unor date de intrare diferite.6. Folosirea funciilor permite modularizarea programului (anumite sarcini de calcul s fiencapsulate)7. Funciile folosesc variabile locale funciei, variabile care exist numai pe timpul execuieifunciei: n fun_demo1: i, x; la ieirea din funcie variabilele locale se pierd (elibereazmemoria).8. Variabilele locale sunt independente de variabilele cu acelai nume din programul principal

    (apelant) sau din alte funcii.9. Funcia poate fi apelatdin linia de comand, dintr-o altfuncie sau dintr-un fiier script.10. Funciile pot snu aibargumente de intrare sau argumente de ieire.11. Pentru funcia apelatdintr-o expresie, apelul se nlocuiete cu valoarea returnat.

    5.2. EXEMPLE1) Un parametru de intrare i unul de ieirefunction y = average(x)

    % AVERAGE media elementelor vectoruluiy = sum(x) / length(x);end

    x = parametrul de intrare este vectory = parametrul de ieire este scalarFuncia average este salvatn fiierul average.m

    APELURI valide ale funciei:

    v=[1 2 3 -3 5];ave=average(v)

    v=[1 2 3 -3 5];average(v)ans = 1.6000

    average([1 2 3 -3 5])ans =

    1.6000

    2) 2 parametri de intrare i un (1) parametru de ieirefunction z=xplusy(x,y);z=x+y;end

    x,y doi parametri de intrarez un parametru de ieire

    Se salveazdefiniia funciei ntr-un fisier cu numelexplusy.mAPELURI valide ale funciei:

    a=1b=2scal1=xplusy(a,b)

    a=[1 2 3; 3 4 5]b=[7 8 9; 2 0 4]matr1=xplusy(a,b)

    a=7b=[7 8 9; 2 0 4]matr2=xplusy(a,b)

    scal2=xplusy(1,2) matr1=xplusy([1 2 3; 3 4 5],b) matr2=xplusy(7, [7 8 9; 2 0 4])3) 2 par. intrare, nu sunt parametri de ieire

    functioncomp(a,b)ifa>b

    'a>b'elseifa>comp(4,6)

    4) un parametru intrare, 2 parametri de ieirefunction[s,sp]=sumapoz(x)%returneaza suma si suma elem >0

    s=0;sp=0;fori=1:length(x)s=s+x(i);ifx(i)>0

    sp=sp+x(i);%insumare%x(i)>0

    endend

    endApel:[suma, sp]=sumapoz([1 5 -3])

    Parametrii formali ai functiei

  • 7/24/2019 Curs_Matlab

    22/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    22

    pot avea acelasi nume (sp) cuvariabilele din seciunea careapeleaz

    5. Instruciunea breakdeterminntreruperea ciclrii for sau while i salt la prima instruciunedupinstruciunea enda ciclrii.6. Instruciunea continuetrece controlul sau realizeazsalt la prima instruciune din urmtoareaiteraie n cadrul ciclrilor for sau while.

    7. Instruciunea return provoac ieirea forat din funcie (funcia apelat f_A) i ntoarcerea npunctul de apel din funcia apelantf_An (care a apelat funcia f_A).

    functionout=fun_demo1(in)i=1;whilei < in

    x(i)=rand(1);ifx(i)>0.95

    's-a executat break'break; % intrerupe ciclul while

    endi=i+1;

    endout=x; %salvare x in out

    idisplay('exemplu cu break')end%incheiere functie cu end optional

    functionout=fun_demo2(in)i=1;whilei < in

    x(i)=rand(1);ifx(i)>0.95

    out=x; %salvam x in outi'return'return; %iesire din functie

    endi=i+1;

    endout=x;display('exemplu cu return')i

    Apel: a=fun_demo1(1.e2); Apel: b=fun_demo2(1.e2);

    (continuare funcii)

    1. Se poate defini o funcie n corpul altei funcii:

    Bulina roie => breakpointSgeata alb=> punct de apel funcieSgeata verde => poziie curentde rulare

    >> stat3([1 2 3 4]) %apel functie stat3% media se calc. n altfuncie (ave)

    2. Pentru evaluarea unei formule se pot folosifuncii inlinepentru a evita definirea unei funcii.function y=f_expresie(x) % se creaza un nou fisiery=x+sin(x)+x.^2;

    Ex1: un argument: xfun_ex=inline('x+sin(x)+x.^2');

    Sunt permise apelurile:Rez1=f_expresie(2.2) Rez_1=fun_ex(2.2)Rez2=f_expresie([2.2 3 5]) Rez_2=fun_ex([2.2 3 5])

    Ex2: mai multe argumente: a, om, texp_comp=inline(a*exp(j*om .*t))>> exp_comp(1, 3, 0:.1:0.4)ans = 1.0000 0.9553 + 0.2955i 0.8253 + 0.5646i 0.6216 + 0.7833i 0.3624 + 0.9320i>>plot(0: .1 :2*pi, exp_comp(3, pi, 0: .1 :2*pi) ) graficul:

    0 1 2 3 4 5 6 7-3

    -2

    -1

    0

    1

    2

    3

  • 7/24/2019 Curs_Matlab

    23/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    23

    CURS 53.Variabile globaleVG permit folosirea unor variabile n corpul funciilor frca acele variabile sfie pasate

    prin parametri n acele funcii.Comunicare numai prin parametri

    Spaiul de lucru (workspace) Definiie fun_1a=1

    b=2c=5re=fun_1(a,b,c)

    functie y=fun_1(pa,pb,pc)

    .y=pa+pb+pc;

    Variabilele a,b,c i-au transferat valorile parametrilor formali pa,pb respectiv pcValoarea calculatytransfervaloarea variabilei re

    Comunicare prin parametri i variabilglobala=1b=2global vgC;vgC=55re=fun_1(a,b)

    functie y=fun_1(pa,pb).global vgC;..y=pa+pb+ vgC;

    Variabilele a,b i-au transferat valorile parametrilor formali pa respectiv pbVariabila vbC este declaratglobaln funcia apelanti apelat(fun_1) deci poate fi folositnexpresii n funcia apelatfun_1

    Variabile persistente sunt locale funciei, nu se terg la ieirea din funcie, valoarea loreste reinuti regsitla un nou apel al aceleai funcii.

    3.

    Fiiere script Matlab sau macrouri

    Scriptul Matlab este un segment de program Matlab salvat ntr-un fiier numefis.m. Execuiasegmentului de program se obine prin apelul numelui fiierului numefis (frextensie) n linia de comand,n funcii sau n alte fiiere script.

    Dupexecuia fiierului script variabilele locale rmn n spaiul de lucru al aplicaiei (spredeosebire de funcie).

    Un program Matlab are forma fiierelor script sau fiierelor function ambele avnd extensiam.

    Din fiierele de funcii sau fiierele script se pot apela alte funcii sau fiiere script.Se pot face de asemenea apeluri recursiveadico funcie sse apeleze pe sine sau dintr-un fiier

    script sse apeleze acelai fiier script.

    Grafic2D n MATLAB

    1. Funcii pentru reprezentri grafice 2D n MATLABsubplot(abc) divizeazgraficul a=numr linii, b=numr coloane, c=poziia curentn matrice numrnd pelinii: a11, a12 a21plot(y) realizeazreprezentri grafice n coordonate liniare

    a) y este vector => reprezintvalorile lui y n funcie de numrul de ordine al fiecrui element din vectorb) y este matrice m x n => plot(y) reprezintn curbe cte o curbpentru fiecare coloana matricei

  • 7/24/2019 Curs_Matlab

    24/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    24

    x=0 : pi/100 : 4*pi %vector real de 401%elemente

    y=sin(x);plot(y)

    Exemplux=0 : pi/100 : 3*piy=sin(x);y1=sin(x+pi/3);

    ma(:,1)=y; %generare coloana 1ma(:,2)=y1; %generare coloana 2plot(ma);

    c) dacy este un vector de valori complexe va reprezenta plot(real(y), imag(y))x=0 : pi/100 : 3*pi %vector realy=sin(x);z=fft(y); % transf. Fourier rapida calculeazvectorul z

    % avnd length(y) valori complexe(simetrice)subplot(121) % linia 1, coloana 2, pozitia 1 devine curentaplot(z)subplot(122) % linia 1, coloana 2, pozitia 2 devine curenta

    plot(real(z), imag(z)) % grafic identic cu plot(z)

    Exemplu cu numere complexe:

    Profilul unei fore periodice este de forma:

    t2

    +t+t2

    =f(t) 00 04cos5.1cos3cos1

    Se traseazgrafic fora i se pun n evidencomponentele armonice aleprofilului (amplitudinea i argumentul fiecrui cosinus):w0=10;t=0:0.01:5;f1=1*cos(w0/2*t)+3*cos(w0*t)+1.5*cos(4*w0/2*t);subplot(211); plot(t,f1)Y1 = fft(f1); %Fast Fourier Transformsubplot(212); plot(abs(Y1(1:length(Y1)/4) ));

    Y1:

    plot(x,y)a) reprezintgrafic vectorul y (ordonate) n funcie de vectorul x (abscise)b) x vector, y matrice => coloanele matricei y vor fi reprezentate n funcie de vectorul x

    plot(x1,y1, x2,y2) => n acelai grafic sunt reprezentate curbele (x1, y1) i (x2, y2)

    Reprezentare n coordonate logaritmice i semilogaritmiceloglog(x,y) scaleazambele axe folosind logaritmul n baza 10 (10 -1, 100 , 101, 102,sunt echidistante)semilogx(x,y) scaleazlogaritmic axa x (10-1, 100 , 101, 102,sunt echidistante pe x)semilogy(x,y) scaleazlogaritmic axa y (10-1, 100 , 101, 102,sunt echidistante pe y)

    x=0 : pi/100 : 10*pi%vector real de 1001 elemente

    y=sin(x);semilogx(x, y)

  • 7/24/2019 Curs_Matlab

    25/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    25

    subplot(312);semilogx(abs(Y1(1:length(Y1)/4) ));subplot(313);semilogy(abs(Y1(1:length(Y1)/4) ));

    Reprezentarea discreta datelorx=0 : pi/10 : 3*pi %vector real de elementey=sin(x);stem(x, y)

    Reprezentare n treptex=0 : pi/10 : 3*pi %vector realy=sin(x);stairs(x, y)

    Grafic de bare

    x=0 : pi/5 : pi %vector realy=sin(x);subplot(1,2,1)bar (x,y)subplot(1,2,2)bar (y)

    Reprezentare n coordonate polare(u,R)u=0 : pi/10 : 2*pi;R=sin(u) .*cos(u);polar(u,R);

    fplot(nume_fun, limite, n) reprezintgrafic o funcie n limite specificate:

    functiony=f2(x) % definitie functie; x poate fi vectory=sin(x) .* x; % salvam functia f2() in fisierul f2.m

    fplot('f2', [-22 44], 1000); %reprezintgrafic funcia f2 definitn fiierul f2sau:

    [x,y]=fplot('f2', [-22 44], 1000); %NU reprezitfunctia ci nuami returneaza vectori abscise i ordonate n [x, y]plot(x,y); grid;

    Funia fplot returneaz1000 abscise i 1000 ordonate n vectorii x i y. Apelm plot(x,y) pentru reprezentare grafic.comet(y) i comet(x,y) realizeazreprezentare dinamica unei curbe 2D printr-un punct care traseazcurba.

    1. Tiprire cu format prin folosirea funcieifprintfx=input('vector x= ');fori=1 :length(x)

    fprintf('element x(%3d)=%12.3f\n', i, x(i) );

    end% s-a folosit \npentru trecerea cursorului pe randulurmator la inceput dupfiecare execuie a funciei fprintf

    Folosim:%d pentru tiprire valori ntregi (decimal)%s pt. tiprire iruri de caractere (string)

    %f pentru tiprire valori reale (float)%12.3f valoarea realse tiprete ntr-un spaiu de12 caractere dintre care 3 sunt alocate zecimalelor iarrestul punctului zecimal i prii ntregi.

    n cadrul parametrului actual de tip ir de caractere a funciei fprintf, pot fi folosite caractere de formatare atextului (caractere de evitare):\n Linefeed LF + carriage return CR = se trece (scrie) la

    inceputul liniei urmtoare\t Tab (se sare un numr de

    caractere/pozitii de scriere)\r carriage return \b Backspace (inapoi un caracter)Folosim \\pentru a tipri un caracter backslash i %%pentru tiprirea unui caracter procent.

  • 7/24/2019 Curs_Matlab

    26/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    26

    pentru a tipri un caracter apostrofTiprire n formtabelarla ecran:x=input('medii x= ');s=0; m=0; ma=0;nivel={'slab', 'mediu', 'bun'}; %cell array conine 3 iruri de caractere de lungimi diferitefprintf(' \t\tNote studenti\n'); %doutaburi (\t) i trecere la inceputul rndului urmtor (\n)fprintf(' \t\t----------------\n');fori=1:length(x)

    ifx(i)

  • 7/24/2019 Curs_Matlab

    27/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    27

    2. Calcule cu polinoame

    In Matlab polinoamele sunt reprezentate prin vectorul coeficienilor polinomului luai n ordinedescresctoare a puterilor.p1=[1 2 3] ; %vector coef.x=[-18: .2 : 22];%argumentey=polyval(p1,x);

    plot(x,y);

    32)( 2 ++= xxxp

    Funciapolyvalevalueazun polinom(dat prin coeficienii polinomului p1) la

    abscisele din x (parametrul al doilea).

    Adunare i scdere de polinoameSe adun/scad element cu element coeficienii de acelai ordin. Vectorii coeficienilor trebuie saibacelainumr de elemente: p1=[1 2 3], p2= [0 3 4] => p_suma=p1+ p2 -> [1 5 7]

    Inmulire i mprire de polinoame cu funiile conv i deconv:prod(x)=p1(x)*p2(x)

    )(2)(1

    )(xp

    xpximp =

    )1)(32()( 2 ++= xxxxprod

    1322)(

    ++=

    xxxximp

    Exemplu Matlab:p1=[1 2 3];

    p2=[1 -1];prod=conv(p1,p2)[cat, rest]=deconv(p1,p2)p1_ini = conv(p2,cat) + rest

    prod = 1 1 1 -3cat = 1 3rest = 0 0 6p1_ini =1 2 3

    nmulirea a doupolinoame date prin vectorii coeficienilor:Comparai coeficienii obinui prin programul scris i prin apelul funciei conv()

    (gradul polinoamelor p1,p2 scrise prin coeficieni este length(p1)-1 respectiv length(p2)-1;gradul polin. produs p12 este length(p1)+length(p2) - 2 i se aloclength(p1)+length(p2)-1 pozitii n p12).p1=[1 2 3 -4];p2=[1 -1];p12= zeros(1,length(p1)+length(p2)-1)fori=1:length(p1)

    forj=1:length(p2)p12(i+j-1)= p12(i+j-1)+p1(i)* p2(j);

    endendp12 %afisare coef. determinati prin programprod=conv(p1,p2) %afisare coef. determ prin fun. conv()

    Descompunerea n sumde fracii simple a raportului a doupolinoameA(x) i B(x)Fraciile conin la numitor polinoame de ordinul unu.

    )(... )()(

    )2()2(

    )1()1(

    )()(

    xknpx

    nr

    px

    r

    px

    r

    xB

    xA ++++= unde numim r(1) ,, r(n)reziduuriiarp(1) ,, p(n)poli.

    Se folosete funcia Matlab:[r,p,k]=residue(A,B)

    Funcia se poate apela i n forma:[A,B]=residue(r, p, k) caz n care sunt returnai coeficienii polinoamelor A i B.Sse studieze funcia G(s):

    1214

    3

    2

    )(++++=

    xx

    xxsG

    num=[1 4 1]; den=[1 0 2 1];>> roots(num) % rdcini ec.polinom (zerouri)ans = -3.7321

    -0.2679

    >> roots(den) % radacini numitor (poli)ans = 0.2267 + 1.4677i

    0.2267 - 1.4677i-0.4534

    Tratarea expresiei )()(

    xB

    xA ca funcie de transfer (tf):

    >> sist=tf(num,den)Transfer function:s^2 + s x + 1-------------

  • 7/24/2019 Curs_Matlab

    28/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    28

    s^3 + s x + 1

    Calcul poli, zerouri i trasare figura alturatpzmap([1 4 1],[1 0 2 1]) sau:pzmap(sist)

    - cerculeele zerouri sunt rdcinile polinomului de lanumrtor.- cu x sunt notate rdcinile de la numitor polii.

    Descompunere n fracii simple a funciei G=num/den :>> [r,p,k]=residue(num,den)

    Sirul reziduurilor r(1), r(2), r(3):r =

    0.6162 - 1.2316i0.6162 + 1.2316i

    -0.2324Obs: 2 reziduuri complex conjugate

    Sirul polilor p(1), p(2), p(3):p =

    0.2267 + 1.4677i0.2267 - 1.4677i-0.4534

    Obs: 2 poli complex conjugai

    Rest:k =

    []

    -0.4534)(-0.2324

    1.4677i)0.2267(1.2316i0.6162

    1.4677i)0.2267(1.2316i-0.6162

    )3()3(

    )2()2(

    )1()1(

    1214

    )()(

    3

    2

    +

    +++++ ++=++==

    xxxpx

    r

    px

    r

    px

    r

    xx

    xxxB

    xA

    3. GRAFICE 3D

    1. Curbe spaiale(3D) sintaxa funciei plot3()

    plot3(x,y,z)plot3(x,y,z, tip-linie);plot3(x1,y1,z1, tip-linie1, x2,y2,z2, tip-linie2, )plot3(X,Y,Z)

    Exemplu:t=0 : pi/40 : 10*pi;plot3(sin(t), sin(t) .*cos(t), 2*t); grid on;

    Doucurbe spaiale:plot3(sin(t), sin(t).*cos(t), 2*t, sin(t), cos(t), 2*t);

    Grafic spaial dinamic - un punct traseazdinamic curbacomet3(sin(t), sin(t).*cos(t), 2*t);

    2.Generarea unei reele mesh, n plan[X, Y]=meshgrid(x,y) sau [X, Y]=meshgrid(x)

    Funcia meshgridfolosete domeniile 1D specificate prin vectorii x i y pentru generarea tablourilor X i Y .Aceste tablouri sunt folosite la evaluarea funciilor de douvariabile z=f(x,y) prin funciile Matlab mesh isurfcu reprezentare 3D.

    >> [X,Y]=meshgrid(0:4, 6:2:10)X =

    0 1 2 3 40 1 2 3 40 1 2 3 4

    Y =6 6 6 6 68 8 8 8 8

    10 10 10 10 10

    Domeniu dreptunghiular:-primul vector 0:4 desfoarvalorile pe linie sau pe axa x ncadrul matricei X (attea linii cte valori sunt pe direcia oy).-vectorul 6:2:10 desfoarvalorile pe coloane sau axa y n cadrul

    matricei Y (attea coloane cte valori sunt pe direc

    ia ox

    ).Cele doumatrice X i Y au acelai numr de lin. i col.PERECHILE (X(i,j), Y(i,j)) formeazreeaua de puncte dindomeniul 2D oxy, dreptunghiular, de definiie al funciei z=f(x,y)

    >> [X,Y]=meshgrid(3:6)X =

    3 4 5 63 4 5 63 4 5 63 4 5 6

    Y =3 3 3 3

    Domeniul este ptrat.

    Perechile de puncte din plan sunt de forma ( X(i,j), Y(i,j) ):(3,3), (4,3), (5,3), (6,3), (3,4), (4,4) etc.

  • 7/24/2019 Curs_Matlab

    29/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    29

    4 4 4 45 5 5 56 6 6 6

    3. Reprezentare suprafee wireframe cu funcia mesh isuprafee netede cu funciasurf

    Matlab reprezint suprafee prin cote z = valori ale funciei

    pentru o reea de puncte din planul ox-y. Punctele de cotz adiacentesunt conectate prin segmente colorate de dreapt(wireframe) n cazulfunciei meshi coloreazfee pentru comandasurf.

    Fie o funcie de forma z=f(x,y):z=sin(ra)/raunde ra=sqrt(x^2+y^2)Se creazreeaua de puncte din planul x-y:

    [X,Y]=meshgrid(-12:.4:12, -12:.4:12); %sau meshgrid(-12: .4: 12);ra=sqrt(X .^2+Y.^2); %ra este matrice de valori intermediare

    %matricele X i Y sunt ridicate la ptrat element cu element,%adunate, apoi radicalii din fiecare element salvai n matricea ra

    Z=sin(ra) ./ra; %calcul valori funcie n matrice Zsubplot(211);h=mesh(X,Y,Z); % heste handle la funcia mesh

    grid on;subplot(212);s2=surf(X,Y,Z); % vezi figura alturat->

    %fiecare matrice X,Y,Z conine coordonatele x, y resp. z aletuturor punctelor din grafic.get(h) % returneazsetul de proprieti ale graficului asociatset(h, 'LineWidth', 1) %set(h, ) se impune limea liniei detrasare a graficului sau alte proprieti ale graficului asociat.

    title('Functia sinc cu surf');xlabel('axa x');ylabel('axa y');text(0, 0, 0.5 ,vrf);

    Exemplul 2:[X,Y]=meshgrid(-10:16);Z=sqrt(X .^2+Y .^2);surf(X,Y,Z);

  • 7/24/2019 Curs_Matlab

    30/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    30

    4. Elemente de CALCUL SIMBOLIC

    Variabila simbolicse memoreazn forma unui ir de caractere

    %definete un singur obiect simbolicx =sym('x')x =x

    % defineste mai multe obiecte simbolicesymsy f g1 g2 gwhos % afisaza tipul variabilelorName Size Bytes Class

    f 1x1 126 sym object

    Derivaref0=3*x^3+5*x^2-6*x+2pretty(f0)

    3 23 x + 5 x - 6 x + 2

    diff(f0) => ans = 9*x^2+10*x-6

    f1 = 2*x^2*exp(3*x)>> diff(f1)

    ans = > 4*x*exp(3*x)+6*x^2*exp(3*x)

    >> diff(log(x))ans =1/x>> int(1/x)ans =

    log(x)

    % defineste expresia ff= 12 + (x-1)*(x-1)*(x-2)*(x-3)

    f =12+(x-1)^2*(x-2)*(x-3)

    diff(f) % prima derivataans =2*(x-1)*(x-2)*(x-3)+(x-1)^2*(x-3)+(x-1)^2*(x-2)

    diff(f,x,2) % derivatde ordin 2

    ans =2*(x-2)*(x-3)+4*(x-1)*(x-3)+4*(x-1)*(x-2)+2*(x-1)^2

    diff(f,x,3) % a treia derivatans =24*x-42

    >> diff(sin(5*x))ans =5*cos(5*x)

    >> diff(sin(x)^2)ans =2*sin(x)*cos(x)

    >> diff( sin(x)*cos(x) )ans =cos(x)^2 - sin(x)^2

    >> diff(exp(x)*cos(x))ans =exp(x)*cos(x)-exp(x)*sin(x)

    syms x %derivare fractie + simplificare formanum = 2*x^2 + 3*x -1;denom = x^2 - x + 3;f= num/denom

    fp=diff(f), pretty(fp) - ->fps=simplify(fp), pretty(fps) - ->

    AFISARE:f =(2*x^2+3*x-1)/(x^2-x+3)

    fp =(4*x+3)/(x^2-x+3) - (2*x^2+3*x-1)/(x^2-x+3)^2*(2*x-1)

    24 x + 3 (2 x + 3 x - 1) (2 x - 1)---------- - --------------------------2 2 2

    x - x + 3 (x - x + 3)

    fps =-(5*x^2-14*x-8)/(x^2-x+3)^2

    25 x - 14 x - 8

    - ---------------2 2

    (x - x + 3)

    syms g1g2xy;g1= 20*x^3 +15*y -30 ;g2 = 0.25*x + y -1;% g1,g2 pot avea derivate partialediff(g1,x) % derivata parial

    ans =60*x^2

    diff(g1,y)

    g12 = [g1; g2] % g=vector coloande 2 funcii de var. x,yg12 = [ 20*x^3+15*y-30]

    [ 1/4*x+y-1]% Calcul matrice Jacobian=derivatele pariale ale vectorului g12 n% raport cu variabilele independente x i y

    xy = [x y]; % vectorul linie al variabilelorJ =jacobian(g12, xy) % calcul JacobianJ = [ 60*x^2, 15]

  • 7/24/2019 Curs_Matlab

    31/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    31

    ans =15

    [ 1/4, 1]

    Easy Plot:syms x f1 f2;% polinom cu solutii simetrice fatde oy:f1=(x-2.16)*(x-12.7)*(x-38.3) * (x+2.16)*(x+12.7)*(x+38.3)

    subplot(211)ezplot(f1, [-40,40]) ; line([-40 40],[0 0],'Color','r');

    f2= (x-1)*(x-1)*(x-2)*(x-3)+4subplot(212)

    ezplot(f2) % easy plot -2 pi < x < 2 piezplot(f2, [0,4]) % graficul fun. f pentru 0 aa=subs(f, x, x^2+y)ans =(x^2+y)^2*y + 5*(x^2+y)*y^(1/2)>> simplify(aa)ans =x^4*y + 2*x^2*y^2 + y^3 + 5*x^2*y^(1/2) + 5*y^(3/2)

    syms g1g2xy;g1= 20*x^3 +15*y -30 ;g2 = 0.25*x + y -1;

    g12 = [g1; g2]

    % evaluare g12 pentru x = 1, y = 2.5subs(g12, {x, y}, {1 , 2.5})ans = 27.5000

    1.750Soluii simbolice i numericepentru ecuaiisau sistemede ecuaii algebrice:

    >> x12=solve('a*x^2 + b*x + c')

    x12 =

    -1/2*(b-(b^2-4*a*c)^(1/2))/a

    -1/2*(b+(b^2-4*a*c)^(1/2))/a

    Soluie simbolic:

    pretty(x12)

    [ 2 1/2 ][ b - (b - 4 a c) ][- 1/2 -------------------][ a ][ ][ 2 1/2 ][ b + (b - 4 a c) ]

    [- 1/2 -------------------][ a ][sx sy] = solve(' x + y = 1 ' , 'x - 11*y = 5 ') %solutie numericasx =

    4/3sy =

    -1/3>> [sx sy] = solve(' x + y = a ' , ' x - 11*y = b ') %solutie simbolicasx =

    11/12*a+1/12*bsy =

  • 7/24/2019 Curs_Matlab

    32/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    32

    1/12*a-1/12*b[sx1 sx2 sx3] = solve(' 3*x1-x2=5' , ' -2*x1+x2+x3', ' 2*x1-x2+4*x3=15' )sx1 =

    2sx2 =

    1sx3 =

    3

    Rezolvare pereche de ecuaii neliniare: clearsyms x1 x2 % definire funciih1 = x1*x1 + x2*x2 - 2;h2 = 0.25*x1*x1 +0.75*x2*x2 -1;sol =solve(h1,h2); %rezolva sist. pt. x1 i x2

    %[x1 x2]=solve(h1,h2)>> [sol.x1 sol.x2]ans =[ 1, 1][ -1, 1][ 1, -1][ -1, -1]

    Integraresimbolicsyms xfin =2*x^2>> int(fin)ans =2/3*x^3

    >> int(1/x)ans =

    log(x)

    syms a b x % variabile simbolicef = 3*a*b*x + 2*exp(a*x + b); % definitie ff1 = diff(f,x) % derivata functiei f in rap. cu x>> f1 =

    3*a*b+2*a*exp(a*x+b)

    int(f1, x) % integrare simbolica f1 n raport cu xans =

    3*a*b*x+2*exp(a*x+b) % s-a obinut f din nou int(f, x, 0, pi/2) % integrare n raport cu variabila x ntre 0 i pi/2

    ans = > 1/8*(3*a^2*b*pi^2+16*exp(1/2*pi*a+b)-16*exp(b))/a f2 = int(f, b, 0, pi/2) % integrare n raport cu b ntre 0 i pi/2

    f2 = > 3/8*a*pi^2*x+2*exp(a*x+1/2*pi)-2*exp(a*x)Matricesyms m1 m2 M;M=[m1 0; 0 m2]inv(M)

    M =[ m1, 0][ 0, m2]

    ans =[ 1/m1, 0][ 0, 1/m2]

    syms a b c d A;A=[a b; c d]pretty(inv(A))

    [ d b ][ --------- - ---------][ a d - b c a d - b c][ ][ c a ][- --------- --------- ][ a d - b c a d - b c ]

    det(A)ans = a*d - b*c

    %Matrice coloana * matrice linie[a; b] * [c d]ans =[ a*c, a*d][ b*c, b*d]

    Expand:syms abc;c=sin(a+b)expand(c)

    ans =

    etc.

  • 7/24/2019 Curs_Matlab

    33/34

    Prof.dr.ing. Iulian LupeaProgramarea i Utilizarea Calculatoarelor

    33

    sin(a)*cos(b)+cos(a)*sin(b)expand(cos(a+b))

    ans =cos(a)*cos(b)-sin(a)*sin(b)

    Dezvoltare n seriede funcii Taylor

    Serie MacLaurin

    syms xf1 = sin(x); f2=cos(x);T1 = taylor(f1,10), T2=taylor(f2,10)T1 = > x -1/6*x^3 +1/120*x^5 -1/5040*x^7 +1/362880*x^9T2 = > 1-1/2*x^2+1/24*x^4-1/720*x^6+1/40320*x^8

    Sse verifice relaiile: (x)j+(x)=ejx sincos (x)j-(x)=e-jx sincos

    f3 =exp(j*x); T3 = taylor(f3,10)

    T3 = 1+ i*x- 1/2*x^2 - 1/6*i*x^3+ 1/24*x^4+ 1/120*i*x^5- 1/720*x^6 -1/5040*i*x^7+ 1/40320*x^8+ 1/362880*i*x^9

    Diverse

    1. Rezolvare sistem de ecuaii liniare de forma: AX=B

    1.1. Inversare matrice:A=[3 -1 0;-2 1 1;2 -1 4] B=[5 0 15]' sau B=[5; 0; 15;]X1=A^-1 * B

    X1 =2.00001.00003.0000Sau:

    X2=A \ B

    1.2.Metoda lui Cramer: x1= /1 , x2= /2 , x3= /3 unde este determinantul sistemului iar i estedeterminantul matricei coeficienilor (A) n care coloana i a fost nlocuitcu coloana termenilor liberi (B).

    A=[3 -1 0;-2 1 1;2 -1 4]

    B=[5 0 15]'

    X=A^(-1)*B;XA1=[5 -1 0;

    0 1 1;15-1 4]

    x1=det(A1)/det(A)

    A3=[3 -1 5;-2 1 0;2 -1 15];

    x3=det(A3)/det(A)

    2. Calcul matriceal, verificarea unor relaii:1. (A*B)T=BT* AT, 3. (A-1)T=(AT)-1 5. (A+B)*C=A*C+B*C2. (A*B)-1=B-1 * A-1 4. det(A) * det(A-1)=1 det(AB)= det(BA)=det(A)*det(B)

    3. Sortare prin metoda selecieia=input('Va sorta in ord. descresc.\nIntroducetiun sir: ')asort=sort(a,'descend');n=length(a);fori=1:n-1

    =+

    =++

    =

    1534212

    03212

    5213

    xxx

    xxx

    xx

    nn

    n

    Rxn!

    xfx

    !

    xf+x

    !

    xf+x

    !

    xfxf=xxf ++++

    )(

    3

    )(

    2

    )(

    1

    )()()( 0

    )(30

    '''20

    ''0

    '

    00

    nn

    n

    Rxn!

    fx

    !

    f+x

    !

    f+x

    !

    ff=xf ++++

    )0(

    3

    )0(

    2

    )0(

    1

    )0()0()0(

    )(3

    '''2

    '''

  • 7/24/2019 Curs_Matlab

    34/34

    poz_max=i;forj=i+1:n

    ifa(j)>a(poz_max)poz_max=j;%retine pozitie element maxim

    endend

    aux=a(i);a(i)=a(poz_max);a(poz_max)=aux; %intershimbaendaasort

    4. Sortare prin metoda bulelora=input('Va sorta in ord. descresc.\nIntroduceti un sir: ')asort=sort(a,'descend');n=length(a);fori=n-1:-1:0

    forj=1:i%elem. cel mai mare este plasat ultimul in subsirul de indici 1,...,iif a(j)