Introducción a Matlab 6.1 (2ª Parte)

0
0
13
8 months ago
Preview
Full text
  ETSII-UPM Introducción a Matlab 6.1 (2ª Parte)  Ø Cada fila es una cadena de caracteres Ø Todas las filas tienen el mismo número de elementos (se completan con  Ø  Concatenación: frase=['str1', ' ', 'str2', ' ', 'str3'];  Ø  Comparación: strcmp(c1,c2), strcmpi(c1,c2), strncmp(c1,c2,n), c1==c2  Ø  Conversión: double(cad), char(vect), char(c1,c2,c3), int2str(n), num2str(d), str2double(s) , cellstr(str)  Ø  q Funciones para cadenas de caracteres  Ø Ejemplo: matchar=char('más', 'madera');  blancos las filas con menos caracteres)  Matrices de caracteres  Matemáticas de la Especialidad (Mecánica-Máquinas) Madrid, 1 de octubre de 2002 Javier García de Jalón  La función char(vect) convierte un vector de números en cadena de caracteres q  Ø  La función double(str) convierte una cadena en un vector de números ASCII  Ø  Los caracteres se guardan en un vector (2 bytes por carácter) q Conversión entre caracteres y números  Ø  Se definen entre apóstrofos: 'cadena', 'mi casa', 'ni ''idea'''  Ø  Cadenas de caracteres (strings) q Las cadenas de caracteres  ETSII - Departamento de Matemática Aplicada a la Ingeniería Industrial ETSII-UPM  Búsqueda y sustitución: findstr(c1,c2), strmatch(frs, str), strrep(c1,c2,c3) Hiper-matrices ETSII-UPM q Matrices con más de dos dimensiones  A(i,j,k)  La última dimensión representa la “profundidad”  Ø  de la matriz  Ø Se pueden utilizar para almacenar varias matrices  distintas pero con el mismo tamaño y significado  i Ø La función cat(d, A, B) sirva para concatenar dos k  matrices iguales según la dimensión "d"  j  q Ejemplo: HM[:,:,1]=rand(3); HM[:,:,2]=eye(3); q Funciones de Matlab que permiten trabajar con hiper-matrices  Todas las funciones que actúan sobre escalares se aplican elemento a elemento  Ø  Las funciones que actúan sobre vectores (sum, max, ...) se aplican según la  Ø  primera dimensión, resultando una matriz de una dimensión menos  Ø Las funciones matriciales de Álgebra Lineal (inv, det, ...) se aplican sólo a sub-  matrices previamente extraídas de la hiper-matriz  Ø Otras funciones: size, ndims, squeeze, permute, ipermute, ... (ver en Help)  Matrices dispersas (sparse) ETSII-UPM q Matrices dispersas o sparse  Son matrices que tienen la mayor parte  Ø  de sus elementos cero  Ø Sólo se almacenan y sólo se opera con  los elementos distintos de cero q  Almacenamiento de matrices sparse Se almacena un vector con los nnz  Ø  valores distintos de cero Se almacena otro vector con los nnz  Ø  índices de fila de cada valor  Ø Se almacenan en un tercer vector las n posiciones en los vectores anteriores de  los primeros elementos distintos de cero de cada columna  Ø Ejemplo: con load west0479; se carga en memoria un ejemplo de una matriz  de 479×479 con sólo 1887 elementos distintos de cero (ver con spy(west0479))  Ø Las funciones S=sparse(A); y A=full(S); permiten pasar de matrices llenas a  dispersas y viceversa Matrices dispersas (2) ETSII-UPM q Funciones para crear matrices sparse speye(n) , sprand(n,m), sprandn(n,m), sprandsym(n), spdiags(A)  Ø Ø sparse(A) , sparse(m,n), sparse(i,j,val,m,n)  q Otras funciones para operar con matrices sparse full(S) , find(S), [i,j,val]=find(S)  Ø  nnz(S) , nonzeros(S), spy(S), issparse(S)  Ø  spfun('funName',S)  Ø Ø Reordenar los elementos: p=colmmd(S), p=symmmd(S), p=symrcm(S)  q Funciones de Álgebra Lineal  Se puede utilizar el operador \ igual que para matrices llenas  Ø  [L,U,P]=lu(S) , [L,u]=luinc(S), L=chol(S), L=cholinc(S), [Q,R]=qr(S),  Ø  [V,D]=eigs(S) , svds(S), normest(S,tol), condest(S), sprank(S) q Criterios prácticos para trabajar con matrices sparse  Ø Las funciones y operadores de Matlab tienden a conservar el carácter de los  argumentos —lleno o sparse— de la forma más lógica y razonable  Ø Consultar el Help para una información más detallada  Estructuras (struct) ETSII-UPM q Estructuras:  Agrupación de datos de naturaleza diversa bajo un nombre común  Ø Ø Cada uno de esos datos tiene también su propio nombre y genéricamente se  llama campo (field) q  Ejemplo: la estructura alumno tiene como campos numero y nombre alumno.numero=97894; alumno.nombre='Luis Pérez'; alumno=struct('numero', 97894, 'nombre', 'Luis Pérez'); q  Otras características: Pueden crearse vectores de estructuras:  Ø  alumno(50).numero=97894; alumno(50).nombre='Luis Pérez'; Una estructura puede contener otras estructuras (por ejemplo una fecha)  Ø  En cualquier momento se puede añadir un nuevo campo a una estructura o  Ø  eliminar un campo existente q Funciones para operar con estructuras  Ø fieldnames(stc)  isstruct(ST) , isfield(ST, s), rmfield(ST, s), getfield(ST, s), setfield(ST, s, v) Vectores y/o matrices de celdas (cell arrays) ETSII-UPM q Son vectores y/o matrices cuyos elementos pueden ser cada uno de un tipo de dato diferente  Ø Los elementos de un vector de celdas se definen con llaves { }  vc(1)={[1,2,3]}, vc(2)={['mi nombre']}, vc(3)={rand(3,6)} vc{1}=[1,2,3], vc{2}=['mi nombre'], vc{3}=rand(3,6) vc={[1,2,3], 'mi nombre', rand(3,6)}  Ø Es importante que el nombre vc no haya sido utilizado antes (usar clear vc;)  q Funciones para vectores de celdas cell(m, n) , celldisp(ca), cellplot(ca), iscell(ca)  Ø  num2cell(x)  Ø  q Conversión entre vectores de celdas y estructuras cell2struct(ca), struct2cell(stc) ST = cell2struct(vc, {'vector','cadena','matriz'}, 2); vcc= struct2cell(ST)';  Programación de Matlab ETSII-UPM q Ficheros de comandos *.m  Se llaman mediante el nombre del fichero (sin la extensión)  Ø  Los comandos se ejecutan secuencialmente como si se introdujeran desde  Ø teclado. Ø Las variables creadas pertenecen al espacio de trabajo del entorno desde el  que se ejecuta el fichero (no son visibles en las funciones, salvo la que lo ha llamado) q Funciones *.m  Una función es una porción de código aislada del resto del programa  Ø  Hay funciones propias de Matlab y funciones definidas por el usuario  Ø  (funcname.m) function [valores de retorno]=funcname(lista de argumentos)  La función recibe datos a través de la lista de argumentos y devuelve   Ø  resultados a través de los valores de retorno También puede intercambiar información a través de variables globales,  Ø  declaradas como tales tanto en la función como en el programa que la llama  Ø Las variables definidas dentro de la función (y los argumentos) son variables  locales a la función. Cada función tiene su propio espacio de trabajo  ETSII-UPM Funciones definidas por el usuario q Se definen en ficheros *.m con el mismo nombre que la función  Ø  Los valores de retorno deben ser calculados en algún momento antes del fin del fichero que defina la función  Ø Los argumentos se reciben siempre por valor (si se modifican dentro de la  función, se saca una copia y se modifica la copia) q  Ejemplo de llamada: » [i,j]=funcname(A,B+C,H); q Las funciones de Matlab definidas en ficheros *.m  Ø  Admiten número variable de argumentos y de valores de retorno  Ø Las variables nargin y nargout, accesibles dentro de la función, indican el  número de argumentos y valores de retorno con que la función ha sido llamada  Ø varargin y varargout permiten utilizar cell arrays como datos y resultados function [ret1, ret2]=funcname(arg1, arg2, arg3,…) ... ret1=...  ... ret2=...  datos resultados ETSII-UPM  Programación en ficheros *.m q Bifurcaciones if y switch q  if condicion 1 sentencias 1 elseif condicion 2 sentencias 2 elseif condicion 3 sentencias 3 else % opcional sentencias 4 end if condicion sentencias end switch expresion case exp1 sentencias 2 case exp2 sentencias 3 otherwise % opcional sentencias 4 end for i=1:inc:n sentencias end for i=vector sentencias end for i=1:m for j=1:n sentencias end end while condicion sentencias endBucles for y while (sentencia break)  Variables persistentes y variables globales ETSII-UPM q Las variables persistentes:  Son variables locales de una función que conservan su valor entre las  Ø  vez)  Ø Las variables persistentes se crean dentro de una función anteponiendo la  palabra persistent q Las variables globales:  Son variables visibles y utilizables desde el programa principal y desde todas  Ø  aquellas funciones que las declaren utilizando la palabra global Las variables globales se utilizan para compartir información entre una o más  Ø  funciones y el programa principal, sin necesidad de pasarlas como argumentos y/o valores de retorno  Ø Las variables globales son consideradas peligrosas, porque si se produce un  error de programación pueden ser modificadas por quien no debe. Su uso debe restringirse a los casos imprescindibles Se les suelen asignar nombres largos y con mayúsculas (VELOCIDAD,  Ø  TIEMPO, ...), de modo que sean fácilmente distinguibles de las demás variables Gráficos en Matlab  ETSII-UPM q Matlab tiene capacidad de realizar gráficos 2-D y 3-D q Los gráficos se abren en ventanas especiales como la mostrada q  Algunos parámetros gráficos pueden ser controlados desde la propia ventana, por medio de menús, como se ve en la figura  ETSII-UPM Gráficos 2-D q Función plot()  ETSII-UPM Gráficos 2-D (2) q Otras formas de la función plot()  Ø  Forma general: subplot(m,n,i)  Ø  Comando subplot(): Indica en que partición de la figura se va a dibujar  abscisas (A y B deben tener tamaños compatibles) q  Ø plot(x,A) Dibuja las columnas de A en ordenadas frente a x en abscisas Ø plot(A,x) Dibuja las columnas de A en abscisas frente a x en ordenadas Ø plot(A,B) Dibuja las columnas de B en ordenadas frente a las de A en  plot(y) Dibuja los valores de y en ordenadas en función de los índices 1,2,...,n  Ø  Ejemplo: miplot= plot(x,y), pause(5); delete(miplot);  Ø  Ø  (handle) al crear la figura  Los comandos hold on y hold off permiten dibujar varias líneas en una misma figura. Por defecto, el nuevo dibujo sustituye al antiguo q Borrado selectivo de líneas o elementos gráficos. Se debe guardar el id  xlabel('tal'), ylabel('cual'), text(x,y,'texto'), gtext('texto'), grid q  Ø Colores: y, m, c, r, g, b, w, k (black) Ø Tipos de línea: - : -. -- Ø Marcadores; . o x + * s d ^ v > < p h Ø Elementos que se pueden añadir (actúan sobre la figura activa): title('titulo'),   plot(x,y,'g+') % dibuja una línea verde con (+)  Ø Forma más habitual:  Su misión principal es dibujar un vector de valores y en ordenadas frente a otro  Ejemplo: » x=0:pi/25:6*pi; » y=sin(x); z=cos(x); » w=exp(-x*.1).*y; v=y.*z; » subplot(2,2,1), plot(x,y); » subplot(2,2,2), plot(x,z); » subplot(2,2,3), plot(x,w); Gráficos 2-D (3) ETSII-UPM q Comando axis. Valores máximos y mínimos en los ejes. Tiene la siguiente forma general: axis([xmin, xmax, ymin, ymax]) q Para cambiar el origen y la orientación: xy ij axis('xy'), axis('ij') q Para que la escala sea igual en ambos ejes: axis('equal') q  Para que la zona representada sea cuadrada: axis('square') q Para volver a los ejes por defecto axis('normal') q  Para guardar los ejes actuales antes de cambiarlos v=axis; q Para restablecerlos más adelante axis(v)  Gráficos 2-D (4) ETSII-UPM q Función [x,y]=fplot('funcion', limites, 'cadena', tol)  'función' es el nombre del fichero *.m que define la función a dibujar  Ø  limites  Ø : vector de dos [xmin,xmax] o cuatro elementos  [xmin,xmax,ymin,ymax]  Ø 'cadena' : control de color, marcadores y tipo de línea (como en plot())  tol : tolerancia de error relativo (por defecto 1e-03)  Ø  El resultado de fplot() se puede dibujar inmediatamente (sin recoger valores de  Ø  retorno) o posteriormente con plot(), pasándole los valores de retorno recogidos de fplot() q Introducción de puntos con el ratón: función ginput()  Ø [x,y]=ginput introduce los puntos que se van clicando hasta que se  pulsa intro [x,y]=ginput(n)  Ø introduce los n puntos que se clican a continuación  [x,y,bot]=ginput devuelve también un vector de enteros con información  Ø  sobre el botón que se ha pulsado Gráficos 2-D (5) ETSII-UPM q Forma general de dibujo de líneas: función line() line([xini, xend]', [yini, yend]', 'color', 'g')  Ø  line([xini1 xini2; xend1 xend2], ([yini1 yini2; yend1 yend2]);  Ø  permite también dibujar varias líneas a la vez:  Ø line([X], [Y]); cada columna de [X] contiene la x inicial y final de un punto, y  lo mismo las columnas de [Y] con las coordenadas y Control de las características de la línea: se realiza por medio de pares  Ø  parámetro/valor , como por ejemplo: line(x,y,'Color','r','LineWidth',4,'MarkerSize',12,'LineStyle','— ','Marker','*') q Dibujo de polígonos  Ø Con la función plot()  Con llamadas repetidas a la función line()  Ø  Con la función fill(x,y,c). En este caso el polígono se rellena con el color c. Si  Ø  c es un vector de colores de la misma dimensión que x e y se rellena interpolando.  Con llamadas a la función patch(x,y,c)  Ø  Ventanas y movies ETSII-UPM q Control de ventanas. Función figure. Ventana activa figure, figure(n) Crean una nueva ventana activa, si no existe. Se le asigna  Ø  el número indicado o un número consecutivo close, close(n)  Ø Cierran la ventana activa o la número n Ø clf, gcf Borran el contenido de la ventana activa u obtienen el  número de la ventana activa figure(gcf) Trae a primer plano la ventana activa  Ø  q Creación de películas o movies: M=moviein(12) x=-2*pi:pi/24:2*pi; inc=pi/8; for i=1:12 y=sin(x+i*inc); plot(x, y);  M(:,i)=getframe; % captura el frame y lo guarda end Movie(M, 10, 15) q Para ver la película Gráficos 3-D ETSII-UPM q La función plot3(x,y,z) permite dibujar líneas en un espacio 3-D  Se pueden definir colores, tipos de línea y marcadores de modo similar a 2-D  Ø  q Función line(): dibuja líneas entre puntos en el espacio 3-D  Existe una versión 3-D de la función line() completamente análoga a la 2-D  Ø line([xini,xend]', [yini,yend]', [zini,zend]','color','k'); line(X,Y,Z,'color','b');  q Función patch(): dibuja polígonos en el espacio 3-D  patch(X,Y,Z,C);  q Las funciones mesh(), surf() y contour() permiten dibujar superficies  Los ángulos se definen en grados. Por defecto: az = -37.5, el = 30  Ø  Gráficos 3-D (2) ETSII-UPM q  Funciones plot3(x, y, z), plot(x, y, z, 's'), mesh(X,Y,Z) y surf(X,Y,Z) function z=test3d(x,y) clear all, close all z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... x=[-3:0.4:3]; y=x; - 1/3*exp(-(x+1).^2 - y.^2); [X,Y]=meshgrid(x,y); Z=test3d(X,Y); subplot(2,2,1) figure(gcf),fi=[0:pi/20:6*pi]; plot3(cos(fi),sin(fi),fi,'g'); pause(3); subplot(2,2,2) shading flat mesh(Z) shading interp pause(3) shading faceted subplot(2,2,3) figure(gcf), surf(Z) pause(3) subplot(2,2,4) Gráficos 3-D (3) ETSII-UPM q Función [X,Y]=meshgrid(x,y);  Sirve para crear matrices con las coordenadas x e y de todos los puntos de la  Ø  retícula. Ejemplo: x=[1, 2, 4]; y=[1, 3]'; [X,Y]=meshgrid(x,y) X = 1 2 4 1 2 4 Y = 1 1 1 3 3 3  En las filas de la matriz X se repite al vector x tantas veces como elementos  Ø  tiene y. En las columnas de la matriz Y se repite al vector y tantas veces como elementos tiene x.  Gráficos 3-D (4) ETSII-UPM q Mapas de colores: colormap(name)  Un color se puede definir por un nombre (los colores básicos:  Ø  'y','m','c','r','g','b',…) o por medio de tres números entre 0 y 1 (las componentes RGB)  Ø Un mapa de colores es una matriz de tres columnas (componentes RGB), cuyas filas representan colores. Por defecto tienen 64 filas.  Cada mapa de colores tiene un nombre y un estilo que caracteriza sus colores  Ø  Algunos mapas de colores estándar: hsv, hot, gray, bone, copper, pink, white,   Ø  flag, lines, colorcube, vga, jet, prism, cool, autumn, spring, winter, summer Un mapa de colores se puede ver con las sentencias  Ø » colormap(copper) » pcolor([1:65;1:65]')  Ø Al dibujar una figura con el mapa de colores activo los valores máximos se  dibujan con los colores altos del mapa y los valores bajos con los colores bajos q  Función caxis([cmin,cmax])  Ø Cambia la asignación de colores, ajustando cmin y cmax a los valores  máximos y mínimos del mapa de colores (en lugar de a los valores más altos o más bajos) Ejemplo: Simulación movimiento 2-D ETSII-UPM q Se pretende estudiar el movimiento 2-D  y  de un bloque rectangular sometido a la y acción de la gravedad x q El sistema tiene 3 grados de libertad ϕ  x  q Ecuaciones diferenciales del movimiento:  y x  mx my mg  I && = && = − ϕ && = que se pueden reducir a: x u  & =  x y g  && = && = − ϕ && =  y v  & = q Matlab sólo integra ecuaciones diferenciales    ϕ ω & de orden 1. Definiendo: =  ( , ) y f y t  & =  u x v y u  & = ≡ & ≡ & ω ϕ ≡ &    v g las ecuaciones del movimiento se pueden & = −   expresar como se indica en el recuadro  ω & =  Ejemplo: Simulación movimiento 2-D (2)  ETSII-UPM q Los integradores de Matlab se utilizan en la forma siguiente: [t, Y] = ode45('deriv', tspan, y0, options); donde: t es un vector con los instantes de tiempo en los que se dan resultados  Ø  Y es una matriz cuyas filas contienen los 6 resultados en cada instante  Ø  ode45 es el nombre de una función que utiliza el método de Runge-Kutta  Ø  'deriv'  Ø es una cadena de caracteres con el nombre de una función que calcula  la derivada del vector de estado  Ø tspan es un vector con los instantes de tiempo en que se desean resultados  y0  Ø es un vector columna de seis elementos con las velocidades y posiciones  iniciales options es una estructura que permite controlar algunos factores de la  Ø  integración numérica q Una vez terminada la integración numérica hay que representar gráficamente los resultados  ETSII-UPM Ejemplo: Simulación movimiento 2-D (3) q Las coordenadas de los vértices del bloque deben transformarse a coordenadas generales q Para todos los puntos del bloque  Ø PL=[ a -a -a a a  b b -b -b b] ;   Ø  Ø  line(PG(1,:),PG(2,:),'color','k'); x y  x y  ϕ  P  ϕ x y  x y  cos sin o bien, sin cos cos sin sin cos x x y y x y x x y y  ϕ ϕ ϕ ϕ ϕ ϕ ϕ ϕ  = ⋅ − ⋅   = ⋅ +  ⋅  −       =             r = RrPG=R*PL+g*ones(1,size(PL,2);

RECENT ACTIVITIES

Etiquetas

Documento similar

El Aprender a Aprender contribuye significativamente en laobtención de un trabajo
0
0
5
Reportaje a Carlos Olmedo (FAR) y respuesta del ERP
0
0
36
Guevarismo: a propósito del foquismo y otras caricaturas
0
0
7
Transiciones a la democracia y democratización en América Latina: un análisis desde la historia del presente
0
1
21
1. Introducción - Capital Social Comunitario y Gerencia Social
0
0
17
Sobre las paradojas de la abstracción del cuerpo real y el derecho a decidir
0
0
28
Sec 7.3-7.4: Introducción a Vectores y producto punto – editado
0
0
45
III put it after killing a few ofhis relatives, what has been
0
0
12
Potential impacts of a warming climate on water availability in snow-dominated regions
0
0
7
El tutor en E-learning: aspectos a tener en cuenta
0
0
26
COLOMBIA, HACIA LA EDUCACIÓN INCLUSIVA DE CALIDAD “Alguien hizo un círculo para dejarme fuera, yo hice uno más grande para incluirlos a todos”
0
0
8
1.- PROPIEDADES DE LOS MATERIALES. 1.1. Introducción 1.2. Tipos de materiales. Clasificaciones. 1.3. Propiedades de los materiales 1.3.1. Propiedades mecánicas 1.3.2. Propiedades físicas 1.3.3. Propiedades químicas 1.3.4. Propiedades térmicas 1.3.5. Propi
0
0
11
U nha mirada cara a u e onde n’As Cantigas de Santa María: un traballo
0
0
10
Academic goals in blind and partially sighted students: a differential analysis and goal profiles
0
0
8
INTRODUCCION A LA SEGURIDAD EN REDES INALAMBRICAS Wired Equivalent Privacy WEP, acrónimo de Wired Equivalent Privacy o "Privacidad Equivalente a Cableado", es
0
0
51
Show more