• No se han encontrado resultados

Introducción a Matlab 6.1 (2ª Parte)

N/A
N/A
Protected

Academic year: 2019

Share "Introducción a Matlab 6.1 (2ª Parte)"

Copied!
13
0
0

Texto completo

(1)

ETSII-UPM

Introducción a Matlab 6.1

(2ª Parte)

Matemáticas de la Especialidad (Mecánica-Máquinas)

Madrid, 1 de octubre de 2002

Javier García de Jalón

ETSII - Departamento de Matemática Aplicada a la Ingeniería Industrial

ETSII-UPM

Cadenas de caracteres (strings)

q

Las cadenas de caracteres

Ø Se definen entre apóstrofos: 'cadena', 'mi casa', 'ni ''idea''' Ø Los caracteres se guardan en un vector (2 bytes por carácter)

q

Conversión entre caracteres y números

Ø La función double(str)convierte una cadena en un vector de números ASCII Ø La función char(vect)convierte un vector de números en cadena de caracteres

q

Matrices de caracteres

Ø Cada fila es una cadena de caracteres

Ø Todas las filas tienen el mismo número de elementos (se completan con blancos las filas con menos caracteres)

Ø Ejemplo: matchar=char('más', 'madera');

q

Funciones para cadenas de caracteres

Ø Conversión: double(cad), char(vect), char(c1,c2,c3), int2str(n), num2str(d),

str2double(s), cellstr(str)

Ø Comparación: strcmp(c1,c2), strcmpi(c1,c2), strncmp(c1,c2,n), c1==c2

Ø Concatenación: frase=['str1', ' ', 'str2', ' ', 'str3'];

Ø Búsqueda y sustitución: findstr(c1,c2), strmatch(frs, str), strrep(c1,c2,c3)

(2)

ETSII-UPM

Hiper-matrices

q

Matrices con más de dos dimensiones

Ø 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 Ø La función cat(d, A, B)sirva para concatenar dos

matrices iguales según la dimensión "d"

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)

i j

k A(i,j,k)

ETSII-UPM

Matrices dispersas (sparse)

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 nposiciones 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

(3)

ETSII-UPM

Matrices dispersas (2)

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 Helppara una información más detallada

ETSII-UPM

Estructuras (struct)

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)

(4)

ETSII-UPM

Vectores y/o matrices de celdas (cell arrays)

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 vcno 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)';

ETSII-UPM

Programación de Matlab

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 trabajodel 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 aisladadel 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 datosa través de la lista de argumentosy devuelve resultadosa 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

(5)

ETSII-UPM

Funciones definidas por el usuario

q

Se definen en ficheros

*.m

con el mismo nombre que la función

Ø Los valores de retornodeben ser calculados en algún momento antes del fin del fichero que defina la función

Ø Los argumentosse reciben siemprepor 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 narginy 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 Ø vararginy varargoutpermiten utilizar cell arrayscomo 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

Bucles

for

y

while

(sentencia

break

)

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

(6)

ETSII-UPM

Variables persistentes y variables globales

q

Las

variables persistentes

:

Ø Son variables localesde una función que conservan su valor entre las

sucesivas llamadas a la función (por defecto las variables locales se crean cada vez)

Ø Las variables persistentes se crean dentro de una función anteponiendo la palabra persistent

q

Las

variables globales

:

Ø Son variables visibles y utilizablesdesde 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

ETSII-UPM

Gráficos en Matlab

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

(7)

ETSII-UPM

Gráficos 2-D

q

Función

plot()

Ø Su misión principal es dibujar un vector de valores yen ordenadas frente a otro vector xen abscisas. Ambos vectores tienen el mismo número de elementos Ø Forma más habitual:

plot(x,y,'g+') % dibuja una línea verde con (+) Ø 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'), xlabel('tal'), ylabel('cual'), text(x,y,'texto'), gtext('texto'), grid

q

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

(

handle

) al crear la figura

Ø Ejemplo:

miplot= plot(x,y), pause(5); delete(miplot);

ETSII-UPM

Gráficos 2-D (2)

q

Otras formas de la función plot()

Ø plot(y) Dibuja los valores de yen ordenadas en función de los índices 1,2,...,n

Ø plot(x,A) Dibuja las columnas de Aen ordenadas frente a xen abscisas Ø plot(A,x) Dibuja las columnas de Aen abscisas frente a xen ordenadas Ø plot(A,B) Dibuja las columnas de Ben ordenadas frente a las de Aen

abscisas (Ay Bdeben tener tamaños compatibles)

q

Comando

subplot()

: Indica en que

partición de la figura se va a dibujar

Ø Forma general: subplot(m,n,i)

Ø Ejemplo:

(8)

ETSII-UPM

Gráficos 2-D (3)

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:

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)

xy ij

ETSII-UPM

Gráficos 2-D (4)

q

Función [x,y]=fplot('funcion', limites, 'cadena', tol)

Ø 'función'es el nombre del fichero *.mque 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 npuntos que se clican a continuación Ø [x,y,bot]=ginput devuelve también un vector de enteros con información

(9)

ETSII-UPM

Gráficos 2-D (5)

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 xinicial 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

ces un vector de colores de la misma dimensión que xe yse rellena interpolando.

Ø Con llamadas a la función patch(x,y,c)

ETSII-UPM

Ventanas y movies

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

(10)

ETSII-UPM

Gráficos 3-D

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

3-D con distintos tipos de representación

q

Control de la dirección de observación: función

view(az, el)

.

Ø Los ángulos se definen en grados. Por defecto: az= -37.5, el= 30

ETSII-UPM

Gráficos 3-D (2)

q

Funciones

plot3(x, y, z)

,

plot(x, y, z, 's'), mesh(X,Y,Z) y surf(X,Y,Z)

clear all, close all

x=[-3:0.4:3]; y=x; [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) mesh(Z)

pause(3)

subplot(2,2,3) figure(gcf), surf(Z) pause(3)

subplot(2,2,4) contour3(Z,16)

function z=test3d(x,y)

z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2);

(11)

ETSII-UPM

Gráficos 3-D (3)

q

Función [X,Y]=meshgrid(x,y);

Ø Sirve para crear matrices con las coordenadas xe yde 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 Xse repite al vector xtantas veces como elementos tiene y. En las columnas de la matriz Yse repite al vector ytantas veces como elementos tiene x.

ETSII-UPM

Gráficos 3-D (4)

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

(12)

ETSII-UPM

Ejemplo: Simulación movimiento 2-D

q

Se pretende estudiar el movimiento 2-D

de un bloque rectangular sometido a la

acción de la gravedad

q

El sistema tiene 3 grados de libertad

q

Ecuaciones diferenciales del movimiento:

que se pueden reducir a:

q

Matlab sólo integra ecuaciones diferenciales

de orden 1. Definiendo:

las ecuaciones del movimiento se pueden

expresar como se indica en el recuadro

x y x x y y ϕ

0

0

mx

&&

=

my

&&

= −

mg

I

ϕ

&&

=

0

0

x

=

y

= −

g

ϕ

=

&&

&&

&&

u

x

&

v

y

&

ω ϕ

&

0

( , )

0

x

u

y

v

t

u

v

g

ϕ ω

ω

=

=

= 

=

=

= −

= 

y

f y

&

&

&

&

&

&

&

ETSII-UPM

Ejemplo: Simulación movimiento 2-D (2)

q

Los integradores de Matlab se utilizan en la forma siguiente:

[t, Y] = ode45('deriv', tspan, y0, options);

donde:

Ø tes un vector con los instantes de tiempo en los que se dan resultados Ø Yes una matriz cuyas filas contienen los 6 resultados en cada instante Ø ode45es 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

Ø tspanes un vector con los instantes de tiempo en que se desean resultados Ø y0es un vector columna de seis elementos con las velocidades y posiciones

iniciales

Ø optionses 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

(13)

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];

Ø PG=R*PL+g*ones(1,size(PL,2);

Ø 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

ϕ ϕ

ϕ ϕ

ϕ ϕ

ϕ ϕ

= ⋅ − ⋅ 

= ⋅ + ⋅ 

  =   

    

Referencias

Documento similar

Permite acceder al subsidio para obras de riego y/o drenaje en comunidades indígenas para financiar la construcción y puesta en marcha de obras de captación, derivación, conducción

R200 Pitón de rodillo, rodillo de plástico Ø 9,5 mm K200 Palanca de rodillo, rodillo de plástico Ø 12 mm K210 Palanca de rodillo, rodillo de plástico Ø 14 mm K230 Palanca

Por eso, Bosque (1996) se muestra más cuidadoso que Garrido al abordar el valor predicativo del nombre escueto, ya que no lo presenta como un valor inherente que se actualiza en

Esas adaptaciones requerirán conciliar la regulación de actividades abiertas a una competencia plena o acotada con los llamados servicios uni- versales sin alterar el modelo de

En suma, los objetivos de la eva- luación son: Programar y ajustar la intervención a las necesidades, carencias y déficits de cada penado; iden- tificar las potenciales disfunciones

Ø Sobre el coste financiero de los plazos de pago: se incrementará Ø Sobre el riesgo de cobro: aumentará la probabilidad de impago Ø Sobre la capacidad de financiación de las

Ø Nivel de asistencia al servicio de comedor y estudio. Ø Calidad de las actividades del Estudio. Ø Grado de implicación directa e indirecta de la comunidad educativa. Ø

1. LAS GARANTÍAS CONSTITUCIONALES.—2. C) La reforma constitucional de 1994. D) Las tres etapas del amparo argentino. F) Las vías previas al amparo. H) La acción es judicial en