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