37
Curs de Matlab 1/37 Curs de Matlab Departament d’Electrònica Enginyeria La Salle

Curs de Matlab

  • Upload
    lenci

  • View
    47

  • Download
    0

Embed Size (px)

DESCRIPTION

Curs de Matlab. Departament d’Electrònica Enginyeria La Salle. Índex. 1.      Introducció 2.     Tractament de variables 3 .     Operacions aritmètiques 4 .     Operacions amb complexes 5 .     Operacions d’arrodoniment 6 .     Operacions amb vectors 7 .     Operacions amb matrius - PowerPoint PPT Presentation

Citation preview

Page 1: Curs de Matlab

Curs de Matlab1/37

Curs de Matlab

Departament d’Electrònica

Enginyeria La Salle

Page 2: Curs de Matlab

Curs de Matlab2/37

Índex

1.      Introducció

2.      Tractament de variables

3.      Operacions aritmètiques

4.      Operacions amb complexes

5.      Operacions d’arrodoniment

6.      Operacions amb vectors

7.      Operacions amb matrius

8.      Tractament de polinomis

9. Tractaments gràfics

10. Toolboxes

11. Exemples de funcions interessants

12. Programació amb Matlab

13. Simulink

Page 3: Curs de Matlab

Curs de Matlab3/37

1. Introducció

Què és Matlab?

 

El Matlab és un programa que va aparéixer a finals dels anys 70 a les universitats de Nou Mèxic i Stanford. La seva aplicació inmediata era la solució de problemes per les assignatures de Càlcul Numèric, Àlgebra lineal i teoria de matrius. Fins aquell moment la única forma de solucionar aquests problemes era amb subrutines de FORTRAN per la manipulació de matrius, cosa que comportava que els alumnes tinguéssin nocions de programació en FORTRAN.

Amb el Matlab s'aconsegueix un entorn interactiu i programable, on s'integra computació, visualització i programació d'una manera senzilla de fer servir, i amb una notació semblant a la utlitzada normalment en les matemàtiques. L'element bàsic del Matlab és un array al qual no se li ha d'indicar la dimensió.

Page 4: Curs de Matlab

Curs de Matlab4/37

2. Tractament de variables2.1.-Declaració de variables  Variable tipus constant: >>a=6 >>b= <operació de constants> Variable tipus múltiple: >><nom de la variable>=<valor inicial>:<increment>:<valor final> >><nom de la variable>=linspace(<valor inicial>,<valor final>,<numero de punts>) NOTA: Si no posem l'increment agafa un valor unitari. >><nom de la variable>=logspace(<valor inicial>,<valor final(exponent potència de 10)>,<numero de punts>) Variable en funció d'altres variables: >>a=<operació de variables> Variable tipus vector: >>a=[1 0 2 5] Variable tipus polinomi: >>a=[1 2 3 4] Variable tipus matriu: >>a:[2 4 1; 1 0 0; 3 5 12]

Page 5: Curs de Matlab

Curs de Matlab5/37

2. Tractament de variables

2.2.- Manteniment de variables  Per saber les variables que estem fent servir: >>WHO

Per saber les variables que estem fent servir amb una descripció : >>WHOS

Per borrar una variable: >>CLEAR <nom de la variable>

Per borrar totes les variables: >>CLEAR

Per guardar totes les variables en un fixer .MAT: >>SAVE <nom_fitxer>

Per carregar el fitxer .MAT amb totes les variables: >>LOAD <nom_fitxer>

Page 6: Curs de Matlab

Curs de Matlab6/37

3. Operacions aritmètiques

OPERACIÓ SÍMBOL EXEMPLE

Suma, a+b + 7+2

Resta, a-b - 7-2

Multiplicació, a·b * 7*2

Divisió, a÷b / o \ 7/2=2\7

Exponenciació, ab ^ 72

Page 7: Curs de Matlab

Curs de Matlab7/37

4. Operacions amb complexes

4.1.- Declaració de complexes

  Declaració d'una variable complexa:

>>Z=3+2*i

>>Z=3+2*j

>>Z=3+sqrt(-2)

4.2.- Funcions de treball amb complexes 

Per obtenir la part real d'una variable complexa: >> real(Z)

Per obtenir la part imaginària d'una variable complexa: >>imag(Z)

Per obtenir-ne el conjugat: >>conj(Z)

Per obtenir-ne el mòdul: >>abs(Z)

Per obtenir-ne l'angle >>angle(Z)

Page 8: Curs de Matlab

Curs de Matlab8/37

5. Operacions d’arrodoniment

Per arrodonir l'enter superior més proper: >>ceil(i)

Per arrodonir l'enter per defecte tendint a 0: >>fix(i)

Per arrodonir l'enter per defecte tendint a - infinit: >>floor(i)

Per arrodonir a l'enter més proper: >>round(i)

Page 9: Curs de Matlab

Curs de Matlab9/37

6. Operacions amb vectors

6.1.- Declaració de vectors 

Un vector es pot declarar de dues maneres:

 

1. Pot ser un vector fila: >>vec=[1 2 3 4]

2. Pot ser un vector columna: >>vec=[1;2;3;4]

Page 10: Curs de Matlab

Curs de Matlab10/37

6. Operacions amb vectors6.2.- Funcions de treball amb vectors 

Per saber el número de components (o columnes) d'un vector: >>length(vec)

Per obtindre l'element més gran del vector: >>max(vec)

Per obtindre l'element més petit del vector: >>min(vec)

Per obtenir la mitja arimètica del vector, o bé de cada una de les columnes d'una

matriu: >>mean(vec)

Per obtenir el valor central de tots els elements del vector: >>median(vec)

NOTA: Ordena el vector de menor a major i agafa l'element del mig.

Per sumar tots els termes del vector: >>sum(vec)

Per obtenir el producte de tots els elements del vector: >>prod(vec)

Per ordenar els elements de menor a major: >>sort(vec)

Per saber si és FALS (obtenim un 0) o CERT (retorna un 1) que algun dels elements d'un vector tendeix a infinit: >>finite(vec)

Page 11: Curs de Matlab

Curs de Matlab11/37

6. Operacions amb vectors

6.3 Exemples >>a = [5 10 3] >>b = length(a)

b = 3 >>b=min(a)

b = 3 >>b=max(a)

b = 10 >>b=mean(a)

b = 9 >>b = median(a) b = 5 >>b=prod(a) b = 150 >>b=sum(a) b = 18

Page 12: Curs de Matlab

Curs de Matlab12/37

7. Operacions amb matrius

7.1.- Operacions bàsiques amb matrius  OPERACIÓ SÍMBOL EXEMPLE

Suma, A+B + A+B

Resta, A-B - A-B

Multiplicació, A·B * A*B

Divisió, A÷B / A/B=invA*B

Divisió a l'esquerar,A\B \ A\B=B*invA

Per fer la trasposta d'una matriu ' A' Per fer una operació terme a terme .<operant> A.<operant>B

Page 13: Curs de Matlab

Curs de Matlab13/37

7. Operacions amb matrius

7.2.- Funcions específiques per matrius

  Per obtenir la matriu triangular inferior: >>triu(A)

Per obtenir la matriu triangular superior: >>tril(A) Per obtenir un vector amb la diagonal d'una matriu: >>diag(A) Per obtenir la inversa d'una matriu: >>inv(A) Per obtenir el tamany d'una matriu en un vector de dos components: >>size(A) Per invertir l'ordre de les columnes d'una matriu: >>fliplr(A)

Per obtenir el determinant d'una matriu: >>det(A) Per generar una matriu de nXm amb números aleatoris entre 0 i 1: >>rand(n,m) Per generar una matriu de nXn , on n>=3, que compleixi que la suma de les files i

les columnes doni sempre el mateix: >>magic(n) Per generar una matriu on tots els elements siguin 0 de nXm: >>zeros(n,m) NOTA: En aquesta diapositiva no hi són totes les instruccions. Podeu aconseguir

més en els apunts.

Page 14: Curs de Matlab

Curs de Matlab14/37

7. Operacions amb matrius7.3.- Tractament de matrius a nivell de fila-columna 

 

Per obtindre o posar un terme en una posició determinada d'una matriu: >>A(n,m)

Per obtindre un vector igual a una fila determinada d'una matriu: >>vector=A(l,:)

Per obtindre un vector igual a una columna determinada d'una matriu: >>vector=A(:,l)

Per agafar una série de files ( de la n a la m ) d'una matriu: >>B=A(m:n,:)

Per agafar una série de columnes ( de la n a la m ) d'una matriu: >>B=A(:,m:n)

Per borrar una columna: >>A(:,n)=[]

Per borrar una fila: >>A(n,:)=[]

Per borrar més d'una columna (de la n a la m): >>A(:,n:m)=[]

Per borrar més d'una fila (de la n a la m): >>A(n:m,:)=[]

Page 15: Curs de Matlab

Curs de Matlab15/37

7. Operacions amb matrius

7.4 Exemples» MAT = [1 2 3;4 5 6;7 8 9]

» RESUL= tril(MAT) RESUL = 1 0 0 4 5 0 7 8 9» MAT(1,1 ) = 90 » H=MAT(1,3) MAT = H =3

90 2 3 4 5 6 7 8 9

» vector = MAT(3,:) » MAT(3,:) = [666 669 606] vector = [7 8 9] MAT =

90 2 3 4 5 6

666 669 606

Page 16: Curs de Matlab

Curs de Matlab16/37

8. Tractament de polinomis

8.1 Instruccions bàsiques

Per obtenir les arrels dels polinomis: >>roots(p)

Per trobar el polinomi a partir de les arrels, és a dir, calcular els coeficients característics d'un polinomi a partir d'un vector: >>p=poly([])

Per multiplicar dos polinomis: >>p=conv(p1,p2)

Per dividir dos polinomis b/a: >>[q,r]=deconv(b,a)

Per substituir la incóginta d'un polinomi: >>polyval(poli,val)

Per derivar el poinomi: >>poly den(poly)

Descomposar un quocient de polinomis: >>[R,P,K]=residue(B,A)Retorna un vector [R,P,K]

Page 17: Curs de Matlab

Curs de Matlab17/37

9. Tractament de gràfics

9.1.- Gràfics en 2D 

Per borrar la pantalla de texte: >>clc

Per borrar la pantalla gràfica: >>clg

Per representar per la pantalla gràfica una cosa: >>plot(x,y,<especificacions>)

Per representar per la pantalla gràfica dues coses:

>>plot(x1,y,<especificacions>,x2,z,<especificacions>)

NOTA: La y és una funció de x i la z també.

Per configurar els dos eixos logarítmics: >>loglog(x,y)

Perquè només un dels eixos sigui logarítmic: >>semilog(eix_log,eix_lin)

Per dibuixar una gràfica en polars: >>polar(fi,ro)

NOTA:L'angle "fi" es posa en radiants.

Per posar un títol a la gràfica: >>title('blablabla')

NOTA: Es poden posar labels, fer cuadrícules, visualitzar més d’una gràfica alhora i més coses. Veure més instruccions als apunts.

Page 18: Curs de Matlab

Curs de Matlab18/37

9. Tractament de gràfics

Especificacions

Page 19: Curs de Matlab

Curs de Matlab19/37

9. Tractament de gràfics

9.2.- Corbes de nivell 

Per dibuixar contorns, línies de nivell, de la matriu Z, on les files i les columnes formen el pla X-Y i la Z representa l'elevació: >>contour(Z)

9.3.- Gràfics en 3D

Per fer el dibuix 3D donades 3 dades:

>>plot3(x1,y1,z1,<especificacions1>,...,xn,yn,zn,<especificacionsn>)

Per fer el dibuix 3D d'una matriu: >>mesh(Z)

NOTA: Es poden modificar les posicions de l’observador al gràfic, axí com posar

‘labels’ o texte. Veure apunts del curset.

Page 20: Curs de Matlab

Curs de Matlab20/37

9. Tractament de gràfics9.4 Exemples

» x=[1 3 3 1 1]

» y=[2 2 4 4 2]

» x2=[2 5.5 5.5 2 2]

» y2=[3 3 5 5 3]

» plot(0,0,6,6,x,y,'b*-',x2,y2,'ro-.')

Aquesta funció ‘plot’ uneix amb blau i amb línia continua els parells de punts formats amb el primer punt de la X i el primer de la Y , amb els segons també formats amb els segons parells de punts. Els punts venen indicats a la gràfica amb un asterisc ‘ * ’.

El mateix passa amb X2 i Y2, però aquets són units amb ratlla punt (-.).

Els primers punts (0,0,6,6) serveixen per delimitar l’espai del pla.

Page 21: Curs de Matlab

Curs de Matlab21/37

9. Tractament de gràfics

Exemples continuació

Page 22: Curs de Matlab

Curs de Matlab22/37

10. Toolboxes

Una de les grans propietats del Matlab és la possibilitat de construir-te les teves pròpies eïnes de treball, i poder-les reutilitzar. Totes aquestes funcions personalitzades les podem ajuntar en directoris relacionats amb les seves aplicacions. Això ens porta al concepte de ToolBox, que són una col·lecció de fitxers *.m per solucionar particulars classes de problemes.

Podem trobar diferents tipus de Toolboxes:

De Control: Aquesta és la col·lecció de funcions realitzades per aplicacions de control de sistemes.

De Processat : Aquesta és la col·lecció de funcions realitzades per aplicacions de processament del senyal.

Page 23: Curs de Matlab

Curs de Matlab23/37

11. Funcions interessants

Podem trobar diversos tipus de funcions, i les classifiquem com:

11.1 FUNCIONS PER ANÀLISIS FREQÜENCIALS :

- Bode

- Nichols (Veure apunts)

- Nyquist (veure apunts)

11.2 FUNCIONS PER ANÀLISIS TEMPORALS :

- Step

- Impulse

- Conv (Veure apunts)

11.3 ALTRES TIPUS DE FUNCIONS-Rlocus (Veure apunts)

-Margin

Page 24: Curs de Matlab

Curs de Matlab24/37

11. Funcions interessants

11.1.1 Bode:

>>[m,f]=bode(num,den,w)

>>bode(num,den)

La funció bode ens pinta dues gràfiques, una amb el guany en dB's i l'altre amb

la fase per cada freqüència de la funció de transferència.

11.1.2 Exemple:

H(s)= [10 s(s+20)] / [(s+2)(s+100)] = (10s.s +200s +0) / (s.s +102s +200)

>> num=[10 200 0]

>> den=[1 102 200]

>> bode(num,den)

Page 25: Curs de Matlab

Curs de Matlab25/37

11. Funcions interessants

11.2.1 Step: >>step(num,den,temps)

>>step(num,den)

Ens mostra la resposta de la nostra funció a una entrada esglaó unitat. Matlab calcula automàticament un temps prudencial per veure la resposta (2n cas).

Tot i això podem variar aquest paràmetre (primer cas), afegint la variable temps, que és un vector on hi els temps sobre els quals volem fer l'estudi.

11.2.2 Impulse: >>impulse(num,den,temps)

>>impulse(num,den)

Igual que l'anterior, però ara tenim una entrada impulsional, és a dir, una delta.

Page 26: Curs de Matlab

Curs de Matlab26/37

11. Funcions interessants

11.3.1 Margin:

>>[mg,mf,wmg,wmf]=margin(num,den)

Funció que ens permet trobar el marge de fase, el de guany, i a les respectives

freqüències en que es produeixen (retorna un vector amb aquestes dades).

NOTA: Les freqüències les dóna en rad/seg=w

11.3.2 Exemple:H(s)= [10 s(s+20)] / [(s+2)(s+100)] = (10s.s +200s +0) / (s.s +102s +200)

>> num=[10 200 0]

>> den=[1 102 200]

>> margin(num,den)

Page 27: Curs de Matlab

Curs de Matlab27/37

12. Programació amb Matlab

12.1.- Introducció als fitxers *.M 

La programació amb matlab es fa mitjançant la creació de fitxers *.m, fets amb qualsevol editor, o bé amb el propi de matlab.

Per entrar dins l'editor de Matlab, anem a FILE, i després a NEW : M-FILE Per executar un fitxer d'aquest tipus, n'hi ha prou en posar el nom del fitxer a la línia de comandes del Matlab. El propi programa anirà seguint les instruccions tal i com si les anéssim escrivint a la pantalla.

 Hi ha dos tipus de fitxers: 1.Tipus script Com ja hem dit és un programa que s'executa posant el seu nom a la

línia de comandes. 2.Tipus function A diferència de l'anterior, en aquesta li passes un valor, ella opera, fa el

que calgui, i et retorna un valor.

Page 28: Curs de Matlab

Curs de Matlab28/37

12. Programació amb Matlab

12.2.- Com treballar?

Una vegada estiguis en “New File de Matlab” (Nou arxiu), i li hagis posat un nom, pots treballar amb funcions, o escriure instruccions a “sac”.

Quan “teclegis” el nom de l’arxiu a la linia de comandes de Matlab, s’executaran les instruccions escrites al arxiu per ordre, des del principi al final.

Val la pena treballar amb ordre i separar per funcions. A cada funciò li pots passar paràmetres o no, separats per “comes”. Hem de tenir en compte que la primera funció que apareixi al document ha de ser el programa principal, i dins d’aquest es faran les crides a les altres funcions. Al final de cada funció es posa “break”.

Quan desde Matlab crides al programa, pots passar-li paràmetres o no i la mateixa funció pot identificar-ho amb l’instruccó “Nargin” que identifica el número de paràmetres que li passes.

Page 29: Curs de Matlab

Curs de Matlab29/37

12. Programació amb MatlabExemple:

function Principal (a,b) %1ª funció es la principal del programa (MAIN)if (nargin==0) % Nargin controla si al Principal se li passen

paràmetres.....

end

funcbode(var1,var2) %crida a una subfunció............

break

function funcbode (num,den)bode (num,den) %fa “bode”, Crida a una funció interna de Matlab

break

% Aquest símbol permet fer comentaris al programa

Page 30: Curs de Matlab

Curs de Matlab30/37

12. Programació amb Matlab

12.3.- Operadors racionals 

OPERADOR RACIONAL DESCRIPCIÓ < menor que <= menor o igual que > major que

>= major o igual que = igual que ~ = diferent que 12.4.- Operadors lògics 

OPERADOR LÒGIC DESCRIPCIÓ & AND

¦ OR ~ NOT

xor(x,y) XOR

Page 31: Curs de Matlab

Curs de Matlab31/37

12. Programació amb Matlab12.5 Operadors condicionals  IF-ELSE-END: Sentència per fer una cosa o una altre en funció d'una condició. if <condició> <expressió> else <expressió> end NOTA: La part de l'ELSE ens la podem estalviar, però la part de l'END no. FOR: Sentència per repetir un procediment un nombre determinat de vegades. for <variable>=<llista de valors> <expressió> end NOTA:Per declarar la llista de valors ho hem de fer com si declaréssim una variable múltiple.

Page 32: Curs de Matlab

Curs de Matlab32/37

12. Programació amb Matlab WHILE:

Sentència per fer un bucle tantes vegades com faci falta fins que es compleixi una certa condició. while <variable> <expressió> endSWITCH-CASE: Sentència per decidir diferents camins d'execució en funció d'una condició. switch <expressió> case <condició-1-> <comandes> case <condició-n-> <comandes> otherwise <comandes> end

Page 33: Curs de Matlab

Curs de Matlab33/37

12. Programació amb Matlab

12.6.- Funcions específiques de treball en fitxers *.M  BREAK: En el moment que s'executa l'ordre break es surt del fitxer *.M. %: Cada línia del fitxer .M que comenci amb % serà considerada com ajuda del

nostre programa.

NARGIN: La variable margin és la que conté el número de paràmetres que ens han

passat. EXIST: La funció exist('variable') retorna un 1 si la variable en qüestió existeix. ECHO: La comanda echo mostra cada una de les línes avans d'executar-la. INPUT: <variable>=input('texte') ; pregunta a l'usuari que li doni el valor d'una variable.

Page 34: Curs de Matlab

Curs de Matlab34/37

12. Programació amb MatlabKEYBOARD:

La comanda keyboard dóna el control del teclat a l'usuari fins que aquest no premi la tecla de retorn.

PAUSE:

La funció pause(t) para el programa t segons.

DISP:

La funció disp('texte') mostra el texte per la pantalla.

TYPE:

La funció type('fitxer') ensenya el fitxer per la pantalla.

FPRINTF:

La funció printf('text',<variable>) presenta un text per la pantalla acompanyat del valor de la variable.

MENU:

La funció <variable>=menu('títol',opció-1-,...,opció-n-), pinta un menú a la

pantalla i guarda a la variable la opció premuda amb el mouse.

Page 35: Curs de Matlab

Curs de Matlab35/37

12. Programació amb Matlab

SAVE: La funció save fitxer.DAT, guarda al fitxer.DAT el valor actual de les

variables. LOAD: La funció load fitxer.DAT, carrega en memòria el valor de les variables

que hi ha al fitxer.DAT.

Exemples: op = menu ('PRACTICA MATLAB -ver. 2.5-','1- DATOS','2- BODE', ‘3- EXIT')

%”op” obté la opció escollida del menú

num=input ('NUMERADOR DE LA FUNCION:')

disp('MARGEN DE GANANCIA:');

Exercici: Fes un petit menú dins d’una funció, que possi “HOLA” o “ADEU” segons l’opció escollida.

Page 36: Curs de Matlab

Curs de Matlab36/37

13. Simulink

 

El Simulink, construït sobre Matlab, és un sistema model·lador de diagrames de blocs per model·lar, analitzar i simul·lar una amplia varietat de sistemes físics i matemàtics.

 Per accedir has de posar la paraula “simulink” a la línia de

comandes de Matalab. S’obren dues finestres, una és el teu document en el que posaràs els blocs de les llibreries. L’altre finestra són les llibreries. Si “cliques” en alguna de les finestres de les llibreries trobaràs, tota mena de components electrònics, desde demultiplexors ja fets fins a portes bàsiques, axí com oscil.loscopis o fonts de tensió o corrent.

Com pots veure aquesta es una bona opció per nosaltres com Enginyers, doncs ens permet la simulació de circuits lògics.

Page 37: Curs de Matlab

Curs de Matlab37/37

13. Simulink

Les principals característiques són les següents:   -És un llibreria de blocs de fàcil comprensió per crear sistemes lineals,

nolineals, discrets, continus, híbrids i variables. -És un sistema fàcil per crear models geràrquics i subsistemes. -Té una màscara per poder utilitzar els teus toolboxes directament des del

simulink. -És poden veure els sistemes des de diferents perspectives, des de un nivell

molt alt, fins al nivell de components. -Connexions escalars i vectorials. -Sistema d'etiquetes per senyals i ports per tenir una fàcil comprensió del

diagrama. -Proporciona una simul·lació interactiva a temps real. -Pot fer simul·lacions Montecarlo del teu sistema. -Pot fer execucions condicionals de subsistemes. -Té diferentes maneres de posar senyals d'entrada i de treure'n la sortida.