An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
-
Upload
george-datcu -
Category
Documents
-
view
216 -
download
0
Transcript of An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 1/13
CUPRINS
1 Introducere in Matlab ........................................................................................................................... 1
1.1
Getting started
..............................................................................................................................
1
1.1.1 Spatiul de lucru ‐ Workspace ............................................................................................... 3
1.1.2 Structura programelor MATLAB............................................................................................ 5
1.1.3 Operatorul “:” ....................................................................................................................... 6
1.1.4 Operatori aritmetici .............................................................................................................. 6
1.1.5 Introducerea explicita a matricilor ........................................................................................ 7
1.1.6 Generarea matricilor ............................................................................................................. 9
1.1.7
Concatenarea
........................................................................................................................
9
1.1.8 Stergerea liniilor si coloanelor .............................................................................................. 9
1.2 Instructiuni de baza ..................................................................................................................... 10
1.2.1 Instructiunea conditionala if ............................................................................................... 10
1.2.2 Instructiunea repetitiva for ................................................................................................. 11
1.2.3 Instructiunea repetitiva while ............................................................................................. 12
1.2.4 Vectorizarea calculului ........................................................................................................ 12
1 Introducere in Matlab
1.1 Getting started
Matlab este un pachet de programe de inalta performanta dedicate calculului numeric si
reprezentarilor grafice in stiinta si inginerie. Integreaza analiza numerica, calcul matriceal, procesarea
semnalului si reprezentari grafice intr‐un mediu prietenos unde probleme si solutiile acestora sunt
exprimate cu ajutorul unor notatii matematice familiare.
Matlab este un sistem interactiv al carui element de date basic este matricea. Acest lucru permite
formularea unor solutii la probleme tehnice de calcul in special la acele care se pot reprezenta prin
calcul matriceal intr‐un timp f scurt. Numele provine de la Matrix Laboratory.
Avantajul principal al Matlabului este usurinta cu care poate fi extins. Orice utilizator isi poate adauga
propriile programe scrise in Matlab la fisierele originale, dezvoltand aplicatii specific domeniului sau.
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 2/13
Matlabul include asa numitele TOOLBOX uri, colectii extinse de functii (fisiere .m) specific unor
domenii variate: statistica, procesarea semnalului, procesarea imaginii, retele neural, etc. Structural
Matlabul este realizat sub forma unui nucleu de baza, cu interpretor propriu, in jurul caruia sunt
construite toolboxurile.
Desktopul Matalb
este
fereastra
principala
a aplicatiei.
Asa
cum
este
prezentat
in
Fig.
1,
Desktopul
contine 5 subferestre:
• Command Window (Fereastra de lucru in care ruleaza functiile.) • Workspace Browser (Spatiul de lucru unde sunt salvate variabilele cu valorile lor) • Current Directory Window (Directorul curent) • Command History Window (Istoricul de comenzi)
plus, una sau mai multe Figure Window care sunt afisate doar cand utilizatorul comanda afisarea lor.
Fig. 1 Desktopul Matlab si principalele componente
In cele ce urmeaza va fi prezentata o scurta introducere a comenzilor esentiale ale Matlab‐ului.
Comenzile sunt afisate cu urmatoarul font: Cour i er New
Linia de prompt pentru inputul utizatorului este indicata de sageata dubla:
>>
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 3/13
Tastati hel p pi in linia de prompt si veti obtine:
>> hel p pi
PI 3. 1415926535897. . . .
PI = 4*at an( 1) = i mag( l og( - 1) ) = 3. 1415926535897. . . .
Un alt exemplu:
>> hel p exp
EXP Exponent i al .
EXP( X) i s t he exponent i al of t he el ement s of X, e to the X.
For compl ex Z=X+i *Y, EXP( Z) = EXP( X) *( COS( Y)+i *SI N( Y) ) .
In
cazul
in
care
nu
este
cunoscuta
comanda
care
executa
o
anumita
operatie
tastati
hel p:
>>hel p
Iar Matlab va returna o lisa de comenzi disponibile. Daca nu stiti exact comanda pentru functia pe care o
cautati o alta comanda utila este l ookf or ce functioneaza ca un index. Exemplu: daca nu stiati
comanda pentru functia exp ati fi putut tasta:
>> l ookf or exponent i al
EXP Exponent i al .
EXPI NT Exponent i al i nt egr al f unct i on.
EXPM Mat r i x exponent i al .
1.1.1 Spatiul de lucru - Workspace
Introduceti in spatiul de lucru urmatoarele varibile:
x=[ 2 4 6 8 10 12]
y=x'
Variabilele aflate in mod curent in spatial de lucru se pot vizualiza tastand :
>> who
Your var i abl es ar e:
x y
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 4/13
Mai multe detalii despre dimensiunea matricilor se pot obtine tiparind
>> whosName Si ze Byt es Cl ass
x 1x6 48 doubl e ar r ay
y 6x1 48 doubl e ar r ay
Se poate afla dimensiunea vectorului/matricii tastand:
>>[ m, n] =si ze( x)
m=1
n=6
M este numarul de linii iar n numarul de coloane. Daca nu utilizam argumente pentru numarul liniilor si
al coloanelor
este
suficent
sa
tastam:
>>si ze( x)
1 6
Deoarece in cazul de fata x este vector se poate utilize in acelasi mod comanda length:
>>l ength( x)
6
De retinut!
Matlab
este
case
sensitive
in
cazul
variabilelor:
O
matrice
X
poate
coexista
cu
o
alta
matrice
x. Nu acelasi lucru se intampla in cazul functiilor “built‐in” . Apeland functia LENGTH obtinem acelasi
rezultat ce cel de mai sus.
De multe ori este de dorit, pentru a evita confuziile si incarcarea memoriei stergerea tuturor variabilelor
din spatial de lucru:
>>cl ear
In cazul mult mai frecvent in care eliminarea unei singure variabile este necesara:
>>cl ear x
Inainte de inchide sesiunea de lucru variabilele se pot salva pentru a nu fi nevoiti sa le reintroducem sau
recalculam in urmatoara sesiune. Pentru a salva toate variabilele:
>>save f i l e_name
Sau doar anumite variabile
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 5/13
>> save f i l e_name x z
Pentru a reincarca variabilele salvate:
>> l oad f i l e_name
1.1.2 Structura programelor
MATLAB
Matlabul lucreaza fie in modul linie de comanda, situatie in care fiecare linie este prelucrata imediat si
rezultatele sunt afisate, fie cu programe continute in fisiere.
Fisierele ce contin instructiuni se numes Mfiles( deoarece au extensia .m) si sunt programe Matlab. Un
fisier M consta dintr‐o succesiune de instructiuni, cu posibiliatatea apelarii altor fisiere M precum si a
apelarii recursive.
Un program Matlab poate fi scris sub forma fisierelor “script” sau a fisierele “function”. Un fisier “script”
este un
fisier
extern
care
contine
o secventa
de
comenzi.
Prin
apelarea
numelui
fisierului
se
executa
secventa de comenzi continuta de acesta. Dupa executia complete a unui fisier script variabilele cu care
aceasta a operat ramans salvate in zona de memorie a aplicatiei. Aceste fisiere nu permit integrarea in
programe mai mari realizate pe principiul modularizarii iar scopul lor este folosirea pentru rezolvarea
unor problem care cer comenzi successive atat de lungi incat ar putea deveni greoaie pentru modul de
lucru in linie de comanda.
Daca prima linie a fisierului contine cuvantul “function” fisierul respectiv e declarat tip functie. Diferenta
fata de un fisier de tip script este ca poate lucre cu argumente. Variabilele definite si manipulate in
interiorul fisierului functie sunt localizate la nivelul acesteia. Prin urmare, la terminarea executiei unei
functii in
memoria
calculatorului
nu
raman
decat
variabilele
de
iesire
ale
acesteia.
Forma
generala
a
primei linii a unui fisier de tip functie este:
function [param_iesire]=nume_functie(param_intrare)
Exemplu: f unct i on[ m] =medi e(x) ;l =l engt h( x) ;m=sum( x) / l ;y=[ ' Medi a numerel or est e: ' , num2st r ( m) ] ;di sp( y)
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 6/13
1.1.3 Operatorul “:”
Este unul dintre cei mai importanti operatori din Matlab. Poate aparea in diverse forme . Expresia
“1: 10” este un vector linie care contine elemente intregi de la 1 la 10.
1 2 3 4 5 6 7 8 9 10
Se poate specifica o incrementare, expresia “100: - 7: 50” este :
100 93 86 79 72 65 58 51
iar “0: pi / 4: pi ” este 0 0. 7854 1. 5708 2. 3562 3. 1416
Expresiile de tip indice ce implica operatorul “:” se refera la parti ale unei matrici:
A(1:k,j) reprezinta primele k elemente ale coloanei j din matricea A. Astfel sum(A(1:4,4)) calculeaza suma
primelor
4 elemente
din
coloana
4.
Exista
insa
si
o cale
mai
usoara.
Operatorul
insusi
se
refera
la
toate elementele dintr‐o linie sau o coloana ale unei matrici iar cuvantul “end” se refera la ultima linie
sau coloana. Astfel sum (A(:,end)) calculeaza suma elementelor din ultima coloana din A.
1.1.4 Operatori aritmetici
Expresiile folosesc operatori aritmetici cunoscuti si regula prioritatii:
+ Adunarea
‐Scadere
*
Multiplicare
/ Impartire la dreapta
\ Impartire la stanga
^ Ridicarea la putere
[] Concatenarea matricilor
‘ Transpusa
(r,c) Indexarea matricilor
Exista doua simboluri pentru impartire utilizate in mod special pentru operatiile cu matrici. Pentru
expresiile scalare 1/4 sau 4\1 se obtine acelasi rezultat. Intr‐o expresie parantele sunt folosite pentru a
preciza ordinea
executarii
operatiilor.
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 7/13
Exercitii:
Scrieti cel mai scurt cod Matlab pentru fiecare problema evitand detalii ce nu sunt necesare si
afisati rezultatul obtinut:
1. Fie x=20, y=25. Calculati cos(x), sqrt(y), tan(x+y) si suma tuturor rezultatelor de mai sus. Asa cum a fost mentionat anterior Matlabul este un pachet de programe ce lucreaza numai cu un singur
tip de obiecte – matrici numerice rectangular, ce contin elemente reale sau complexe. In acest sens
scalarii sunt asimiliati matricilor de tip (1x1) iar vectorii sunt asimilati matricilor cu o linie (1 x n) sau o
coloana (n x 1). Definirea matricilor se face prin una din urmatoarele metode:
‐ Introducere explicita a listei de elemente;
‐ Generarea prin instructiuni si functii;
‐ Creerea de fisiere .m;
‐ Incarcarea din fisiere de date externe.
1.1.5 Introducerea explicita a matricilor
Metoda cea mai simpla de definire a matricilor mici consta in utilizarea unei liste explicite. La
introducerea unei asemenea liste trebuie respectate cateva reguli de baza:
‐ Elementele unei linii trebuie separate prin spatii sau virgule;
‐ Liniile se separa prin semnul punct si virgule “;”;
‐ Elementele matricii sunt cuprinse intre paranteze drepte [].
Astfel pentru
a introduce
matricea
A
se
tasteaza
simplu
in
Command
Windows:
>> A=[ 16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]A =
16 3 2 135 10 11 89 6 7 124 15 14 1
Odata ce a fost introdusa este memorata automat in spatial de lucru, referirea la ea facandu‐se
cat se poate de simplu: A. Se poate utilize mai departe in calcul sau salva pentru o folosire ulterioara.
Introducand:
>> x=[ 1 3 5 7 9 11] sau>> x=[ 1, 3, 5, 7, 9, 11]Obtinem un vector linie:
x= 1 3 5 7 9 11
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 8/13
Exista un mod rapid de a introduce matrici sau vectori de tip liniar. De exemplu urmatoarea comanda
creeaza vectorul de mai sus:
>> x=1: 2: 11
Transpunerea unui vector linie coduce la un vector coloana (comanda pentru transpunere este ’).
>> y=x’y =
13579
11Sa presupunem ca se doreste creeare unui vecto z care contine elemente de la 5 la 30 din 5 in 5.
>>z=5: 5: 30
Z=5 10 15 20 25 30Daca nu dorim sa afisam rezultatul linia de comanda se va termina cu “;”.
>>z=5: 5: 30;
Pentru a identifica valoarea celui de-al treilea elemente din z tastam:
>>z( 3)ans=15Pentru a accesa blocuri de elemente, ca de exemplul primele trei elemente din vectorul y folosim
operatorul :
>>y( 2: 4)ans =
357
Pentru a selecta un singur element al matricii folosim:
>>A(2, 3)ans =
11Operatorul ":" este folosit in indexarea matricilor pentru a selecta un bloc bidimensional de elemente
din matrice.
>>C2=A( : , 2) % col oana 2A =
258
sau
>> R3=A( 3, : ) % r andul 3
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 9/13
R3 =7 8 9
1.1.6 Generarea matricilor
Matlab ofera
functii
ce
genereaza
matricile
basic
date
mai
jos:
• matricea zero (o matrice cu toate elementele zero) ce poate fi generata cu functia zer os
apelabila cu una din sintaxele O=zer os( n) ; O=zer os( m, n) ; O=zer os( si ze( A) ) ;
• matricea identitate ( o matrice cu toate elementele de pe diagonala principala egale cu 1, iar
toate celelalte egale cu zero) ce se poate genera cu functia eye, apelabila cu sintaxele descrise
mai sus;
• matricea unitate (toate elementele egale cu 1) ce poate fi generata cu functia ones
• matricea aleatoare (are elemente uniform distribuite), generata cu functia r and.
1.1.7 Concatenarea
Concatenarea este procesul alipirii matricilor mici pentru a creea matrici mai mari. Perechea de
paranteze patrate [] este operatorul de concatenare.
Exercitii:
Plecand de exemplu de la matricea
A=1 6 3 2 1 35 1 0 1 1 89 6 7 124 1 5 1 4 1 formati matricea B=[A A+2;A+40 A+16];Rezultatul va fi o matrice 8 x 8 obtinuta
prin reuniunea celor 4 matrici.
1.1.8 Stergerea liniilor si coloanelor
Se pot sterge linii si coloane dintr‐o matrice folosind simplu o pereche de paranteze patrate.
Considerand
X=A;
pentru
a
sterge
a
doua
coloana
din
X
folosim
X( : , 2) =[ ] ; Incercarea
de
a
sterge
un singur element cu expresia X( 1, 2) =[ ] ; va rezulta intr‐o eroare insa folosind un singur subscript
se poate sterge un element sau o secventa de elemente si remodela elementele ramase intr‐un vector.
Astfel
>> X( 2: 2: 10) =[ ] rezulta in:
X=16 9 2 7 13 12 1
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 10/13
Exemplu:
Fie matricea A=
1 3 95 7 2. Sa se genereze o matrice unitate de aceeasi dimensiune cu matricea A.
>> A=[ 1 3 9; 5 7 2] ;U=ones( si ze( A) ) ;U=1 1 11 1 1Calculati suma elementelor de pe prima linie a matricei A+U.
Matricile si scalarii se pot combina in cateva moduri diferite. De exemplu un scalar se poate scadea
dintr‐o matrice, facandu‐se diferenta intre fiecare element al matricii si scalar. De asemenea Matlab
poate atribui o valoare anume tuturor sau anumitor indici dintr‐o matrice.
>> A( 1, 2: 3) =0
Adunarea si scaderea matricilor se defineste la fel ca pentru vectori, element cu element, necesitand ca
ambele matrici sa aiba aceeasi dimensiune sau una dintre ele sa fie scalar.
Un vector linie si un vector coloana se pot multiplica in orice ordine. Rezultatul este fie un scalar , fie o
matrice.
>>u=[ 3; 1; 4] ;>>v=[ 2 0 - 1]>> x=v*u
x=2>>X=u*v>> X= 6 0 - 3
2 0 - 18 0 - 4
1.2 Instructiuni de baza
1.2.1 Instructiunea conditionala if
Poate fi
implementata
ca
instructiune
simpla
sau
poate
include
clauzele
el se
si
el sei f . Forma
generala a unei instructiuni if simple este
i f expresie logica grup de instructiuni
endDaca expresia logica este adevarata se executa grupul de instructiuni, daca expresie logica este false se
trece la prima linie dupa end.
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 11/13
Clauza else este utilizata pentru a executa un set de instructiuni daca expresia logica este adevarat si alt
set daca este falsa.
i f expresie logica grup de instructiuni 1
el segrup de instructiuni 2
endPentru a evidentia grupul de instructiuni care se executa se pocedeaza la identarea acestora.
Exemplu:
Pentru urmatoarea functie
2 8, 23 , 2descrierea Matlab este
i f x<=2f =2*x+8
el sef =3*x 2̂
end
Daca functia de calculat are mai multe nivele de instructiuni if else iar determinarea expresiei logice
adevarate devine
dificila
se
utilizeaza
clauze
el sei f .
1.2.2 Instructiunea repetitiva for
Instructiuna for permite repetarea unui grup de instructiuni din corpul buclei, de un anumit numar de
ori si are urmatoarea structura generala:
f or index=expresie
grup de instructiuni
endunde index este numele contorului, expresie este o matrice un vector sau un scalar iar grup de
instructiuni este orice expresie Matlab. In aplicatie expresie este de cele mai multe ori de forma:
k=i ni t i al : pas: f i nal , initial fiind prima valoare a lui k, pasul daca este omis fiind considerat 1 iar
final cea mai mare valoare pe care o poate lua k.
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 12/13
Exemplu:
Sa se calculeze functia
2 3, 10,22 1, 2,20
pentru toate valorile intregi pe domeniul de definitie si sa se reprezinte grafic.
Secventa Matlab corespunzatoare este:
x=- 10: 20f or k=1: l enght ( x)
i f x( k) <=2f ( k) =2*x( k) +1
el sef ( k) =2*x( k) 2̂- 1
endendpl ot ( x, f )
1.2.3 Instructiunea repetitiva while
Este o structura care se utilizeaza pentru repetarea unui set de instructiuni atata timp cat o conditie
specificata este adevarata. Formatul acesteia este:
whi l e expresie
grup
de
instructiuni
end
1.2.4 Vectorizarea calculului
Deoarece operatiile cu vectori si matrice sunt executate in Matlab mai repede decat operatiile
compilate/interpretate se obtine o viteza de lucru mai buna daca se folosesc algoritmi vectorizati.
Oriunde este posibil ciclurile for si while trebuie convertite in operatii cu vectori sau matrice.
Exemplu:
Programul care calculeaza sinusul in 1000 de puncte, de la 1 la 10 cu pasul 0.1 utilizand bucla for are
urmatoarea structura:
t =0: 0. 1: 10;N=l engt h( t ) ;
7/28/2019 An2 Derivat.ro Teoria-transmisiunii-Informatiei Lab1
http://slidepdf.com/reader/full/an2-derivatro-teoria-transmisiunii-informatiei-lab1 13/13
f or i =1: Ny( i ) =si n( t ( i ) ) ;
endpl ot ( t , Y)iar versiunea sa vectorizata este: t =0: 0. 1: 10
Y=si n( t )pl ot ( t , Y)In cazul in care nu se poate vectoriza o parte din program se procedeaza la prealocarea unor vectori in
care vor fi retinute rezultatele.
1.2.5 Exercitii
Exercitii:
1) Calculati rangul, determinatul si matricea inversa pentru fiecare din urmatoarele matrici:
1 2 1 1 2 12 4 2 ; 1 2 1 1 4 12 4 2 ; 1 2 1 1 4 12 4 5
2) Calculati si pentru X=[1 2 3 4].Comentati rezultatul.