1 / 37

Curs de Matlab

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

lenci
Télécharger la présentation

Curs de Matlab

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Í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

  3. 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ó.

  4. 2.Tractament de variables 2.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]

  5. 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>

  6. 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

  7. 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)

  8. 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)

  9. 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]

  10. 6. Operacions amb vectors 6.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)

  11. 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

  12. 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

  13. 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.

  14. 7. Operacions amb matrius 7.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,:)=[]

  15. 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

  16. 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]

  17. 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.

  18. 9. Tractament de gràfics Especificacions

  19. 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.

  20. 9. Tractament de gràfics 9.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.

  21. 9. Tractament de gràfics Exemples continuació

  22. 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.

  23. 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

  24. 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)

  25. 11. Funcions interessants 11.2.1Step: >>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.2Impulse: >>impulse(num,den,temps) >>impulse(num,den) Igual que l'anterior, però ara tenim una entrada impulsional, és a dir, una delta.

  26. 11. Funcions interessants 11.3.1Margin: >>[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.2Exemple: 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)

  27. 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.

  28. 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.

  29. 12. Programació amb Matlab Exemple: 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

  30. 12. Programació amb Matlab 12.3.- Operadors racionals OPERADOR RACIONALDESCRIPCIÓ < menor que <= menor o igual que > major que >= major o igual que = igual que ~ = diferent que  12.4.- Operadors lògics OPERADOR LÒGICDESCRIPCIÓ & AND ¦ OR ~ NOT xor(x,y) XOR

  31. 12. Programació amb Matlab 12.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.

  32. 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ó> end SWITCH-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

  33. 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.

  34. 12. Programació amb Matlab KEYBOARD: 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.

  35. 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.

  36. 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.

  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.

More Related