+ All Categories
Home > Documents > Matlab Curs

Matlab Curs

Date post: 06-Nov-2015
Category:
Upload: alina-gabriela
View: 140 times
Download: 13 times
Share this document with a friend
Description:
Ghid de utilizare a programului Mathlab
91
1. Introducere in Matlab 1.1 Despre Matlab Matlab este un limbaj de inalta performanta pentru calcul tehnic, conform producatorului The MathWorks, Inc. Integreaza, intr-un sistem interactiv, elemente de calcul, vizualizare si programare, fiind folosit, in mod tipic, pentru: matematica si calcul; dezvoltarea de algoritmi; modelare, simulare si creare prototipuri; analiza de date, explorare si vizualizare; grafice stiintifice si tehnice; dezvoltare de aplicatii, incluzand interfata grafica utilizator. Deasemeni, Matlab include biblioteci de functii Matlab, numite toolbox - uri, orientate pe categorii de probleme, cum sunt procesare semnal, sisteme de control, retele neurale, logica fuzzy, functii wavelets, optimizare, simulare s.a., oferind utilizatorului atat posibilitatea de a asimila tehnicile specializate cat si de a le folosi in aplicatii. Denumirea Matlab provine de la matrix laboratory, programul fiind conceput initial pentru a facilita accesul la softul performant de calculul matriceal LINPACK si EISPACK. Caracteristica principala a sistemului interactiv Matlab este ca opereaza cu siruri de date care nu necesita dimensionare, astfel ca editarea programelor pentru rezolvarea unor probleme de calcul tehnic, in special a celor care includ matrici si vectori, necesita mult mai putin timp decat in cazul folosirii unor limbaje neinteractive care opereaza cu scalari, cum sunt C sau Fortran. In timp, Matlab - ul a fost extins, uneori cu contributia utilizatorilor, si adaptat la evolutia sistemelor de operare si a tehnicii de calcul. A fiost lansat in mai multe versiuni succesive, de referinta fiind versiunile 4, 5 si, cea mai recenta, 6. Este folosit pe scara larga in mediile universitare din intreaga lume in activitatile de instruire, cercetare siintifica si tehnica, precum si in industrie, in activitati de analiza, cercetare si dezvoltare. 1.2 Instalarea programului Matlab Programul Matlab este furnizat, de regula, pe un compact disk (CD), fiind necesara, pentru instalarea pe un calculator, licenta de folosire a programului. Poate fi procurat, deasemeni, direct de la firma producatoare (The Math Work Inc) folosind reteaua internet, care furnizeaza unele variante, in anumite conditii, in modul liber de utilizare (fara plata licentei), in special pentru studenti si universitati. Cerintele de hard si soft difera in functie de varianta de program Matlab. De exemplu, pentru Matlab, versiunea 5.1, acestea sunt: sistem de calcul - minimum 486 DX , sistem de operare - Windows 95, Windows NT sau mai recent, placa video - pe minimum 8 biti, spatiu de memorare pe hard disk - 115 MB pentru Matlab si 250 MB pentru Matlab si Help, memorie interna - minimum 8 MB, recomandat 16 MB sub Windows 95, minimum 12 MB, recomandat 16 MB sub Windows NT. Se recomanda spatiu larg de memorare, accelerator grafic, imprimanta, placa de sunet iar pentru vizualizarea documentelor din Matlab Help Desk, sunt necesare programele Netscape Navigator sau Microsoft Internet Explorer pentru fisierele de tip HTML, si programul Adobe Acrobat Reader pentru fisierele de tip PDF. Pentru instalarea programului Matlab pe un calculator, sub sistemul de operare Windows se deschide fereastra Start, se selecteaza din meniu Settings, apoi Control Panel; cu dublu clic mouse se lanseaza apoi in executie Add/Remove Programs; din meniul acestuia, se selecteaza Install si, cu ajutorul comenzii Browse, se selecteaza fisierul Setup.exe din kit - ul Matlab, dupa care se continua urmarind dialogul propus de programul de instalare. In cazul unei instalari corecte a programului Matlab, este afisat, in final, un mesaj in acest sens. 1.3 Lansarea programului in executie Lansarea in executie a programului Matlab sub controlul sistemului de operare Windows, se poate face folosind unul dintre urmatoarele moduri: 1) dublu clic buton stanga mouse pe fereastra shortcut Matlab; 2) se deschide fereastra Start a Windows - ului, se selecteaza Programs, apoi, din submeniu, Matlab (sau alt nume sub care a fost instalat programul), apoi numele fisierului executabil Matlab si se tasteaza Enter;
Transcript
  • 1. Introducere in Matlab 1.1 Despre Matlab Matlab este un limbaj de inalta performanta pentru calcul tehnic, conform producatorului The MathWorks, Inc. Integreaza, intr-un sistem interactiv, elemente de calcul, vizualizare si programare, fiind folosit, in mod tipic, pentru: matematica si calcul; dezvoltarea de algoritmi; modelare, simulare si creare prototipuri; analiza de date, explorare si vizualizare; grafice stiintifice si tehnice; dezvoltare de aplicatii, incluzand interfata grafica utilizator. Deasemeni, Matlab include biblioteci de functii Matlab, numite toolbox - uri, orientate pe categorii de probleme, cum sunt procesare semnal, sisteme de control, retele neurale, logica fuzzy, functii wavelets, optimizare, simulare s.a., oferind utilizatorului atat posibilitatea de a asimila tehnicile specializate cat si de a le folosi in aplicatii. Denumirea Matlab provine de la matrix laboratory, programul fiind conceput initial pentru a facilita accesul la softul performant de calculul matriceal LINPACK si EISPACK. Caracteristica principala a sistemului interactiv Matlab este ca opereaza cu siruri de date care nu necesita dimensionare, astfel ca editarea programelor pentru rezolvarea unor probleme de calcul tehnic, in special a celor care includ matrici si vectori, necesita mult mai putin timp decat in cazul folosirii unor limbaje neinteractive care opereaza cu scalari, cum sunt C sau Fortran. In timp, Matlab - ul a fost extins, uneori cu contributia utilizatorilor, si adaptat la evolutia sistemelor de operare si a tehnicii de calcul. A fiost lansat in mai multe versiuni succesive, de referinta fiind versiunile 4, 5 si, cea mai recenta, 6. Este folosit pe scara larga in mediile universitare din intreaga lume in activitatile de instruire, cercetare siintifica si tehnica, precum si in industrie, in activitati de analiza, cercetare si dezvoltare. 1.2 Instalarea programului Matlab Programul Matlab este furnizat, de regula, pe un compact disk (CD), fiind necesara, pentru instalarea pe un calculator, licenta de folosire a programului. Poate fi procurat, deasemeni, direct de la firma producatoare (The Math Work Inc) folosind reteaua internet, care furnizeaza unele variante, in anumite conditii, in modul liber de utilizare (fara plata licentei), in special pentru studenti si universitati. Cerintele de hard si soft difera in functie de varianta de program Matlab. De exemplu, pentru Matlab, versiunea 5.1, acestea sunt: sistem de calcul - minimum 486 DX , sistem de operare - Windows 95, Windows NT sau mai recent, placa video - pe minimum 8 biti, spatiu de memorare pe hard disk - 115 MB pentru Matlab si 250 MB pentru Matlab si Help, memorie interna - minimum 8 MB, recomandat 16 MB sub Windows 95, minimum 12 MB, recomandat 16 MB sub Windows NT. Se recomanda spatiu larg de memorare, accelerator grafic, imprimanta, placa de sunet iar pentru vizualizarea documentelor din Matlab Help Desk, sunt necesare programele Netscape Navigator sau Microsoft Internet Explorer pentru fisierele de tip HTML, si programul Adobe Acrobat Reader pentru fisierele de tip PDF. Pentru instalarea programului Matlab pe un calculator, sub sistemul de operare Windows se deschide fereastra Start, se selecteaza din meniu Settings, apoi Control Panel; cu dublu clic mouse se lanseaza apoi in executie Add/Remove Programs; din meniul acestuia, se selecteaza Install si, cu ajutorul comenzii Browse, se selecteaza fisierul Setup.exe din kit - ul Matlab, dupa care se continua urmarind dialogul propus de programul de instalare. In cazul unei instalari corecte a programului Matlab, este afisat, in final, un mesaj in acest sens. 1.3 Lansarea programului in executie Lansarea in executie a programului Matlab sub controlul sistemului de operare Windows, se poate face folosind unul dintre urmatoarele moduri: 1) dublu clic buton stanga mouse pe fereastra shortcut Matlab; 2) se deschide fereastra Start a Windows - ului, se selecteaza Programs, apoi, din submeniu, Matlab (sau alt nume sub care a fost instalat programul), apoi numele fisierului executabil Matlab si se tasteaza Enter;

  • 3) Se deschide fereastra Start, se selecteaza din meniu comanda Run, se tasteaza sau se inscrie cu ajutorul comenzii Browse calea si numele fisierului matlab.exe, dupa care se tasteaza Enter. Dupa lansarea in executie, programele Matlab in versiunile pana la 5.3 inclusiv, deschid o fereastra de lucru Matlab, cu un meniu de comenzi, si prompterul de linie program >, fiind gata sa execute o comanda sau o instructiune Matlab. In versiunea 6 (rel.12), programul deschide trei ferestre - una pentru comenzi si instructiuni Matlab (fereastra curenta de lucru in Matlab), una pentru editare fisiere Matlab (denumite de tip script - programe, functii externe, baze de date), si una pentru istoricul sesiunii de lucru curente. 1.4 Meniul ferestrei curente de lucru In fereastra de instructiuni si comenzi Matlab, meniul afisat in partea de sus a ferestrei contine optiunile: File, Edit, Window, Help. Cu un clic stanga mouse pe una dintre fereastre, se deschide submeniul acesteia. Deasemeni, deschiderea unui submeniu se poate face tastand simultan Alt si F pentru File, Alt si E pentru Edit, Alt si W pentru Windows si Alt si H pentru Help. Inchiderea submeniului se face cu clic stanga mouse pe fereastra respectiva sau tastand Esc. Submeniurile ferestrelor de comenzi sunt prezentate in continuare. Fereastra File New, cu submeniul si functiile acestuia: M - File - deschide fereastra editorului de fisiere Matlab; Figure - deschide o fereastra pentru o figura (grafic) Matlab; Model - deschide o fereastra pentru construirea unui model simulink, si o fereastra cu elementele de modelare din biblioteca simulink; Open - pentru deschiderea unui fisier Matlab; Open Selection - deschide un fisier Matlab selectat cu mouse - ul de pe ecranul de lucru curent (selectarea se face prin apasarea continua a butonului stanga mouse simultan cu deplasarea cursorului mouse pe numele fisierului pe are dorim sa-l selectam); Run Script - deschide o fereastra pentru inscrierea caii si numelui unui program Matlab in vederea lansarii in executie; inscrierea poate fi facuta de la tastatura sau cu ajutorul comenzii Browse din meniul ferestrei,iar lansarea in executie prin clic mouse pe fereastra OK sau tastand Enter; Load Workspace - deschide o fereastra pentru selectarea si incarcarea unui fisier de tip .mat care contine un spatiu de lucru salvat anterior. Un spatiu de lucru include numele si valorile curente ale variabilelor, dimensiunile, spatiul de memorie alocat si marimile lor dintr-o sesiune de lucru. O sesiune de lucru este reprezntata de activitatea in Matlab desfasurata intre momentul imediat dupa lansarea in executie a programului si un moment curent considerat. Selectarea si incarcarea fisierului se poate face fie prin tastarea caii si numelui in fereastra File name din submeniu, urmata de activarea comenzii din fereastra Open, fie cu ajutorul mouse - ului si a ferestrei de comanda Open pentru inspectarea directorilor si selectarea fisierului; Save Workspace As ... - deschide o fereastra pentru salvarea spatiului de lucru curent intr-un fisier de tip .mat. Calea fiserului poate fi selectata cu ajutorul mouse - ului sau poate fi inscrisa de la tastatura in fereastra File name, iar numele fisierului trebuie inscris de la tastatura. Pentru salvarea fisierului, se foloseste fereastra de comanda Save din submeniu; Show Workspace - deschide o fereastra pentru afisarea spatiului de lucru curent; Show Graphics Property Editor - deschide o fereastra cu afisarea proprietatilor editorului grafic; Show GUI Layout Tool - deschide o fereastra pentru afisarea mijloacelor de lucru ale unitatii de interfata grafica; Set Path ... - permite includerea unui director in calea de cautare a Matlab - ului; Preferences ... - deschide un meniu cu urmatoarele ferestre: General, Command, Window Font si Copying Options. Fereastra General include subferestrele: Numeric Format, pentru selectarea formatului de afisare a numerelor; Editor Preference - pentru alegerea editorului de fisiere Matlab; Help Directory - pentru precizarea caii si fisierului de help Matlab;

  • Echo on/off - pentru activare, respectiv dezactivare comanda echo; Show Toolbar - optiune pentru afisare toolbar - meniu de comenzi apelabile prin shortcut - uri; Enable Graphical Debugging - pentru activare sau dezactivare depanator grafica; Fereastra Command Window Font include: Font, Style, Size - pentru selectare tip, stil si marime litere folosite pentru afisare; Background Color - pentru setare culoare hartie (fond ecran); Color - pentru setare culoare cerneala (culoarea caracterelor afisate); Display Fixed Pitch Only - pentru selectarea dintre tipurile de fonturi disponibile, afisate in lista ferestrei Font, numai a celor cu marime fixa; Fereastra Copying Options include subferestrele: Clipboard format - pentru selectarea formatului grafic de memorare in clipboard, cu optiunile Windows Metafile sau Windows Bitmap; Honor figure size properties - pentru optiunea de adaptare, la copiere, a marimii unei figuri la pozitia paginii; White background - pentru optiunea de copiere a figurii cu culoarea fondului alba; Print Setup - comanda pentru setarea optiunilor privind formatul paginii; deschide o fereastra cu subferestrele Printer, Paper, Orientation, cu functiile: Printer - pentru setarea imprimantei folosita pentru listare, si afisare statut, port bransare si comentariu aferente imprimantei selectate; include si subfereastra Properties pentru setarea unor caracteristici privind pagina, grafica, fonturile si optiuni de calitate si control imagine; Paper - cu meniul Size pentru setare marime pagina si Source pentru setare mod de declansare printare - manual sau automat; Orientation - pentru setare orientare pagina, cu optiunile Portrait, pentru orientarea paginii cu latura lunga pe verticala, si Landscape pentru orientarea paginii cu latura lunga pe orizontala; Print - pentru printarea ecranelor afisate in sesiunea curenta de lucru; deschide o fereastra cu subferestrele Printer, Print Range si Copies, cu functiile: Printer - pentru setare imprimanta, la fel ca in cazul comenzii Print Setup, avand in plus optiunea Print to File pentru salvarea selectiei intr-un fisier de tip .prn; Print Range - cu optiunile All - pentru printarea tuturor ecranelor afisate in sesiunea de lucru curenta, si Selection - pentru printarea numai a unei parti din afisaj, selectata in prealabil cu mouse - ul; Copies - pentru fixarea numarului de copii ale textului printat (implicit 1); Print Selection - pentru printarea unei parti din afisajul ecranele memorate de Matlab; derularea inainte/inapoi a ecranelor memorate se face cu ajutorul tastelor Page Up/Page Down sau cu ajutorul mouse-ului folosind butonul de pagina din partea dreapta a ferestrei de lucru; selectarea textului pentru printare se face cu ajutorul mouse - ului (apasare continua buton stanga, simultan cu deplasare cursor mouse) . Comanda Print Selection devine activa numai diupa selectarea textului si deschide o fereastra cu subferestrele Printer, Print Range si Copies, cu aceleasi functii ca in cazul comenzii Print; Exit Matlab - pentru iesirea din programul Matlab (inchiderea programului Matlab); acelasi efect se Fereastra Edit Comenzile din meniul acestei ferestre se refera la informatia afisata in fereastra curenta de lucru Matlab, avand functii comune editoarelor de texte. Astfel: Undo - ignora ultima comanda de editare; Cut - sterge un text selectat; Copy - copie un text selectat; Paste - afiseaza un text copiat; Clear - sterge ecranele din sesiunea de lucru curenta; Select All - selecteaza tot textul din sesiunea curenta de lucru; Clear Session - sterge tot textul din sesiunea curenta de lucru.

  • Fereastra Window Afiseaza lista ferestrelor deschise pana in momentul curent de lucru, ferestrele fiind numerotate, incepand de la zero, in ordinea deschiderii lor. O fereastra din meniu poate fi deschisa prin selectarea ei cu clic mouse. Poate fi inchisa prin folosirea comenzii Close din meniul File al ferestrei deschise. Fereastra Help Help Window - dechide o fereastra pentru obtinerea de informatii privind elemente Matab (fereastra de help), cu optiunile: Matlab Help Topics - aici poate fi inscris un cuvant (sau un simbol) - cuvant cheie, dupa care, tastand Enter, sunt afisate informatiile de baza referitoare la el (help - ul aferent) ; See also - afiseaza o lista de cuvinte care au legatura cu cuvantul cheie; selectand cu mouse - ul un cuvant din lista, este imediat afisat help - ul aferent; Go to Help Desk - deschide o fereastra cu optiuni de cautare locala (in help extins Matlab) sau pe reteaua internet, la adresa data de firma producatoare, pentru obtinerea de informatii extinse aferente cuvantului cheie dat; Back - pentru trecerea la ecranul de help afisat anterior; Forward - pentru trecerea la ecranul de help urmator; Home - pentru trecerea la ecranul initial, afisat dupa deschiderea ferestrei Help Window; acesta contine fereastra HELP topics, cu numele principalelor fisiere de help Matlab; un fisier din lista poate fi deschis cu dublu clic mouse, ca si help - ul pentru un cuvant cheie selectat din fisierul deschis; Tips - pentru afisarea tipurilor de help disponibile; Close - pentru inchiderea ferestrei de help. 1.5 Moduri de lucru in Matlab Exista doua moduri de lucru in Matlab: modul de lucru direct si modul de lucru cu fisiere de tip script. a. Modul de lucru direct Dupa lansarea in executie a programului Matlab, in fereastra curenta de lucru se afiseaza cursorul de linie program - caracterul > sau >>, si cursorul de caracter, reprezentat printr - o bara verticala aflata in flash continuu (clipire continua). Din acest moment, poate fi editata (de regula de la tastatura) o linie de program, care poate fi simpla - constand dintr - o instructiune sau o comanda Matlab, sau multipla - constand din mai multe instructiuni si/sau comenzi Matlab separate intre ele prin caracterul , (virgula) sau caracterul ; (punct si virgula). Daca se foloseste caracterul , (virgula), valoarea curenta a variabilei din instructiunea de alocare aflata in stanga virgulei este afisata pe ecran; daca se foloseste caracterul ; (punct si virgula), aceasta nu este afisata. O linie program poate fi editata pe una sau mai multe linii ecran (fizice). In al doilea caz se foloseste grupul de caractere ... (trei puncte) pentru a semnifica o continuare de linie program. Trebuie evitata includerea acestui grup de caractere intre doua apostrofuri ale unei instructiuni sau comenzi Matlab. Unele instructiuni Matlab nu mai necesita indicarea continuarii liniei de program (de exemplu, la alocarea elementelor unei matrice, o linie fizica semnifica o linie a matricei. Deplasarea cursorului de caracter pe linie poate fi facuta fie prin pozitionare cu mouse - ul, fie prin deplasarea cu ajutorul tastelor " " ," " (sageata dreapta, sageata

    stanga). Pentru stergerea unui caracter editat, pot fi folosite tastele Delete sau Back Space. Dupa editarea unei linii de program, se tasteaza Enter si aceasta este executata imediat. Similar, se editeaza o noua linie, se executa s.a.m.d. Liniile de program executate sunt memorate automat si pot fi selectate, in vederea

    reactivarii lor, folosind tastele " " ," " (sageata in sus, sageata in jos). Deasemeni, liniile de program deja

    editate pot fi copiate de pe ecran (v. Copy din meniul ferestrei Edit) si inscrise pe linia curenta (v. Paste, din

  • acelasi meniu), in vederea reutilizarii lor. Deplasarea inapoi/inainte a ecranelor de afisaj poate fi efectuata cu ajutorul tastelor Page Up/ Page Down sau a cursorului de ecran din marginea din dreapta a ferestrei de lucru. Exemplul 1.1. Se dau: a = 1, b = 2. Sa se calculeze, folosind modul de lucru direct in Matlab, c = (a + b+1)0.15

    Rezolvare. Din meniul ferestrei File, selectam Preferences, apoi, formatul de afisare a numerelor, de exemplu Long G; in modul de lucru direct, se editeaza linia de program:

    .

    >a=1, b=2, c=(a+b+1)^0.15 Se tasteaza apoi Enter si pe ecran se afiseaza: a = 1 b = 2 c = 1.23114441334492

    Ca exercitiu, propunem utilizatorului reluarea calculelor din Exemplul 1.1, dar cu folosirea diferitor formate numerice de afisare si folosirea caracterului ; dupa primele doua instructiuni. b. Modul de lucru cu fisiere script Acest mod corespunde modului de lucru programat in Matlab. Pentru editarea unui program Matlab, se procedeaza astfel: - Din meniul principal Matlab, selectati File, apoi New, apoi M - file pentru deschiderea editorului de text program (in ASCII); - Se editeaza programul in limbaj Matlab; - Se salveaza programul: din meniul editorului, se selecteaza File, apoi Save As ... , se da un nume legal de program, cu extensia de nume .m; - Se inchide fereastra editorului (in versiunile 5.1 - 5.3) si se revine la fereastra de lucru curent in Matlab; - Pentru executia programului, fie se tasteaza numele programului, fara extensia de nume si apoi Enter, fie se selecteaza din meniul principal File, apoi Run Script ... , se tasteaza adresa si numele programuluiu si apoi Enter. Exemplul 1.2. Se dau: a = 1, b = 2. Sa se calculeze, folosind modul de lucru script in Matlab, c = (a + b+1)0.15

    Rezolvare. Din meniul ferestrei File, selectam New, apoi M - file. Se editeaza programul .

    programul a=1, b=2, c=(a+b+1)^0.15

    Se salveaza programul, de exemplu cu numele prog12.m, si se coboara fereastra editorului. Selectati formatul de afisare a numerelor, de exemplu Long G. Tastati prog12, apoi Enter si pe ecran se afiseaza:

    a = 1 b = 2 c =

    1.23114441334492

  • 2. Functii de interes general

    a) Pentru informatii generale

    help - functie pentru furnizarea de informatii Matlab in modul de lucru direct (on-

    line).

    Sintaxa:

    > help - afiseaza lista tuturor subiectelor primare de informatii,

    corespunzatoare directorilor din calea Matlab;

    >help subiect - afiseaza informatii despre subiect, unde subiect poate fi o

    comanda Matlab, un nume de functie sau un nume de director aflat in calea Matlab (in acest caz

    afiseaza tabela de continut a directorului)

    Exemple:

    help - afiseaza lista directorilor din calea Matlab, cu informatii primare;

    help path - furnizeaza informatii despre comanda path;

    help plot - furnizeaza informatii despre functia plot;

    help general - afiseaza tabela de continut a directorului general din calea Matlab;

    helpwin - functie pentru furnizarea de informatii in modul de lucru direct, cu deschiderea unei

    ferestre separate pentru cautare;

    Sintaxa:

    >helpwin subiect - deschide o fereastra si afiseaza informatii despre subiect;

    >helpwin(text,titlu) - deschide o fereastra cu numele titlu in care inscrie text;

    informatii despre subiect pentru informatii despre subiect; cu numele ferestrei titlu.

    Exemple:

    >helpwin plot - deschide o fereastra cu informatii despre functia plot;

    >helpwin(plot) - idem

    >helpwin(Informatii despre text, Ionel) - deschide o fereastra cu numele Ionel, in

    care inscrie textul Informatii despre text;

    helpdesk - incarca Matlab Help Desk in fereasrea Web de cautare pentru help extins.

    Sintaxa:

    >helpdesk

  • Exemplu:

    Pentru informatii Help Desk despre functia plot:

    >helpdesk ,inscrie apoi plot in fereastra Search Matlab Index si tasteaza Search.

    demo, demos - lanseaza in executie programul demonstratie Matlab.

    demos , selecteaza din fereastra deschisa categoria de subiecte prin dublu clic cu

    mous-ul , apoi subiectul dorit prin simplu clic; foloseste meniul oferit pentru lansare, urmarire si

    inchidere program demonstrativ.

    ver - ofera informatii cu privire la versiunea Matlab, Simulink si Toolbox curente;

    >ver

    version - ofera informatii cu privire la versiunea Matlab curenta si a datei de realizare a ei.

    >version - returneaza versiunea Matlab curenta;

    >[v,d]=version - returneaza versiunea Matlab curenta si data realizarii ei.

    whatsnew - afiseaza fisierele de tip Readme care contin informatii cu privire la noutatile

    versiunii Matlab curente;

    >whatsnew

    b) Pentru controlul (monitorizarea) spatiului de lucru

    clear - sterge variabile si functii din memoria interna

    >clear

    > a=[1 2 3], clear, a

    who - listeaza variabilele curente

    >clear,a=[1 2 3],who

    whos - listeaza variabilele curente, forma lunga

    >clear,a=[1 2 3],whos

    pack - consolideaza memoria spatiului de lucru

    >pack

  • save - salveaza variabilele din spatiul de lucru pe disc;

    >clear; a=[1 2 3]; save

    load - incarca variabilele spatiului de lucru de pe disc;

    >clear,a=[1 2 3], save, clear, load, a

    quit - paraseste sesiunea curenta de lucru Matlab.

    >quit

    c) Pentru comenzi si functii

    what - afiseaza lista fisierelor specifice Matlab dintr-un director;

    Sintaxa:

    >what nume_director - afiseaza lista fisierelor specifice Matlab-ului din directorul

    nume_director;

    >what - afiseaza lista fisierelor specifice Matlab din directorul curent;

    Exemple:

    >what -afiseaza lista fisierelor atlab din directorul implicit BIN;

    >what general - afiseaza lista fisierelor Matlab din directorul general, aflat in calea

    Matlab;

    type - afiseaza continutul unui fisier;

    Sintaxa:

    >type nume_fisier

    Exemplu:

    >type fzero - afiseaza continutului fisierului plot.

    edit - comanda pentru editarea unui fisier Matlab creat;

    Sintaxa:

    >edit nume_fisier

    Exemplu:

    >edit test.m -deschide fisierul existent test.m pentru editare

  • lookfor - comanda pentru identificarea fisierelor care contin un cuvant cheie pe linia 1 de help;

    Sintaxa:

    >lookfor cuvant_cheie - listeaza numele fisierelor care contin textul cuvant_cheie in

    linia 1 de help (linia H 1);

    Exemplu:

    >lookfor plot - listeaza fisierele care contin cuvantul plot pe linia 1 de help.

    which - localizeaza functii si fisiere;

    Sintaxa:

    >which nume_functie - returneaza adresa (calea) fisierului nume_functie;

    Exemplu:

    >which fzero - returneaza calea fisierului fzero.m;

    pcode - creaza fisiere pre-parsed pseudo-cod (fisisere .p) din fisiere .m;

    Sintaxa:

    >pcode lista_de_functii - creaza fisiere .P in directorul curent ale functiilor

    specificate in lista_de_functii;

    >pcode lista_de_functii -inplace - creaza fisiere .P in directorul functiilor din

    lista_de_functii;

    Exemple:

    >pcode plot.m fzero.m - creaza fisierele plot.p si fzero.p in directorul curent;

    >pcode plot.m fzero.m -inplace - creaza fisierele plot.p si fzero.p in directorii

    fisierelor plot.m si fzero.m (directorii graph2D, respectiv funfun din toolbox\matlab);

    inmem - listeaza functii din memoria interna, foosite in sesiunea de lucru;

    Sintaxa:

    >inmem - listeaza fisierele .m din memoria interna;

    >m=inmem - returneaza matricea m cu numele functiilor din memoria interna;

    >[m,mex]=inmem - returneaza matricea m cu numele functiilor .m si matricea mex cu

    numele fisierelor de tip .mex din memoria interna;

    Exemple:

    >clear all; pcode plot.m; inmem - returneaza numele functiilor .m folosite pentru

    crearea fisierului plot.p din plot.m;

    >clear all; pcode plot.m; m=inmem - afiseaza matricea m cu numele functiilor .m

    folosite pentru creare plot.p din plot.m;

  • >clear all; pcode plot.m; [m,mex]=inmem - afiseaza matricea m cu numele

    functiilor .m si matricea mex cu numele functiilor .mex folosite pentru crearea plot.p din plot.m.

    d) Pentru controlul caii de cautare (Matlab path)

    path - returneaza/seteaza caile de cautare din calea curenta Matlab (Matlabpath);

    >path - afiseaza lista curenta a cailor de cautare din Matlabpath;

    addpath - adauga noi cai de cautare in Matlabpath;

    >addpath lista_cai_directori

    Exemplu:

    >addpath c:\adi c:\nicu - adauga caile c:\adi si c:\nicu in calea de cautare Matlab;

    rmpath - sterge cai directori din calea Matlab;

    >rmpath lista_cai_directori - inlatura caile continute in lista_cai_directori din calea

    Matlab;

    Exemplu:

    >rmpath c:\adi c:\nicu - inlatura caile c:\adi si c:\nicu din calea Matlab;

    editpath - modifica calea de cautare, folosind, sub Windows, un editor intern;

    >editpath - deschide fereastra editorului intern a caii Matlab (Matlabpath); folosind

    meniul acestuia, pot fi adaugate/sterse noi cai in/din calea Matlab;

    e) Pentru controlul ferestrei de comenzi

    clc - sterge fereastra de comenzi si pozitioneaza cursorul in coltul stanga sus al ferestrei de

    comenzi;

    >clc

    home - pozitioneaza cursorul in coltul stanga sus al ferestrei de comenzi;

    >home

    echo - comanda pentru afisarea liniilor din programele .m de tip script, pe masura executarii

    lor;

    >echo on - activeaza comanda echo; vor fi afisate liniile programelor .m de tip script

    care vor fi executate dupa aceasta comanda;

  • >echo off - dezactiveaza comanda echo;

    >echo nume_functie on - are ca efect afisarea liniilor functiei nume_functie atunci

    cand aceasta va fi executata;

    >echo nume_functie off - dezactiveaza comanda echo aplicata functiei nume_functie;

    >echo on all - afiaseaza liniile tuturor functiilor din memorie folosite la executarea

    unui program .m script;

    >echo off all - dezactiveaza comanda echo on all;

    Exemple:

    Fie programul ptest.m, de tip script, care apeleaza functia ftest.m, prezentate mai jos:

    % program ptest.m

    x1=fzero(ftest,8);

    x2=fzero(ftest,-8);

    x1, x2

    function y=ftest(x)

    y=x^4+5.0*x^3-6;

    >echo on; ptest - afiseaza liniile programului ptest.m pe masura ce sunt executate;

    >echo off; ptest - dezactiveaza comanda echo on; liniile programului ptest.m nu vor

    mai fi afisate;

    >echo ftest on; ptest - afiseaza liniile functiei ftest.m, apelata de ptest.m;

    >echo ftest off; ptest - dezactiveaza comanda echo aplicata functiei ftest.m; liniile

    functiei ftest.m nu vor mai fi afisate la executarea programului ptest.m;

    >echo on all; ptest - afiseaza liniile functiilor din memorie folosita la executarea

    programului ptest.m;

    >echo off all; ptest - dezactiveaza comanda echo on all; liniile functiilor din memorie

    nu vor mai fi afisate la executia programului ptest.m;

    more - comanda pentru controlul de pagina al output-ului din fereastra de comenzi;

    >more on - activeaza comanda more; dupa afisarea unui pagini, se asteapta apasarea

    unei taste pentru continuarea afisarii; se tasteaza:

    Enter pentru afisarea in continuare a unei linii ecran;

    Space bar pentru afisarea unei pagini;

    q pentru intreruperea afisarii;

    >more off - deazctiveaza comanda more;

  • >more(n) - fixeaza marimea paginii afisate la n linii;

    Exemple:

    >more on; echo on all; ptest - afiseaza o pagina,dupa care se asteapta apasarea unei

    taste (Enter, Space bar sau q);

    >more off; ptest - afisare continua pe ecran;

    >more(10); ptest - fixeaza marimea paginii afisate la 10 linii ecran;

    diary - salveaza textul sesiunii de lucru Matlab intr-un fisier ASCII;

    >diary nume_fisier - salveaza textul sesiunii de lucru Matlab, incepand din acest

    moment, in fisierul nume_fisier;

    >diary off - dezactiveaza comanda diary;

    >diary on - reactiveaza comanda diary;

    >diary(nume_fisier) - forma functionala a comenzii diary, unde nume_fisier este

    definit printr-o constanta sir;

    Exemple:

    >diary c:\test.txt; ptest; diary off - creaza fisierul c:\test, inscrie in el output-ul text

    furnizat de programul ptest.m, dezactiveaza comanda diary si inchide fisierul c:\test.m;

    >diary c:\test.txt; type ptest.m; diary off - deschide fisierul existent c:\test.txt in care

    adauga output-ul text al comenzii type ptest.m (liniile programului ptest.m), dezactiveaza

    comanda diary si inchide fisierul c:\test.txt.

    >s=c:\test.txt; diary(s); type ptest.m; diary off - atribuie variabilei s de tip sir

    valoarea c:\test.txt, afiseaza pe ecran fisierul ptest.m, adauga in fisierul c:\test.txt textul afisat pe

    ecran, dezactiveaza comanda diary si inchide fisierul c:\test.txt.

    format - seteaza formatul de afisare a valorilor numerice, reprezentate in Matlab in dubla

    precizie; poate fi selectat si direct din fereastra File/Preferences/General.

    Sintaxa:

    >format optiune , unde optiune poate fi:

    short - format scalat in virgula fixa cu 5 cifre;

    short e - format sclat in virgula mobila cu 5 cifre;

    long - format scalat in virgula fixa cu 15 cifre;

    long e - format scalat in virgula mobila cu 15 cifre;

    short g - formatul cel mai bun dintre cel in virgula fixa si cel in virgula mobila, cu 5 cifre;

    long g - formatul cel mai bun dintre cel in virgula fixa si cel in virgula mobila, cu 15 cifre;

    hex - format hexadecimal;

  • + - simbolurile + , - si blank sunt returnate pentru numerele pozitive, respectiv negative sau

    egale cu zero, cu neglijarea partii imaginare in cazul numerelor complexe;

    bank - format bancar, scalat in virgula fixa cu doua zecimale;

    rat - format expresie rationala; aproximare prin rata celor mai mici intregi;

    compact - pentru spatiere; suprima linia de separare la afisarea rezultatelor;

    loose - pentru spatiere, include linia de separare;

    Exemple:

    >format short, pi, format long, pi - afiseaza valoarea numarului in formatele

    virgula fixa cu 5 cifre si cu 15 cifre;

    >format short e, pi, format long e, pi - afiseaza valoarea numarului in formatul

    virgula mobila cu 5 cifre si cu 15 cifre;

    > a=1/3*10^10; format short g, a, format long g, a - calculeaza si afiseaza valoarea

    variabilei a in cea mai buna reprezentare, in forma scurta si in forma lunga;

    >format hex, pi - afiseaza valoarea numarului in sistemul de numeratie

    hexadecimal;

    >a=10; b=-10; c=0.0; format +, a, b, c - atribuie valori variabilelor a, b, si c si

    returneaza simbolurile +, - si blanc.

    >a=1/3*10^10; format bank, a - calculeaza valoarea variabilei a si o afiseaza in

    format bancar;

    >format rat; pi - afiseaza valoarea numarului sub forma rationala (355/13);

    >b=1:20; format compact, b, format loose b - genereaza vectorul b si afiseaza

    elementele lui cu suprimarea, respectiv includerea liniei de spatiere la afisare;

    f) Functii pentru controlul marimilor de timp

    clock - returneaza un vector cu 6 elemente reprezentand anul, luna, ziua, ora, minutul,

    secunda curente, dupa data si ceasul calculatorului;

    Sintaxa:

    >clock

    Exemple:

    >format bank; clock - afiseaza data si ora curente, in format bancar;

    >format short; fix(clock) - afiseaza data si ora curente, rotunjite la valorile intregi

    cele mai apropiate spre zero;

  • >s=clock; s(1) - atribuie variabilei s valorile returnate de clock si afiseaza primul

    element (anul);

    date - afiseaza data curenta sub forma sir de caractere, zi-luna-an;

    Sintaxa:

    >date - returneaza sirul de caractere reprezentand ziua, luna si anul curente;

    Exemple:

    >date

    >s=date; s(4:6) - atribuie variabilei s sirul returnat de date si afiseaza caracterele de

    pe coloanele 4-6 (luna curenta);

    tic, toc - tic porneste un cronometru (timpul in secunde), toc citeste cronometrul;

    >tic - porneste cronometrul;

    >toc - citeste cronometrul, returneaza timpul scurs, in secunde, de la pornirea

    cronometrului;

    >tic, operatii, toc - porneste cronometrul, efectueaza operatii si afiseaza timpul in

    secunde folosit pentru operatii;

    >s=toc; - atribuie variabilei s timpul scurs de la pornirea cronometrului;

    Exemple:

    >tic; A=0:0.01:2*pi; B=sin(A); plot(A,B); grid; toc - porneste cronometrul,

    genereaza vectorul A cu elemente sirul valorilor de la 0 la 2 cu pasul de crestere 0.01,

    calculeaza valorile functiei sin a acestor valori, traseaza graficul valorilor calculate, citeste

    cronometrul si afiseaza timpul scurs de la pornire, in secunde.

    etime - returneaza timpul scurs intre doua momente reprezentate prin doi vectori returnati de

    functia clock sau avand formatul acestora (6 elemente); nu ia in consideratie diferentele implicate

    de luna si an diferite;

    > t1=clock; operatii, t2=clock; etime(t2,t1) - atribuie variabilei t1 timpul curent

    returnat de functia clock, efectueaza operatii, atribuie variabilei t2 timpul curent returnat de clock

    si afiseaza diferenta, in secunde, dintre momentele t2 si t1;

    Exemple:

    > t1=clock; A=rand(1,100);B=1:100; bar(B,A); grid; t2=clock; etime(t2,t1) -

    atribuie variabilei t1 data si timpul curent, genereaza matricea A(1 ,100) cu numere aleatoare

    cuprinse intre 0 si 1 dupa legea distributiei uniforme, construieste graficul tip bare cu valorile

    generate, atribuie variabilei t2 timpuil curent si afiseaza timpul, in secunde, scurs intre t1 si t2;

  • >t1=[2000 12 20 12 0 0]; t2=[2000 12 20 13 0 0]; etime(t2,t1) - afiseaza diferenta

    de timp, in secunde, dintre momentele t2 si t1 definite prin atribuire directa de valori (in acest caz

    valoarea returnata este de 3600 s, data de diferenta de 1 ora intre cele doua momente);

    >t1=[2000 12 20 12 0 0]; t2=[2001 1 20 13 0 0]; etime(t2,t1) - returneaza acelasi

    rezultat ca in exemplul precedent, nelund in consideratie diferentele de an si luna;

    cputime - returneaza timpul CPU (timpul folosit de unitatea centrala de procesare), in

    secunde, folosit de Matlab de la inceputul sesiunii de lucru;

    >cputime - afiseaza timpul CPU curent;

    >t=cputime - atribuie variabilei t valoarea curenta a timpului CPU;

    Exemple:

    >t1=cputime; A=0:0.01:2*pi; B=sin(A); plot(A,B); grid; t2=cputime, t2-t1 - afiseaza

    timpul CPU folosit pentru efectuarea operatiilor generare vector A, calcul sin(A) si plotare valori

    calculate.

    g) Comenzi ale sistemului de operare

    dir - afiseaza lista fisierelor dintr-un director;

    >dir cale_si_nume_director - afiseaza lista fisierelor din directorul specificat prin

    cale_si_nume_director;

    >d=dir(cale_si_nume_director) - returneaza o structura avand numarul liniilor egal

    cu numarul fisierelor din cale_si_nume_director si o coloana cu 4 campuri pentru, respectiv,

    nume fisier, data modificarii, numarul bitilor ocupati de fisier si numarul 1 sau 0 dupa cum este

    director sau nu.

    Exemple:

    >dir - adiseaza lista fisierelor din directorul curent;

    >dir c:\matlab - afiseaza lista fisierelor din directorul matlab;

    >d=dir(c:\matlab); d(3,:) - construieste structura d si afiseaza cele 4 campuri de pe

    linia a 3-a;

    cd - schimba directorul curent de lucru;

    >cd - afiseaza calea si numele directorului curent de lucru printr-un sir de caractere;

    >d=cd - atribuie variabilei d sirul de caractere reprezentand cale si nume director

    curent de lucru;

  • >cd cale_si_nume_director - seteaza directorul curent de lucru potrivit cu

    cale_si_nume_director;

    >s=cale_si_nume_director; cd(s) - idem

    >cd . . - directorul curent de lucru devine cel precedent din cale;

    Exemple:

    >cd, d1=cd - afiseaza calea si numele directorului curent de lucru si le atribuie

    variabilei d1 de tip sir de caractere;

    >cd c:\matlab\toolbox - seteaza toolbox ca director curent de lucru;

    >s=c:\matlab\toolbox; cd(s), d0=cd .. - seteaza toolbox ca director curent de lucru

    si retine in d0 calea si numele directorului precedent din cale;

    pwd - afiseaza directorul curent de lucru;

    >pwd - afiseaza directorul curent de lucru;

    >s=pwd - returneaza in s directorul curent de lucru;

    Exemple:

    >s1=pwd; cd c:\matlab\toolbox; pwd - retine in s1 directorul curent de lucru,

    schimba si afiseaza noul directorul de lucru;

    > s1=pwd; cd c:\matlab\toolbox; s2=pwd - idem, cu retinerea noului director de

    lucru in s2;

    delete - sterge fisiere sau obiecte grafice;

    >delete cale_si_nume_fisier - sterge fisierul nume_fisier din calea specificata;

    >s=cale_si_nume_fisier; delete(s) - idem (forma functionala a comenzii delete);

    Exemple:

    >delete c:\matlab\bin\ptest.m - sterge fisierul ptest.m cu calea c:\matlab\bin;

    >s=c:\matlab\bin\ptest.m; delete(s) - idem;

    ! - transfera executia comenzilor sistemului de operare MS-DOS, fara parasirea Matlab-ului;

    >! - deschide o fereastra de comenzi MS-DOS;

    Exemplu:

    Pentru executia programului OPTIMBP.BAS in GWBASIC si revenirea in Matlab, poate fi

    folosita urmatoarea secventa de comenzi:

    >! - deschide o fereastra de lucru in MS-DOS;

    >gwbasic - in MS-DOS, lanseaza in executie interpreterul GWBASIC;

    load c:\optimbp.bas - comanda GWBASIC pentru incarcarea programului;

  • run - comanda GWBASIC pentru lansarea in executie a programului;

    system - comanda pentru iesirea din GWBASIC si revenirea sub controlul MS-DOS;

    close (tastata din meniul ferestrei MS-DOS) - iesire din MS-DOS si revenire in Matlab.

    dos - executa o comanda DOS si returneaza rezultatul;

    >dos(comanda_DOS_sau_Windows)

    computer - tipul calculatorului. Returneaza un text continand tipul calculatorului pe care se

    se executa Matlab-ul. Posibilitatile sunt:

    PCWIN - MS-Windows

    MAC2 - Macintosh

    SUN4 - Sun SPARC

    SOL2 - Solaris 2

    HP700 - HP 9000/700

    SGI - Silicon Graphics

    SGI64 - Silicon Graphics R8000

    IBM_RS - IBM RS6000

    ALPHA - Dec Alpha

    AXP_VMSG - Alpha VMS G_float

    AXP_VMSIEEE - Alpha VMS IEEE

    LNX86 - Linux Intel

    VAX_VMSG - VAX/VMS G_float

    VAX_VMSD - VAX/VMS D_float

  • 3. Variabile si constante speciale in Matlab

    In Matlab exista o serie de variabile si constante cu anumite semnificatii , care nu trebuie

    declarate si sunt accesibile global in orice fisier de tip .m . Dintre acestea mentionam cateva:

    ans - cel mai recent raspuns (l.e., answer =raspuns). Este variabila creata in mod automat,

    careia i se atribuie valoarea celei mai recente expresii neasignate. Exemple:

    >x=1.5; y=0.10; x^y

    ans =

    1.0414

    Deci variabilei ans i se atribuie valoarea expresiei x^y.

    > a=[1 2 3 4 5]; a>=2, ans-1

    ans =

    0 1 1 1 1

    ans =

    -1 0 0 0 0

    In acest caz, variabilei ans i se atribuie mai intai vectorul cu elementele 0 sau 1 dupa cum este indeplinita sau

    nu conditia a>=2, dupa care i se atribuie vactorul cu elementele ans-1.

    eps - returneaza precizia relativa in reprezentarea numerelor in modul virgula mobila

    (epsilon masina, distanta dintre 1 si urmatorul numar reprezentabil in virgula mobila). In unele

    functii Matlab, eps reprezinta toleranta implicita (eroarea maxima admisa, criteriul de

    convergenta) in aproximarea solutiei, atribuita prin program, cu valoare diferita, in general, de

    precizia masinii. Exemple:

    >eps

    ans =

    2.220446049250313e-016

    > epsc=1; while 1+epsc>1; epsc=epsc/2; end; epsc=2*epsc

    epsc =

    2.220446049250313e-016

    Se observa ca epsc=eps si acest exemplu reprezinta un mod practic pentru determinarea

    preciziei curente a masinii.

    >1+eps>1, 1+eps/2>1

    ans =

    1

    ans =

    0

  • In acest caz, pentru 1+eps>1 se obtine valoarea 1, corespunzand valorii logice adevarat,

    in timp ce pentru 1+eps/2>1 se obtine valoarea 0, corespunzand valorii logice fals, raspuns

    incorect datorat preciziei limitate in reprezentarea numerelor in modul virgula mobila.

    pi - returneaza valoarea numarului ; Exemple: > pi

    ans =

    3.141592653589793e+000

    >4*atan(1)

    ans =

    3.141592653589793e+000

    >log(-1)

    ans =

    0 +3.141592653589793e+0001

    >sin(pi)

    ans =

    1.224606353822377e-016

    Valoarea functiei sin(pi) este foarte mica, dar nu zero, datorita erorilor care decurg din

    reprezentarea in virgula mobila a numerelor pe un numar finit de biti.

    i si j - unitati imaginare, folosite pentru reprezentarea numerelor complexe; pot fi folosite si

    ca nume de variabile, de regula pentru variabilele de ciclare in instructiunile de calcul repetitiv,

    prin redefinirea lor. Exemple: >i, j

    ans =

    0 + 1.00000000000000i

    ans =

    0 + 1.00000000000000i

    >a=1+3i, b=2+4j, c=a+b

    a =

    1.0000 + 3.0000i

    b =

    2.0000 + 4.0000i

    c =

    3.0000 + 7.0000i

    > for i=1:10; a(i)=i/2; end; a

    a =

    Columns 1 through 7

    0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000

  • Columns 8 through 10

    4.0000 4.5000 5.0000

    In acest caz, i este variabila de ciclare a calculelor si nu mai reprezinta, in continuare, unitatea

    imaginara.

    Inf - plus infinit, reprezentat in aritmetica virgula mobila; in calcule, se obtine ca rezultat al

    impartirii unui numar prin zero sau prin depasirea celui mai mare numar reprezentabil in

    aritmetica curenta (overflow). Exemple:

    >1/0, exp(710), Inf+Inf

    Warning: Divide by zero.

    ans =

    Inf

    ans =

    Inf

    ans =

    Inf

    NaN - Nu este un numar (l. e., Not-a-Number), in aritmetica virgula mobila. Se obtine ca

    rezultat al unor operatii: 0/0, Inf/Inf, Inf-Inf s.a. Exemple:

    >0/0, Inf/Inf, Inf-Inf, Nan-NaN

    Warning: Divide by zero.

    ans =

    NaN

    ans =

    NaN

    ans =

    NaN

    ans =

    NaN

    realmax - cel mai mare numar pozitiv reprezentabil in virgula mobila pe calculatorul curent. Exemple:

    >x=realmax, x+1.0e+291, x+1.0e+292, x+x

    x =

    1.797693134862316e+308

    ans =

    1.797693134862316e+308

  • ans =

    Inf

    ans =

    Inf

    realmin - cel mai mic numar pozitiv reprezentat normalizat in modul virgula mobila; orice

    numar mai mic este egalat cu zero sau reprezentat denormal in modul virgula mobila. Exemple:

    > realmin

    ans =

    2.225073858507202e-308

    > realmin/1.0e+015, realmin/1.0e+016, realmin/realmax

    ans =

    2.470328229206233e-323

    ans =

    0

    ans =

    0

  • 4. Importul si exportul fisierelor de date

    4.1 Date neformatate

    a. Salvarea si incarcarea fisierelor de date in forma binara

    save - salveaza toate variabilele in fisierul matlab.mat.

    load - incarca variabilele din fisierul matlab.mat.

    Exemple:

    >clear, a=[1 2 3 4 5]; save

    Saving to: matlab.mat

    >clear, load, a

    Loading from: matlab.mat

    a =

    1 2 3 4 5

    save cale_si_nume_fisier.mat - salveaza toate variabilele in fisierul nume_fisier.mat;

    load cale_si_nume_fisier.mat - incarca variabilele din fisierul nume_fisier.mat;

    Exemple:

    >clear; a=[1 2 3 4 5]; save c:\fisier1.mat

    >clear; load c:\fisier1.mat, a

    a =

    1 2 3 4 5

    save cale_si_nume_fisier.mat lista_de_variabile - salveaza variabilele specificate in

    lista_de_variabile in fisierul nume_fisier.mat;

    save cale_si_nume_fisier.mat lista_de_variabile -append - adauga variabilele din

    lista_de_variabile in fisierul existent nume_fisier.mat;

    load cale_si_nume_fisier.mat - incarca variabilele din fisierul nume_fisier.mat (la fel ca

    mai sus);

    Exemple:

    >a=1:5, b=5:-1:1, c=[a' b'], d=a*c, save c:\fisier2.mat c d

  • a =

    1 2 3 4 5

    b =

    5 4 3 2 1

    c =

    1 5

    2 4

    3 3

    4 2

    5 1

    d =

    55 35

    >clear; load c:\fisier2.mat; c,d

    c =

    1 5

    2 4

    3 3

    4 2

    5 1

    d =

    55 35

    b. Salvarea si incarcarea fisierelor de date in forma ASCII

    save cale_si_nume_fisier lista_de_variabile -ascii - salveaza in fisierul nume_fisier, in

    format ASCII cu 8 cifre, variabilele specificate in lista_de_ variabile;

    save cale_si_nume_fisier lista_de_variabile -ascii -double - salveaza in fisierul

    nume_fisier, in format ASCII cu 16 cifre, variabilele specificate in lista_de_ variabile;

    save cale_si_nume_fisier lista_de_variabile -ascii -double -tabs - salveaza in fisierul

    nume_fisier, in format ASCII cu 16 cifre, variabilele specificate in lista_de_ variabile, separate

    prin tabs.

    load cale_si_nume_fisier - incarca datele, dispuse pe linii, cu acelasi numar de coloane pe

    fiecare linie, din fisierul nume_fisier, si le atribuie variabilei nume_fisier.

  • Exemple:

    >a=1:5; save c:\fisier3.dat a -ascii

    >a=1:5; save c:\fisier4.dat a -ascii -double

    >a=1:5; save c:\fisier5.dat a -ascii -double -tabs

    >load c:\fisier3.dat, fisier3

    fisier3 =

    1 2 3 4 5

    >load c:\fisier4.dat, fisier4

    fisier4 =

    1 2 3 4 5

    >load c:\fisier5.dat, fisier5

    fisier5 =

    1 2 3 4 5

    >a=eye(3), b=1:3, M=[a b'], save c:\fisier6.dat M ascii

    a =

    1 0 0

    0 1 0

    0 0 1

    b =

    1 2 3

    M =

    1 0 0 1

    0 1 0 2

    0 0 1 3

    >clear, load c:\fisier6.dat, fisier6, a=fisier6(1:3,1:3), b=fisier6(:,4)'

    fisier6 =

    1 0 0 1

    0 1 0 2

    0 0 1 3

    a =

    1 0 0

    0 1 0

    0 0 1

    b =

    1 2 3

  • 5. Constante si variabile. Definirea matricelor. Expresii aritmetice, relationale si logice.

    5.1 Constante si variabile in Matlab

    Constantele in Matlab pot fi de tip numeric si de tip caracter sir. Constantele numerice

    pot fi numere reale sau numere complexe. Exemple:

    1.2000 ; 12e-001 ; 1.0+2i ;

    Precizia relativa, eps, in reprezentarea numerelor este aproximata cu 16 cifre semnificative.

    Limitele superioara si inferioara sunt 10308 (realmax), respectiv 10-309

    Constantele de tip sir sunt definite printr-un sir de caractere (litere, cifre, spatii albe),

    delimitat prin apostrof ().

    (realmin).

    Exemple: abcd ; a1 a2 a3 ; Ionescu V. Ion

    Variabilele in Matlab pot fi numerice sau de tip sir si sunt reprezentate ca matrice. Astfel, un

    scalar este definit si tratat ca matrice (1x1), un vector ca matrice (1xn) sau (nx1), o matrice ca

    matrice (nxm). Valorile momentane ale variabilelor se definesc prin operatiunea de atribuire,

    variabila = expresie

    unde variabila este un nume legal in Matlab (incepe cu o litera, contine litere din alfabetul

    anglo-saxon si cifre, literele mari nu se confunda cu cele mici), iar expresie reprezinta o

    constanta, expresie aritmetica, expresie logica, functie Matlab. Exemple: > a=1.2, b=a+2.5, c=a>b, d=sin(a)

    a =

    1.2000

    b =

    3.7000

    c =

    0

    d =

    0.9320

    > A=eye(4), B=ones(4,2), C=A*B

    A =

    1 0 0 0

    0 1 0 0

    0 0 1 0

    0 0 0 1

  • B =

    1 1

    1 1

    1 1

    1 1

    C =

    1 1

    1 1

    1 1

    1 1

    > a='sunt ', b='inginer' , c=[a b]

    a =

    sunt

    b =

    inginer

    c =

    sunt inginer

    5.2 Definirea matricelor in Matlab

    Elementele unei matrice pot fi constante de tip sir sau numere reale, complexe, expresii

    Matlab si sunt referite prin indici cuprinsi in paranteze rotunde, separati intre ei prin virgula.

    Definirea matricelor poate fi facuta:

    a) prin introducerea listei de elemente:

    nume_matrice = [lista_de_elemente]

    unde nume_matrice este un nume legal de variabila (trebuie sa inceapa cu o litera, sa

    contina numai caractere legale - litere din alfabetul anglo-saxon si, eventual, cifre). Elementele

    din lista_de_elemente sunt separate intre ele, pe linie, prin unul sau mai multe spatii albe

    (blank-uri), iar liniile sunt separate intre ele prin caracterul puct si virgula (;) sau prin

    introducere elementelor pe linia ecran urmatoare. Exemple:

    >a=1.20, size(a)

    a =

    1.2000

    ans =

    1 1

    >A=[0.1 2.5 3.1 4.2 0.3]

    A =

    0.1000 2.5000 3.1000 4.2000 0.3000

  • >A=[0.1, 2.5, 3.1, 4.2, 0.3]

    A =

    0.1000 2.5000 3.1000 4.2000 0.3000

    >B=[1 0 2 4 2; 3 2 1 0 0; 5 4 3 2 1]

    B =

    1 0 2 4 2

    3 2 1 0 0

    5 4 3 2 1

    >C=[1 0 1 -1

    1 2 3 4

    4 3 2 1]

    C =

    1 0 1 -1

    1 2 3 4

    4 3 2 1

    >a=1; b=2; c=3; D=[a b; c sin(a)]

    D =

    1.0000 2.0000

    3.0000 0.8415 b) prin generarea listei de elemente folosind instructiuni si functii:

    nume_matrice = instructiune, sau

    nume_matrice = functie Exemple: > A=[1:5; 5:-1:1]

    A =

    1 2 3 4 5

    5 4 3 2 1

    > B=zeros(3,3)

    B =

    0 0 0

    0 0 0

    0 0 0

    > C=ones(3,3)

    C =

    1 1 1

    1 1 1

    1 1 1

  • > D=eye(3)

    D =

    1 0 0

    0 1 0

    0 0 1

    > x=[1 2 3; 0.5 1.5 2.5], A=sin(x)

    x =

    1.0000 2.0000 3.0000

    0.5000 1.5000 2.5000

    A =

    0.8415 0.9093 0.1411

    0.4794 0.9975 0.5985

    c) prin incarcare din fisiere de date: Exemple:

    >A=[1:3; 0.5:0.5:1.5]; save

    Saving to: matlab.mat

    >clear; load; A

    Loading from: matlab.mat

    A =

    1.0000 2.0000 3.0000

    0.5000 1.0000 1.5000

    > B=[1:5; sqrt(1:5)]

    B =

    1.0000 2.0000 3.0000 4.0000 5.0000

    1.0000 1.4142 1.7321 2.0000 2.2361

    > B=[1:5; sqrt(1:5)]; save c:\fisier10.dat B -ascii

    >clear; load c:\fisier10.dat; fisier10

    fisier10 =

    1.0000 2.0000 3.0000 4.0000 5.0000

    1.0000 1.4142 1.7321 2.0000 2.2361

    d) prin extragere din matrice mai mari sau prin compunere de matrice mai mici: Exemple:

    > A=[1:0.5:2.5; 2.5:-0.5:1]; B=A(1:2,1:3)

    B =

    1.0000 1.5000 2.0000

    2.5000 2.0000 1.5000

    > A=eye(3); B=zeros(3,1); C=[1 2 3]'; D=[A B C]

    D =

    1 0 0 0 1

    0 1 0 0 2

    0 0 1 0 3

  • 5.3 Expresii aritmetice, relationale si logice

    a) Expresii aritmetice

    Expresiile aritmetice sunt definite prin operanzi, separati intre ei prin operatori

    aritmetici. Operanzii pot fi constante sau variabile. Operatorii aritmetici in Matlab sunt

    diferentiati dupa natura operanzilor. Astfel, pentru operatii intre scalari, operatii intre matrice si

    operatii intre scalari si matrice (tablouri), se folosesc urmatorii operatori aritmetici:

    Operatia Scalari Matrice Tablouri

    Adunare + + +

    Scadere - - -

    Inmultire * * .*

    Impartire la stanga \ \ .\

    Impartire la dreapta / / ./

    Ridicare la putere ^ ^ .^

    Transpunere .

    Ordinea operatiilor aritmetice este cea din matematica obisnuita. Se folosesc numai

    paranteze rotunde. Exemple:

    >a=1.2, b=0.10, c=a+b, d=a-b, e=a*b, f=a/b, g=a\b, h=a^b

    a =

    1.2000

    b =

    0.1000

    c =

    1.3000

    d =

    1.1000

    e =

    0.1200

    f =

    12.0000

    g =

    0.0833

    h =

    1.0184

  • > A=[0 1 2; 3 1 4; 5, 2 -6], B=eye(3), C=A+B, D=A-B, E=A*B, F=A/B, G=A\B, H=A^2, I=A'

    A =

    0 1 2

    3 1 4

    5 2 -6

    B =

    1 0 0

    0 1 0

    0 0 1

    C =

    1 1 2

    3 2 4

    5 2 -5

    D =

    -1 1 2

    3 0 4

    5 2 -7

    E =

    0 1 2

    3 1 4

    5 2 -6

    F =

    0 1 2

    3 1 4

    5 2 -6

    G =

    -0.3500 0.2500 0.0500

    0.9500 -0.2500 0.1500

    0.0250 0.1250 -0.0750

    H =

    13 5 -8

    23 12 -14

    -24 -5 54

    I =

    0 3 5

    1 1 2

    2 4 -6

    > A=[1 0 1; -1 2 -3]; b=0.10, C=A+b, D=A-b, E=A.*b, F=A./b, G=A.^b

    b =

    0.1000

  • C =

    1.1000 0.1000 1.1000

    -0.9000 2.1000 -2.9000

    D =

    0.9000 -0.1000 0.9000

    -1.1000 1.9000 -3.1000

    E =

    0.1000 0 0.1000

    -0.1000 0.2000 -0.3000

    F =

    10 0 10

    -10 20 -30

    G =

    1.0 0 1.0000

    0.9511+ 0.3090i 1.0718 1.0615 + 0.3449i

    b) Expresii relationale

    Sunt constituite din constante, variabile, expresii aritmetice (operanzi), separate intre

    ele prin operatori de relatie. Valoarea unei expresii relationale poate fi adevarat, reprezentat

    numeric prin numarul 1, sau fals, reprezentat numeric prin numarul 0. In Matlab, operatorii

    relationali compara doua matrice element cu element si returneaza rezultatul intr-o matrice

    de aceleasi dimensiuni, cu elementele 0 sau 1. Operatorii de relatie in Matlab sunt:

    Operator Semnificatie

    < mai mic; compara numai partea reala;

    mai mare; compara numai partea reala;

    >= mai mare sau egal; compara numai partea reala;

    == identic; compara partea reala si partea imaginara;

    ~= diferit; compara partea reala si artea imaginara.

    Exemple:

    >A=[1 -1 2 -2; 0 1 2 3], B=ones(2,4), A=B, A==B, A~=B

    A =

    1 -1 2 -2

    0 1 2 3

  • B =

    1 1 1 1

    1 1 1 1

    ans =

    0 1 0 1

    1 0 0 0

    ans =

    1 1 0 1

    1 1 0 0

    ans =

    0 0 1 0

    0 0 1 1

    ans =

    1 0 1 0

    0 1 1 1

    ans =

    1 0 0 0

    0 1 0 0

    ans =

    0 1 1 1

    1 0 1 1

    c) Expresii logice

    Sunt constituite din expresii relationale, separate intre ele prin operatori logici.

    Valoarea unei expresii logice poate fi adevarat, reprezentat numeric prin numarul 1, sau

    fals, reprezentat numeric prin numarul 0. In Matlab, operatorii logici opereaza asupra a doua

    matrice in modul element cu element si returneaza rezultatul intr-o matrice cu aceleasi

    dimensiuni, cu elementele 0 sau 1. Operatorii logici in Matlab sunt:

    Operator Simbol

    Matlab

    Operatie logica Prioritate

    NU ~= NU logic (negatie logica) 1

    SI & SI logic 2

    SAU | SAU logic 3

    In plus, in Matlab, exista functiile logice xor, any si all.

    xor(S,T) - pentru operatia logica SAU EXCLUSIV; returneaza:

  • 1, daca fie S, fie T, dar nu amandoua, sunt diferite de zero;

    0, in caz contrar.

    any(T) - unde T este un vector, returneaza:

    1, daca cel putin un element al vectorului T este diferit de zero;

    0, in caz contrar;

    all(T) - unde T este un vector, returneaza:

    1, daca toate elementele vectorului T sunt diferite de zero;

    0, in caz contrar. Exemple:

    >A=[-1 -2 -3; 1 2 3], B=ones(2,3), C=A-B, (A>B)&(A>C), (A>B)|(B S=[0 0 1], T=[1 1 0], xor(S,T)

    S =

    0 0 1

    T =

    1 1 0

    ans =

    1 1 1

    > T=[1 0 0],any(T)

    T =

    1 0 0

    ans =

    1

  • 6. Instructiuni de programare Matlab

    Instructiunea input - se foloseste pentru atribuire valori de la tastatura. Exemple:

    > d=input('Valoarea a = ')

    Valoarea a = ? (se tasteaza o constanta numerica)

    > nf=input('Nume fisier =','s')

    Nume fisier =? (se tasteaza un sir de caractere)

    Instructiunea disp - se foloseste pentru afisarea pe ecran a unui sir de caractere. Exemple:

    disp('test')

    test

    Instructiunea de testare logica if ... else ... end

    Are sintaxa:

    if expresie_logica

    set_de_instructiuni_1

    else

    set_de_instructiuni_2

    end

    Daca expresie_logica are valoarea adevarat, se executa instructiunile din

    set_de_instructiuni_1, in caz contrar, cele din set_de_instructiuni_2. Exemple: > a=2, if a

  • Pentru fiecare valoare a variabilei nume_variabila se executa instructiunile din

    set_de_instructiuni. Exemple: >clear; k=0; for x=0:0.5:1; k=k+1; X(k)=x; A(k)=sin(x); end; [X' A']

    ans =

    0 0

    0.5000 0.4794

    1.0000 0.8415

    Instructiunea repetitiva while ... end

    Are sintaxa:

    while expresie_logica

    set_de_instructiuni

    end

    Executa instructiunile din set_de_instructiuni atat timp cat expresie_logica are valoarea

    adevarat. Exemple:

    > clear; x=0; k=0; while x clear; x=0; k=0; while x1.5; break; end,end; [X' F']

    ans =

    0.5000 0.4794

    1.0000 0.8415

    1.5000 0.9975

    2.0000 0.9093

    Instructiunea keyboard - plasata intr-un program Matlab, intrerupe executia programului si

    transfera controlul utilizatorului catre tastatura. Este utila pentru depanarea programelor.

    Caracterul K indica, pe ecran, modul keyboard, orice instructiune Matlab fiind permisa,

  • inclusiv atribuirea de noi valori variabilelor curente. Iesire din modul keyboard se face tastand

    comanda return. Exemple:

    A=zeros(1,2); for k=1:2; k, A(k)=input('A(k) = '); keyboard; end; A

    k =

    1

    A(k) = -1

    K A(1)=3

    A =

    3 0

    K return

    k =

    2

    A(k) = 1

    K return

    A =

    3 1

  • 7. Functii externe utilizator

    Programul Matlab este orientat in mod deosebit spre lucrul cu functii. Exista functii

    interne, pentru calcule uzuale, si functii externe, definite in bibliotecile Matlab (toolbox-uri)

    sau definite de catre utilizator. Functiile externe utilizator se definesc dupa sintaxa:

    function [lista_variabile_de_iesire] = nume_ functie(lista_argumente_de_intrare)

    set_de_instructiuni

    unde:

    function - cuvant cheie (instructiune), se foloseste obligatoriu pentru a preciza ca urmeaza

    definirea unei functii externe utilizator;

    lista_variabile_de iesire - lista variabilelor de iesire, separate intre ele prin virgula, cu

    valori returnate de functie; in cazul unei singure variabile, nu mai este necesara incadrarea ei in

    paranteze drepte;

    nume_functie - un nume legal de functie (incepe cu o litera, contine litere si, eventual cifre,

    lungime maxima opt caractere);

    lista_argumente_de_intrare - lista argumentelor de intrare (constante sau variabile),

    separate intre ele prin virgula;

    set_de_instructiuni - set de instructiuni Matlab pentru calculul variabilelor de iesire.

    Subprogramul functie externa se salveaza obligatoriu cu numele nume_functie.m

    Instructiunea return - cauzeaza intreruperea executiei unui program de tip functie externa si

    transfera executia catre programul apelant. Se foloseste deasemenea pentru terminarea modului

    keyboard.

    Instructiunea global, cu sintaxa

    global lista_de_variabile,

    unde lista_de_variabile este o lista de variabile, separate intre ele prin spatii albe (blank-uri),

    defineste variabilele din lista ca avand valori comune in programele si subprogramele in care

    apare instructiunea.

  • Exemple: Fie functia externa fh.m :

    function q=fh(h); global m b n Jf T=[m b n Jf]; if (m

  • 8. Operatii aritmetice cu vectori si matrice

    a) Vectorizarea calculelor si prealocarea vectorilor

    In Matlab este recomandata ori de cate ori este posibila efectuarea operatiilor cu vectori

    si matrici in locul celor repetitive cu scalari, acest fapt conducand la cresterea vitezei de

    executie a calculelor de 10 - 15 ori. Deasemeni, ori de cate ori se lucreaza cu vectori si matrice

    se recomanda prealocarea acestora cu functia zeros, economisindu-se timp de calcul prin

    evitarea redimensionarii acestora la fiecare ciclu. Exemple:

    Se doreste trasarea graficului functiei y x x= + 4 35 6 , x [ , ]6 2 .

    Se adopta un pas de crestere a argumentului x egal cu 0.01. Se editeaza si se executa, comparativ, programele:

    a) fara vectorizarea calculelor % Exemplul 9.1.a k=0; t1=cputime; for x=-6:0.1:2; k=k+1; X(k)=x; Y(k)=x^4+5*x^3-6; end t2=cputime; t=t2-t1 hf=figure; plot(X,Y); grid; xlabel('x'); ylabel('y')

    Se obtine (t - timpul folosit de CPU pentru calcule, in secunde):

    t =

    0.0100

    -6 -5 -4 -3 -2 -1 0 1 2-100

    -50

    0

    50

    100

    150

    200

    250

    x

    y

  • b) cu vectorizarea calculelor: % Program pex91b.m t1=cputime; x=-6:0.1:2; y=x.^4+5.*x.^3-6; t2=cputime; t=t2-t1 hf=figure; plot(x,y); grid; xlabel('x'); ylabel('y');

    se obtine

    t =

    0

    si acelasi grafic de mai sus.

    b) Generare vectori si matrice uzuale

    Pentru generarea de vectori si matrice uzuale, se folosesc functiile:

    zeros - genereaza matricea nula, cu sintaxa variabila=zeros(n,m), n si m intregi;

    ones - genereaza matricea unitate (cu elementele 1), cu sintaxa variabila=ones(n,m);

    eye - genereaza matricea identica, cu sintaxa variabila=eye(n);

    rand - genereaza elemente aleatoare cu distributie uniforma, cu sintaxa variabila=rand(n,m)

    randn - genereaza elemente aleatoare cu distributie normata, cu sintaxa

    variabila=randn(n,m);

    linspace - genereaza un vector cu pas liniar; cu sintaxele:

    variabila=linspace(x1,x2), genereaza un vector linie cu 100 puncte egal spatiate

    intre x1 si x2;

    variabila=linspace(x1,x2,N) genereaza N puncte egal spatiate intre x1 si x2.

    logspace - genereaza un vector cu pas logaritmic;

    variabila=logspace(x1,x2), genereaza un vector linie cu 100 puncte spatiate

    logaritmic intre x1 si x2;

    variabila=linspace(x1,x2,N) genereaza N puncte spatiate logaritmic intre x1 si x2.

    meshgrid - genereaza o matrice a retelei in planul X-Y pentru grafice tridimensionale.

    [X,Y]=meshgrid(x,y) - transforma domeniul specificat de vectorii x si y in tablourile

    X si Y care pot fi folosite cu usurinta in evaluarea functiilor de doua variabile si in reprezentari

    grafice 3-D;

    [X,Y,Z]=meshgrid(x,y,z) - similar, pentru functii de trei variabile si reprezentari

    volumetrice 3-D.

  • Exemple: >clear;A=zeros(3),B=ones(2,3),C=eye(3),D=rand(2,3),E=randn(2,3),F=linspace(0,10,5),G=logspace(0,1,5)

    A =

    0 0 0

    0 0 0

    0 0 0

    B =

    1 1 1

    1 1 1

    C =

    1 0 0

    0 1 0

    0 0 1

    D =

    0.4103 0.0579 0.8132

    0.8936 0.3529 0.0099

    E =

    -0.5883 -0.1364 1.0668

    2.1832 0.1139 0.0593

    F =

    0 2.5000 5.0000 7.5000 10.0000

    G =

    1.0000 1.7783 3.1623 5.6234 10.0000

    > x=1:5, y=2:6, [X,Y]=meshgrid(x,y), f=sin(X.^Y)

    x =

    1 2 3 4 5

    y =

    2 3 4 5 6

    X =

    1 2 3 4 5

    1 2 3 4 5

    1 2 3 4 5

    1 2 3 4 5

    1 2 3 4 5

    Y =

    2 2 2 2 2

    3 3 3 3 3

    4 4 4 4 4

    5 5 5 5 5

    6 6 6 6 6

  • f =

    0.8415 -0.7568 0.4121 -0.2879 -0.1324

    0.8415 0.9894 0.9564 0.9200 -0.6160

    0.8415 -0.2879 -0.6299 -0.9992 0.1760

    0.8415 0.5514 -0.8900 -0.1585 0.7737

    0.8415 0.9200 0.1499 -0.5946 -0.9585

    c) Operatii cu vectori

    Produsul scalar a doi vectori, C A Bi 1

    n

    = = =

    a i b i( ) ( ) se calculeaza cu functia sum,

    folosind sintaxa C=sum(A.*B). Exemplu:

    >A=ones(1,3), B=[-1 2 0.5], C=sum(A.*B)

    A =

    1 1 1

    B =

    -1.0000 2.0000 0.5000

    C =

    1.5000

    Norma unui vector A A= + + = + +a i a j a k a a ax y z x y z, | |

    2 2 2 , se calculeaza cu functia

    norm, cu sintaxa norm(A). Exemplu:

    A=[-1 2 4], norm(A)

    A =

    -1 2 4

    ans =

    4.5826

    Cosinusul unghiului a doi vectori A = + +a i a j a kx y z ,

    B = + +b i b j b kx y z ,

    cos( , )| | | |

    A BA BA B

    =

    =+ +

    + + + +

    a b a b a b

    a a a b b bx x y y z z

    x y z x y z2 2 2 2 2 2

    , se calculeaza cu relatia

    cos ( .* ) / ( ( ) * ( ))AB sum A B norm A norm B=

    Unghiul dintre vectori, alfa = acos(cosAB).

  • Exemplu: >A=ones(1,3), B=[-1 2 0.5], cosAB=sum(A.*B)/(norm(A)*norm(B)), alfa=acos(cosAB)

    A =

    1 1 1

    B =

    -1.0000 2.0000 0.5000

    cosAB =

    0.3780

    alfa =

    1.1832

    Produsul vectorial

    C A B= =

    x i j ka a ab b b

    x y z

    x y z

    se calculeaza cu relatia C=A*B.

    Exemplu:

    A=ones(1,3), B=[-1 2 0.5], C=A'*B

    A =

    1 1 1

    B =

    -1.0000 2.0000 0.5000

    C =

    -1.0000 2.0000 0.5000

    -1.0000 2.0000 0.5000

    -1.0000 2.0000 0.5000

    Modulul produsului vectorial (norma sau lungimea), C A B A B= sin( , )

    se calculeaza,

    tinand cont de notatiile de mai sus, cu relatia

    norm(A)*norm(B)*sin(alfa) Exemplu:

    >A=ones(1,3), B=[-1 2 0.5], cosAB=sum(A.*B)/(norm(A)*norm(B)), alfa=acos(cosAB),

    modpvAB=norm(A)*norm(B)*sin(alfa)

    A =

    1 1 1

    B =

    -1.0000 2.0000 0.5000

    cosAB =

    0.3780

  • alfa =

    1.1832

    modpvAB =

    3.6742

    d) Operatii cu matrice

    Manipulare matrice

    diag - creaza sau extrage diagonala unei matrice;

    diag(V), unde V este un vector, creaza o matrice cu elementele vectorului V pe

    dagonala principala;

    elementele vectorului V;

    diag(V,k), unde V este un vector, creaza o matrice cu elementele vectorului V pe

    diagonala k (k>0 - deasupra diagonalei principale, kV=[1 2 3]; A=diag(V), D=diag(A), E=diag(A,2),F=flipud(A),G=tril(A)

    A =

    1 0 0

    0 2 0

    0 0 3

    D =

    1

    2

    3

    E =

    0

    F =

    0 0 3

    0 2 0

    1 0 0

  • G =

    1 0 0

    0 2 0

    0 0 3

    Operatii cu matrice

    Determinantul unei matrice patrate A se calculeaza cu functia det(A);

    Inversa unei matrice patrate A se calculeaza cu functia inv(A);

    Pseudoinversa unei matrici A(n,m) se calculeaza cu functia pinv(A);

    Rangul unei matrice A se calculeaza cu functia rank(A);

    Urma unei matrice A se calculeaza cu functia trace(A);

    Valori si vectori proprii. Daca A este o matrice patrata, atunci [V,D]=eig(A) returneaza

    matricea V cu vectorii proprii pe coloane si matricea diagonala D cu valorile proprii, astfel incat

    A*V=V*D.

    A se vedea si functiile: chol, lu, qr, qz, rref, svd. Exemple:

    >A=rand(3,3),detA=det(A), invA=inv(A), rankA=rank(A),[V,D]=eig(A)

    A =

    0.9318 0.8462 0.6721

    0.4660 0.5252 0.8381

    0.4186 0.2026 0.0196

    detA =

    0.0562

    invA =

    -2.8374 2.1270 6.3365

    6.0780 -4.6793 -8.3196

    -2.2308 2.9425 1.6899

    rankA =

    3

    V =

    0.8133 -0.3433 - 0.2276i -0.3433 + 0.2276i

    0.5171 0.7798 + 0.0239i 0.7798 - 0.0239i

    0.2666 -0.4013 + 0.2462i -0.4013 - 0.2462i

    D =

    1.6901 0 0

    0 -0.1068 + 0.1479i 0

    0 0 -0.1068 - 0.1479i

  • 9. Reprezentari grafice in Matlab

    Matlab dispune de un soft remarcabil pentru reprezentari grafice bidimensionale (2-D),

    si tridimensionale (3-D). Constituit dintr-un numar de functii cu rol grafic si de calcul, softul

    este usor de folosit si deosebit de util in analiza vizuala a datelor. Compatibilitatea cu sistemul

    Windows permite copierea cu usurinta a produselor grafice in editorul de texte.

    9.1 Reprezentari grafice bidimensionale (2-D)

    Grafic liniar. Functia plot , cu sintaxa

    plot(X,Y),

    unde X, Y sunt doi vectori de lungimi egale, reprezinta intr-un sistem de axe rectangular

    punctele de coordonate date in vectorul X, pentru abscise, si Y, pentru ordonate. In mod

    implicit, punctele sunt unite prin linii. Daca X este o matrice si Y un vector, sau X un vector si Y

    o matrice, atunci se vor considera succesiv liniile sau coloanele din matrice cu elementele

    vectorului, dupa cum vectorul este vector linie sau vector coloana, obtinand mai multe grafice

    reprezentate in acelasi sistem de coordonate. Evident, trebuie sa existe o corespondenta intre

    lungimile liniilor sau coloanelor matricei su lungimea vectorului. Daca X si Y sunt matrice de

    dimensiuni egale, atunci vor fi reprezentate graficele corespunzatoare coloanelor corespondente

    ale matricelor. Cu sintaxa plot(X), se considera pe abscisa indicii elementelor vectorului X si pe

    ordonata valorile elementelor.

    Functia plot cu sintaxa plot(X,Y,caractere_sir) actioneaza la fel ca functia plot(X,Y) dar

    permite alegerea tipului de linie, a simbolului de plotare si a culorii, dupa urmatorul cod care

    trebuie specificat, in ordine, in caractere_sir:

    Culoare linie Simbol plotare Tip linie ------------------------- ---------------------- ---------------- y galben . punct - solid m magenta o cerc : prin puncte c albastru deschis x semnul x -. linie punct r rosu + plus -- linie intrerupta g verde * steluta b albastru s patrat w alb d diamant k negru v triunghi (in jos) ^ triunghi (in sus) < triunghi (stanga) > triunghi (dreapta) p pentagon h hexagon

  • Impreuna cu functia plot pot fi folosite functiile:

    figure - cu sintaxa variabila=figure, creaza o fereastra noua pentru figura si returneaza in

    variabila indicatorul ei. Functia figure(variabila), face ca figura cu indicatorul variabila sa

    devina figura curenta, afisata pe ecran deasupra tuturor celorlalte. Functia get, cu sintaxa

    get(variabila), returneaza o lista cu proprietatile figurii si valorile lor curente. Functia set, cu

    sintaxa set(variabila), returneaza o lista cu proprietatile figurii si valorile lor posibile.

    grid - cu sintaxa grid, traseaza un careiaj de linii la axele curente;

    axis -cu sintaxa axis([xmin xmax ymin ymax]) seteaza scalarea axelor curente;

    xlabel, ylabel, title - cu sintaxele xlabel(eticheta1), respectiv ylabel(eticheta2),

    title(eticheta3), adauga etichete (texte) la axele x, y , repspectiv titlu;

    legend - cu sintaxa legend(variabila, text1,text2,...), inscrie pe figura cu indicatorul

    variabila (sau pe cea curenta daca variabila lipseste), o legenda cu textele text1, text2, ... pentru

    fiecare grafic trasat, in ordine; fereastra legendei poate fi deplasata cu mouse-ul in mod

    obisnuit; legend off - elimina legenda din figura curenta;

    text - cu sintaxa text(x,y,text) plaseaza pe figura la locatia x, y textul text, unde x, y se

    exprima in unitatile axelor curente;

    gtext - cu sintaxa gtext(text), permite plasarea cu mouse-ul pe figura curenta a textului text,

    la locatia selectata prin clic stanga mouse;

    hold - cu sintaxa hold on, retine figura curenta si proprietatile ei astfel incat comenzile

    grafice urmatoare vor fi aplicate acesteia; hold off - determina intoarcerea la modul implicit.

    Este utila in inscrierea in mod succesiv a mai multor grafice pe o figura, in acelasi sistem de

    coordonate. Exemplu:

    % program p10a.m Exemplu pentru functia plot x=0:0.05:2*pi; y=sin(x)./2; y1=sin(x); y2=cos(x); y3=sin(x).*cos(x); hf=figure; plot(x,y,x,y1,'rs:',x,y2,'gd-.',x,y3,'bv--'); grid; xlabel('x [rad]'); ylabel('y'); title('y=f(x)') legend('y=sin(x)/2','y=sin(x)','y=cos(x)','y=sin(x)*cos(x)'); text(0.2,-0.5,'Autor: Ing. I. Ion'); gtext('Coautor: Ing. G. Ion');

    Se obtine:

    0 1 2 3 4 5 6 7-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    x [rad]

    y

    y=f(x)

    Autor: Ing. I. Ion

    Coautor: Ing. G. Ion

    y=sin(x)/2 y=sin(x) y=cos(x) y=sin(x)*cos(x)

  • Functia subplot, cu sintaxa subplot(m,n,p), imparte fereastra figurii in m x n parti, fiecare

    parte cu axele ei, si selecteaza partea cu indicatorul p ca fiind cea curenta; numerotarea partilor

    se face incepand cu cea din stanga sus, pe directia liniilor.

    Exemplu:

    % program p10b.m Exemplu pentru functia plot, combinata cu subplot x=0:0.05:2*pi; y=sin(x)./2; y1=sin(x); y2=cos(x); y3=sin(x).*cos(x); xmin=min(x); xmax=max(x); ymin=min(y); ymax=max(y); ymin1=min(y1); ymax1=max(y1); ymin2=min(y2); ymax2=max(y2); ymin3=min(y3); ymax3=max(y3); hf=figure; subplot(2,2,1); plot(x,y); axis([xmin xmax ymin ymax]); xlabel('x [rad]'); grid; ylabel('y'); title('y=sin(x)./2'); subplot(2,2,2); plot(x,y1); axis([xmin xmax ymin1 ymax1]); xlabel('x [rad]'); grid; ylabel('y'); title('y=sin(x)'); subplot(2,2,3); plot(x,y2); axis([xmin xmax ymin2 ymax2]); xlabel('x [rad]'); grid; ylabel('y'); title('y=cos(x)'); subplot(2,2,4); plot(x,y3); axis([xmin xmax ymin3 ymax3]); xlabel('x [rad]'); grid; ylabel('y'); title('y=sin(x)*cos(x)');

    Se obtine:

    0 2 4 6

    -0.4

    -0.2

    0

    0.2

    0.4

    x [rad]

    y

    y=sin(x)./2

    0 2 4 6

    -0.5

    0

    0.5

    x [rad]

    y

    y=sin(x)

    0 2 4 6

    -0.5

    0

    0.5

    1

    x [rad]

    y

    y=cos(x)

    0 2 4 6

    -0.4

    -0.2

    0

    0.2

    0.4

    x [rad]

    y

    y=sin(x)*cos(x)

  • Pentru reprezentarea graficelor cu axe in scari logaritmice sau semilogaritmice, se folosesc

    functiile:

    loglog - cu sintaxa loglog(X,Y), pentru ambele axe in scari logaritmice;

    semilogx - cu sintaxa semilogx(X,Y) pentru axa x in scara logaritmica;

    semilogy - cu sintaxa semilogy(X,Y) pentru axa y in scara logaritmica; Exemplu:

    % program p10c.m pentru exemple scari logaritmice si semilogaritmice x=0:0.05:2*pi; y=sin(x).*sin(x); hf=figure; subplot(2,2,1); plot(x,y); grid; xlabel('x [rad]'); ylabel('sin(x)*sin(x)'); subplot(2,2,2); loglog(x,y); grid; xlabel('x [rad]'); ylabel('sin(x)*sin(x)'); subplot(2,2,3); semilogx(x,y); grid; xlabel('x [rad]'); ylabel('sin(x)*sin(x)'); subplot(2,2,4); semilogy(x,y); grid;xlabel('x [rad]'); ylabel('sin(x)*sin(x)');

    Se obtine:

    0 2 4 6 80

    0.2

    0.4

    0.6

    0.8

    1

    x [rad]

    sin(x

    )*si

    n(x

    )

    10-2

    100

    102

    10-5

    100

    x [rad]

    sin(x

    )*si

    n(x

    )

    10-2

    100

    102

    0

    0.2

    0.4

    0.6

    0.8

    1

    x [rad]

    sin(x

    )*si

    n(x

    )

    0 2 4 6 810

    -5

    100

    x [rad]

    sin(x

    )*si

    n(x

    )

    Pentru reprezentarea graficelor in coordonate polare se foloseste functia polar cu sinaxa

    polar(teta,ro), unde teta este vectorul unghiurilor, in radiani, si ro, vectorul razelor.

    Exemplu: % Program p10d.m x=0:0.05:2*pi; n=length(x);y=randn(n); hf=figure; polar(x,y(1,:)); grid

  • Se obtine:

    1.0223

    2.0445

    3.0668

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    Reprezentari grafice bidimensionale specializate. Programul Matlab dispune de o serie de

    functii pentru reprezentari grafice specializate, dintre care:

    area - cu sintaxa area(X,Y), creaza un grafic cu suprafete diferit colorate pentru a marca

    contributia diferitor componente la intreg;

    bar - cu sintaxa bar(X,Y) reprezinta m grupe cu cate n bare ale matricei Y(m,n);

    comet - cu sintaxa comet(X,Y) afiseaza graficul in mod animat stil cometa;

    fplot - cu sintaxa fplot(nume_functie,lims) traseaza graficul functiei definite in functia cu

    numele nume_functie, pe domeniul lims=[xmin xmax], xmin si xmax date;

    A se vedea si functiile pie, stairs, pareto, hist. Exemplu:

    % Program p10e.m x=0:5; y=[0.1 0.5 0.3 0.2 0.5 0.9; 0.8 0.7 0.1 0.3 0.2 0.4; 0.3 0.2 0.1 0.8 0.9 0.5]'; hf=figure; area(x,y); grid; hf=figure; bar(x,y); grid; hf=figure; fplot('sin',[0 5]); grid; hold on; x=0:0.05:2*pi; y=sin(x); comet(x,y); hold off;

    Se obtin graficele:

    0 1 2 3 4 50

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    1.4

    1.6

    1.8

    0 1 2 3 4 5

    0

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    0 1 2 3 4 5

    -1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

  • 10. Interpolarea si aproximarea functiilor

    Fie un set discret de date [x, y], in care x si y sunt vectori de aceeasi lungime si y = f(x),

    unde expresia functiei f este necunoscuta. Aproximarea functiei f prin interpolare presupune

    determinarea unei functii f* astfel incat pentru orice x [min( ), max( )]x x , sa avem

    f x f x( ) ( )* .

    10.1 Interpolarea functiilor de o singura variabila

    a) Interpolarea spline cubica

    Fie [a, b] un interval al dreptei reale si punctele { , ,..., }x x xn1 2 , cu

    a x x x bn= < < =1 2 ... . Se numeste functie spline de gradul n , o functie s a b:[ , ] R cu

    proprietatile:

    (i) pe fiecare interval [ , ]x xi i+1 , s coincide cu un polinom de grad cel mult n;

    (ii) s C a bn 1[ , ].

    Punctele x i ni , , , ...,= 1 2 se nume


Recommended