ALTE DOCUMENTE
|
||||||||||
MATLAB - prezentare, instalare, lansare în executie, ferestre
MATLAB este un pachet de programe dedicat calculului numeric si reprezentarii grafice în domeniul ingineriei.
Elementul de baza cu care opereaza MATLAB este matricea.
MATLAB este un interpretor cu un limbaj asemanator limbajului algoritmic. Poate fi dezvoltat cu usurinta prin asa numitele toolbox-uri - colectii extinse de functii (fisiere M).
Versiunea 6.1 a mediulu 858g63i i MATLAB se livreaza pe suport optic - 2 CD-uri - si se instaleaza printr-o procedura automata, implicit în partitia activa, directorul Matlab6p1, cu un subdirector de lucru Work.
Lansarea în executie se poate face cu ajutorul pictogramei de pe Desktop, prin butonul Start → Programs → Matlab6.1 → Matlab6.1 sau din calea \Matlab6p1\bin\win32 - fisierul matlab.exe.
Fereastra de comenzi deschisa automat la pornirea mediului contine urmatoarele elemente:
bara de nume;
bara de meniuri cu meniurile: File, Edit, View, Web, Window, Help;
bara de unelte si adrese;
fereastra propriu-zisa cu prompt-ul MATLAB " >>"
Meniul File, grupul New, contine comenzi pentru deschiderea ferestrelor:
M-file
Figure
Model
GUI
Meniul View contine comenzi-comutatori pentru validarea prezentei ferestrelor:
Command Window
Command History
Current Directory
Workspace
LaunchPad
Help
Functii MATLAB generale
Functii de iesire din mediu
exit (quit) - parasirea sesiunii de lucru.
Functii de control general
help - afiseaza lista functiilor MATLAB;
help functie - afiseaza informatii despre functia precizata;
what - listeaza fisierele .m, .mat, .mex din directorul curent;
type fisier - listeaza continutul fisierului mentionat ca argument;
which - întoarce calea în care se afla fisierul mentionat ca argument;
path - returneaza caile cu care lucreaza MATLAB;
who - listeaza numele variabilelor curente;
whos - listeaza numele variabilelor curente, dimensiunile si tipurile lor.
Functii de control directoare, fisiere si sistem de operare
cd - returneaza sau schimba directorul curent;
dir - listeaza continutul directorului curent;
delete - sterge fisierul specificat ca argument;
- executa comanda DOS precizata ca argument.
Functii asociate ferestrei de comenzi
clc - sterge continutul ferestrei de comenzi.
Functii de control al variabilelor din memorie
disp(arg) - afiseaza o matrice sau un text specificate ca argument;
ex: >> for i=1:4
y=[i,5*i^2,2^i];
disp(y);
end
1 5 2
2 20 4
3 45 8
4 80 16
>> disp('Constructii')
Constructii
>>
clear - sterge toate variabilele si functiile declarate în sesiunea în curs;
clear a b - sterge toate variabilele a si b;
size(arg) - returneaza dimensiunea unei matrice specificata ca argument;
ex: >> a=[1 2;3 4;5 6];
>> b=size(a)
b=
3 2
length(arg) - returneaza lungimea maxima a matricei specificata ca argument sau lungimea vectorului specificat;
ex: >> x=length(a);
x=
3
>> y= length(b)
y=
2
Variabile speciale si constante MATLAB
ans - variabila creata automat când lipseste membrul stâng al instructiunii de atribuire;
pi - variabila permanenta continând valoarea 3.1416;
Importul si exportul fisierelor de date
load - încarca variabilele dintr-un fisier de date specificat;
save - salveaza variabilele curente în fisierul specificat;
sintaxa: load/save fisier[.ext][-format];
ex: >> clear;
>> a=[1 2;3 4];
>> b=[5 6;7 8];
>> save mat_ab.dat -ascii;
>> load mat_ab.dat;
>> ab=mat_ab
ab =
1 2
3 4
5 6
7 8
Introducere în programarea MATLAB
Matrice, vectori, scalari
Matricea este singurul obiect cu care lucreaza MATLAB. Vectorul este matricea cu o singura dimensiune (nx1 sau 1xn). Scalarul este matricea cu o linie si o coloana (1x1).
Exemple (notatii matematica):
(2x2) (3x4) (3x1)
(1x4) (1x1)
Notatia MATLAB pentru o matrice este de forma a(i,j), iar referirea la un element al matricei se face prin notatia x=a(2,2), ceea ce înseamna x=4.
Definirea matricelor simple
Se poate face prin:
a) Introducerea explicita a listei elementelor într-unul din formatele:
a=[1 2;3 4] sau a=[1,2;3,4] sau a=[1 2Enter3,4];
separatorul dintre coloane (dintre elementele unei linii) este spatiul sau (,)
separatorul dintre linii (dintre elementele unei coloane) este (;) sau Enter;
ex: >> x=[1,2,3,4]
x=
1 2 3 4
>> y=[1;2;3;4]
y=
1
2
3
4
b) Generarea prin instructiuni si functii
ex: >> clear;
>> k=3;b(k)=5
b=
0 0 5
>> t=1:2:7
t =
1 3 5 7
>> r=randn(2,3)*17
r =
-7.3536 2.1306 -19.4900
-28.3149 4.8905 20.2456
c) Încarcarea dintr-un fisier de date (vezi exemplul de la §4).
Elementele matricelor
Pot fi numere reale sau complexe si orice expresie MATLAB.
ex: >> clear;
>> a=[-1.3 sqrt(3) (1*2*3)/5
a =
-1.3000 1.7321 1.2000
>> b=a(2)
b =
1.7321
Matricea sau vectorul poate fi extins prin introducerea unui element si completarea cu zero a elementelor nedefinite.
ex: >> a(5)=abs(a(1))
a =
-1.3000 1.7321 1.2000 0 1.3000
>> c=[1 2;3 4];
>> c(2,4)=6
c =
1 2 0 0
3 4 0 6
O matrice mare poate fi construita din matrice mici folosite ca elemente.
ex: >> clear;
>> a1=[1 2;3 4]; a2=[5 6;7 8];
>> b=[a1;a2]
b =
1 2
3 4
5 6
7 8
>> c=[a1 a2]
c =
1 2 5 6
3 4 7 8
O matrice poate fi extrasa dintr-o matrice mai mare folosind semnul (:) într-o expresie de forma:
>> d=c(:,2:4)
d =
2 5 6
4 7 8
adica matricea d se formeaza din c extragând toate liniile si coloanele 2 la 4.
Declaratii si variabile - elemente de sintaxa
Instructiunea de atribuire joaca si rolul de declaratie. Are doua forme:
a) variabila=expresie sau
b) expresie.
În cazul al doilea valoarea expresiei este atribuita variabilei speciale ans.
ex: >> 3/4
ans =
0.7500
O expresie se compune din operanzi, operatori si functii. În urma evaluarii expresiei se obtine o matrice, care se atribuie unei variabile.
Orice instructiune se termina cu:
a) Enter sau
b) ;Enter
În primul caz instructiunea se executa cu tiparirea rezultatului, iar în al doilea fara tiparire.
ex: >> a=[1 2;3 4] Enter cazul a)
a =
1 2
3 4
>> b=[5 6;7 8]; Enter cazul b)
>>
Tastarea numelui unei variabile urmat de Enter afiseaza valoarea acesteia.
Daca expresia are o lungime foarte mare se foloseste combinatia: spatiu ... Enter pentru continuare pe linia urmatoare.
Spatiile dintre operanzi si operatori sunt optionale.
Numele de variabila sau functie este format din litere, cifre si underline; primul caracter este litera, iar lungimea maxima este de 19 caractere.
MATLAB este case sensitive în mod implicit si poate comuta în modul nesenzitiv cu comanda:
>> casesen off cu revenire la:
>> casesen on
Numere si expresii aritmetice
Reprezentarea numerelor se poate face în virgula fixa:
-123 = -123 1.02437 = 1.0244 -.0345 = -0.0345
sau în virgula mobila:
1.23456e+2 = 123.4560 234.567e-3 = 0.2346
Ordinul de marime este 10308 pentru valori supraunitare si 10-308 pentru valori subunitare.
Operatorii aritmetici utilizati sunt urmatorii:
+ adunare, - scadere, * înmultire, / împartire la dreapta si \ împartire la stânga.
Tipuri de programe MATLAB
a) programe introduse linie cu linie în modul linie de comanda;
b) programe memorate în fisiere script (fisiere salvate cu extensia .m);
c) programe memorate în fisiere function (fisiere script care contin în prima linie cuvântul cheie function ).
Prin apelarea numelui fisierului script continutul acestuia este încarcat si lansat în executie. Script-urile propriu-zise nu pot fi integrate în programe ca subrutine.
Fisierele function au prima linie de forma:
function [parametri_iesire]=nume_functie(parametri_intrare)
în care:
function - cuvânt cheie care declara fisierul ca atare;
parametri_iesire - lista parametrilor de iesire; daca lipsesc, parantezele drepte si semnul = nu mai au sens;
nume_functie - numele cu care a fost salvat fisierul;
parametri_intrare - lista parametrilor de intrare; daca lipsesc, parantezele rotunde nu mai au sens.
Fisierele functie pot fi adaugate ca functii noi în structura MATLAB.
Exemplu de creare si utilizare a unui fisier function :
Se deschide o ferastra de editare: File, New, M-file.
Se editeaza secventa de program:
function m=medie(x)
n=length(x);
m=sum(x)/n;
y=['Media numerelor este: ',num2str(m)];
disp(y)
Se salveaza secventa într-un fisier cu numele medie.m: File, Save as... .
În fereastra de comenzi poate fi introdusa secventa:
>> a=[12,14,16,18,20];
>> medie(a)
Media numerelor este:16
Daca este omisa prima linie a fisierului medie.m, acesta devine script si nu mai poate fi folosit ca subprogram.
Functia num2str converteste continutul variabilei m în sir de caractere.
Variabila y este un vector cu elementele: y(1)=M, y(2)=e, y(3)=d, ... , y(22)=1, y(23)=6.
Instructiuni de control logic
Instructiunea conditionala if
Forma 1: Forma 2:
if expresie_logica if expresie_logica
secventa_instructiuni; secventa_instructiuni_1;
end else
secventa_instructiuni_2;
end;
Expresia logica contine operanzi si operatori aritmetici, relationali si logici.
Operatorii relationali sunt urmatorii:
< mai mic, <= mai mic sau egal, > mai mare, >= mai mare sau egal, = = egal, ~= diferit.
Operatorii relationali compara doua matrice cu dimensiuni egale, element cu element si returneaza o matrice de aceeasi dimensiune cu matricele comparate, având elementele 1 când relatia este adevarata si 0 când relatia este falsa.
În cazul numerelor complexe primii patru operatori ignora partea imaginara.
Forma generala de utilizare a operatorilor relationali este:
rezultat = expresie_1 operator_relational expresie_2
ex: >> a=[1 -i 0;2-i 0 1+i];
>> b=[1 -i i;2-i 2 1-5*i];
>> c=a>=b
c =
1 1 1
1 0 1
>> d=a= =b
d =
1 1 0
1 0 0
Operatorii logici sunt urmatorii:
~ nu prioritate 1
& si prioritate 2
sau prioritate 3
Operatorii logici & si | compara scalari sau doua matrice de dimensiuni egale (element cu element) si returneaza 1 pentru orice valoare diferita de zero.
În MATLAB orice valoare diferita de zero este considerata adevarata logic, adica 1
Operatorii logici au prioritate mai mica decât operatorii relationali si aritmetici.
ex: >> a=1&0+3
a =
1
>> b=3>4&1
b =
0
Rezolvarea ecuatiei de gradul II se poate face prin apelarea unei functii salvata în fisierul ecgr2.m având urmatorul continut:
function[x,x1,x2]=ecgr2(a,b,c)
if a= =0
x=-c/b
else
d=b^2-4*a*c
if d<0
disp('Ec.nu are rad.R')
else
x1=(-b-sqrt(d))/(2*a)
x2=(-b+sqrt(d))/(2*a)
end
end
Secventa de apelare este:
>> a=1;b=-3;c=2;
>> ecgr2(a,b,c)
d =
1
x1 =
1
x2 =
2
Instructiunea repetitiva for
Forma:
for index=initial:pas:final
secventa_instructiuni
end
Pasul implicit este 1. Secventa de instructiuni este executata de N ori:
Exemplu:
Fie script-ul niv_trig.m cu urmatorul continut:
% Nivelment trigonometric
clear;
ui = [312.25,288.45,304.63,314.75,306.15,104.55,86.32,114.54,123.56];
di = [123.52,98.45,101.32,88.95,114.24,78.50,141.25,94.25,106.25];
cc = 640;
dc = 0;
for i=1:9
ui(i) = (abs(ui(i)-200)-100)*pi/200;
do(i) = di(i)*cos(ui(i))^2;
dn(i) = do(i)*tan(ui(i));
dc = dc+do(i);
cc = cc+dn(i);
end;
dist=['Distanta cumulata:',num2str(dc)];
cota=['Cota cumulata :',num2str(cc)];
disp(dist);
disp(cota);
Script-ul poate fi apelat de pe linia de comanda:
>> niv_trig
Distanta cumulata:907.1657
Cota cumulata :651.1255
>>
Instructiunea repetitiva while
Forma:
while expresie
secventa_instructiuni
end
Secventa de instructiuni se executa cât timp expresie are toate elementele nenule. Expresia are forma:
expresie_1 operator_relational expresie_2
Exemplu:
Fie script-ul dim_int.m cu urmatorul continut:
% Dimensionare la intindere axiala;
clear;
n=10000;r=1200;p=.5;
a=n/r;
k=1;b(k)=p;
while b(k)<=a
h(k)=a/b(k);
k=k+1;
b(k)=b(k-1)+p;
end;
for i=1:k-1
bh=['b=',num2str(b(i)),' h=',num2str(h(i))];
disp(bh);
end;
Script-ul poate fi apelat de pe linia de comanda:
>> dim_int
b=0.5 h=16.6667
b=1 h=8.3333
b=1.5 h=5.5556
b=2 h=4.1667
b=2.5 h=3.3333
b=3 h=2.7778
b=3.5 h=2.381
b=4 h=2.0833
b=4.5 h=1.8519
b=5 h=1.6667
b=5.5 h=1.5152
b=6 h=1.3889
b=6.5 h=1.2821
b=7 h=1.1905
b=7.5 h=1.1111
b=8 h=1.0417
>>
Lucrul cu siruri de caractere
sirul de caractere este o constanta reprezentata pe un sir de octeti, fiecare continând codul ASCII al unui caracter. Pe linia de program sirul este constituit din unul sau mai multe caractere delimitate de apostrofuri.
Functii generale
abs(arg) - converteste sirul de caractere specificat ca argument în valori numerice ale codului ASCII
ex: >> y=abs('ABCDabcd0123')
y =
65 66 67 68 97 98 99 100 48 49 50 51
>>
setstr(arg) - converteste valori numerice ale codului ASCII în sir de caractere
ex: >> cif=[48:57];
>> cifre=setstr(cif)
cifre =
0123456789
>> lima=[65:90];
>> literemari=setstr(lima)
literemari =
ABCDEFGHIJKLMNOPQRSTUVWXYZ
>> limi=[97:122];
>> literemici=setstr(limi)
literemici =
abcdefghijklmnopqrstuvwxyz
>>
Conversia sir-numar si numar-sir
num2str(arg) - converteste un numar reprezentat intern într-un sir de caractere
ex: >> npi=['Valoarea lui Pi este:',num2str(pi)]
npi =
Valoarea lui Pi este:3.1416
>>
str2 num(arg) - converteste un sir de caractere în numar
ex: >> n123='123';
>> x=5+str2num(n123)
x =
128
>>
Generarea vectorilor si matricelor
Functii generale
zeros(arg) - genereaza matricea nula
ex: >> a=zeros(2,3)
a =
0 0 0
0 0 0
>>
ones(arg) - genereaza matricea unitate
ex: >> b=ones(2,3)
b =
1 1 1
1 1 1
>>
rand(arg) - genereaza numere aleatoare din intervalul (0;1) cu distributie uniforma
ex: >> x=rand(1,5)
x =
0.2311 0.6068 0.4860 0.8913 0.7621
>> y=rand(2,3)
y =
0.4565 0.8214 0.6154
0.0185 0.4447 0.7919
>>
randn(arg) - genereaza numere aleatoare cu distributie normala
ex: >> z=randn(1,5)
z =
-0.4326 -1.6656 0.1253 0.2877 -1.1465
>>
linspace(arg) - genereaza vector cu pas liniar, argumentul fiind de forma:
amin:amax:N
unde
amin = elementul minim
amax = elementul maxim
numarul
ex: >> x=linspace(1,7,4)
x =
1 3 5 7
>> x=linspace(1,11,4)
x =
1.0000 4.3333 7.6667 11.0000
>>
Mentinerea pasului constant se poate obtine fara functia linspace utilizând forma:
amin:pas:amax
ex: >> y=1:2:7
y =
1 3 5 7
>> z=1:2:11
z =
1 3 5 7 9 11
>>
|