91
Seminario Introducción a MATLAB - SIMULINK Dr. Jesús Fraile Ardanuy ETSI Caminos, Canales y Puertos Universidad Politécnica de Madrid Dpto. de Ingeniería Civil: Hidráulica y Energética

Present Acionm at Lab Impri Mir

Embed Size (px)

DESCRIPTION

programa

Citation preview

  • Seminario Introduccin aMATLAB - SIMULINKDr. Jess Fraile ArdanuyETSI Caminos, Canales y PuertosUniversidad Politcnica de MadridDpto. de Ingeniera Civil: Hidrulica y Energtica

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Guin del SeminarioIntroduccin.Primeras instrucciones con MATLAB.Entorno de trabajo.Vectores.Matrices.Ficheros con extensin M.Operaciones lgicas y de relacin.Control de flujo.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Guin del SeminarioFunciones de MATLAB.Grficos en dos dimensiones.Grficos en tres dimensiones.Anlisis de datos.Polinomios.Ajuste de datos e interpolacin.Ecuaciones diferenciales con MATLAB.Sistemas de control.Anlisis de sistemas dinmicos con SIMULINK.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Qu es MATLAB?MATLAB es un entorno de programacin orientado al clculo numrico. Especialmente indicado para:Anlisis numrico.Clculo matricial.Procesamiento de seales.Grficos.MATLAB = MATrix LABoratoryCreado en las universidades de New Mexico y Stanford (en Fortran) para teora de matrices y lgebra lineal.En 1984 se crea Mathworks y se reescribe en C.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*ToolboxesMATLAB, TOOLBOXES, SIMULINK y BLOCKSETSMATLABSIMULINK

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Abriendo el programa..Haced clic sobre el icono

    Se abre la siguiente ventana:

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*MATLAB funcionando como una calculadoraDesde el prompt de MATLAB >>, se introducen las operaciones a realizar:>> 3+6>> 5*5-4/3+2^2

    Qu ocurre al pulsar ENTER?El resultado aparece en ans

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Variables en MATLABMATLAB permite utilizar en cualquier momento variables:>> eCinetica=10>> ePotencial=20 >> eTotal=eCinetica+ePotencial

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Caractersticas de las variablesNo es necesario definir previamente las variables.Son sensibles a maysculas o minsculas.Mximo nmero de caracteres: 31 Deben comenzar por letra, seguida de letra, nmero o guin de subrayado.NO SE PUEDEN UTILIZAR SIGNOS DE PUNTUACIN

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Variables definidas por defectoans respuesta por defecto.i,j representan el nmero imaginario puro.inf representa infinito.NaN representa a las indeterminaciones del tipo 0/0.pi 3,1415927

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Visualizacin de las variablesDesde Command Window: >> whos Name Size Bytes Class eCinetica 1x1 8 double array ePotencial 1x1 8 double array eTotal 1x1 8 double arrayGrand total is 3 elements using 24 bytesDesde Workspace:

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Eliminando variablesclear nombreVariableclear allComentarios y signos de puntuacin El punto y coma ; impide mostrar los resultados parciales. Tambin permite combinar varias instrucciones en la misma lnea:>> alfa=2;beta=1;gamma=alfa+beta Se pueden aadir comentarios con %

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 1Calcular el valor de la resistencia del circuito, conocidas las medidas de tensin y corriente. (V=10 V, A= 20 A). Calcular la potencia elctrica disipada.Observe las variables utilizadas

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*MATLAB como calculadora cientficaFunciones trigonomtricas:cos, sin, tan, acos, etc.NOTA: Los ngulos deben expresarse en RADIANES!

    Funciones exponenciales:^, exp, log, log10, etc.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Formatoformat:short formato de coma fija con 4 decimales (opcin por defecto)long formato de coma fija con 15 decimalesrat Aproxima por un nmero racionallong e Notacin cientfica 15 decimalesshort e Notacin cientfica 4 decimaleshex Hexadecimal

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Funciones sobre nmeros complejosZ1=complex(3,4)Z2=8-j*9;abs(Z1) Mdulo.angle(Z1) Argumento.conj(Z1) Conjugado.compass([Z1 Z2])

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Funciones de redondeofix redondea hacia cero.floor redondea hacia abajo (-)ceil redondea hacia arriba (-)round redondea hacia el entero ms prximo.sign Indica el signo positivo o negativo.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Entorno de trabajoCommand Window

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Entorno de trabajo (II)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ayuda en MATLABDesde el espacio de trabajo: help NombreFuncion Probad: help sinSeleccionando Help en el escritorio de MATLAB

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*VectoresFormas de definir un vector:Directamente: >>x=[0,0.1*pi 0.2*pi...];Formas compactas:>> x=[primero:incremento:ultimo];>>x=[0:0.1*pi:2*pi];

    >>x=linspace(primero,ultimo,numeroElementos);>>x=linspace(0,2*pi,21);

    >>x=logspace(10ValorInicial,10ValorFinal,numElement)

    X= 00.1 0.2 0.3 0.4 0.5 0.6 0.7

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Manipulacin de VectoresX= 00.1 0.2 0.3 0.4 0.5 0.6 0.7X= 00.1 0.2 0.3 0.4 0.5 0.6 0.7X(3:5)X(8)length(X) size(X)

    Se pueden construir nuevos vectores a partir de los anteriores:Y=X(3:end)Par=X(2:2:end)Impar=X(1:2:end)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Operaciones con vectoresOperaciones escalar-vector:A=[1:5];B=[1:2:9];A-12*BOperaciones vector-vector:2*A-BA*BA.*BA./BOtras operaciones:sum(A)prod(B)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos simplesGrficos 2D:t=[0:.1:2*pi];x=sin(t);y=cos(t);plot(t,x)plot(t,x,t,y);

    Grficos 3D:plot3(t,x,y)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 2Descomposicin de una funcin cuadrada peridica en series de Fourier:t=[-2:.01:2];w=2*pi;x1=cos(w*t);x2=-cos(3*w*t)/3;x3=cos(5*w*t)/5;x4=-cos(7*w*t)/7;x=(x1+x2+x3+x4);xFin=(4/pi)*x;plot(t,xFin)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*MATRICES123A=456789

    A=[1,2,3;4 5 6;7 8 9];

    A(fila,columna)

    B=ATransposicin B=A(columna,fila)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 3Construir las matrices A y B, conocidas las matrices C y D.C=[1 2 3];D=[4;5;6];A=1 2 3 B= 1 4 3 6 4 5 62 5 2 5 3 2 13 6 1 4C=[1 2 3];D=[4;5;6];A=[C;D;C(3:-1:1)];B=[C D]B=[B B(3:-1:1,:)]

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Matrices especialesMatriz nula: ceros(filas,columnas)Matriz unidad: ones(filas,columnas)Matriz identidad: eye(filas,columnas)Matriz diagonal: diag(vectorDiagonal)Matriz aleatoria uniforme entre 0,1: rand(filas,columnas)Matriz aleatoria gaussiana med. 0, var1: randn(filas,columnas)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Manipulacin de matricesA=[1 2 3;4 5 6;7 8 0];

    rot90(A) fliplr(A) flipud(A) triu(A) tril(A)Probad las siguientes instrucciones

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Operaciones con MatricesEscalar por matriz: 2*ASumas y Restas: A-BProducto: A*BDeterminante: det(A)Divisin: B/ARango: rank(B)Traza: trace(A)Inversa: inv(A), A^-1Autovalores: [AutoVector,AutoValor]=eig(A)A=[1 2;4 5]B=[-1 0;2 3];

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ficheros *.MSon grupos de instrucciones de MATLAB que se ejecutan en bloque.Evitan realizar tareas repetitivas.Para ejecutar este fichero, basta con llamarlo (sin extensin!) desde el Espacio de Trabajo.Es un fichero ASCII pero MATLAB dispone de un editor propio.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ficheros *.M

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ficheros *.M

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Operaciones lgicas y de relacinMayor que: >Menor que: =Menor o igual que:=3Vector==2(Vector>3)&(Vector

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Control de flujoBucles for-end. Repiten un grupo de instrucciones un nmero fijo de veces:for n=1:4x(n)=n.*n;end;

    NO UTILIZAR i,j como ndices!

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Control de flujo IIBucles while-end. Repiten un grupo de instrucciones hasta que se cumpla una condicin:

    a=0;for a

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Control de flujo IIIEstructuras if-elseif-else-end. Permiten ejecutar distintas instrucciones en funcin de una serie de relaciones:t=0:.1:2*pi;Y=sin(t);Z=Y;for n=1:length(t)if Y(n)
  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Creacin de FuncionesSimilares a los archivos *.MSe comunican con MATLAB a travs de las variables que se pasan a la funcin.

    Su estructura es:function[VarSalida]=NombrFun(VarEntrada) Se edita la funcin con el editor de archivos *.M y se graba. El nombre de la funcin, NombrFun, y el nombre del archivo deben coincidir.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Creacin de Funciones IIEl nombre est limitado a 31 caracteres y debe comenzar por una letra.El nombre no es sensible a las letras maysculas / minsculas, en Windows.La primera lnea: DECLARACIN DE FUNCIN (debe contener la palabra function).Las siguientes lneas son comentarios y sirven para explicar el funcionamiento cuando se solicita a travs de help NombrFun.Las variables definidas dentro de una funcin son locales. Para acceder a ellas desde el espacio de trabajo, hay que definirlas como variables globales: global Variable1 Variable2Se pueden agrupar para formar una TOOLBOX personalizada.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ejemplo Creacin de Funciones% Funcion CUBO% Esta funcion eleva al cubo cualquier escalar, % vector o matriz.% % Jesus Fraile Ardanuy%function y=cubo(x)y=x.*x.*x;

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ejemplo Creacin de Funciones (II)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ejemplo Creacin de Funciones (III)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensionesLa instruccin principal es plot.x=linspace(0,2*pi,20);y=sin(x);z=cos(x);plot(x,y,b:,x,z,rv);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensionesTratamiento del TEXTO sobre los grficos.xlabel(EjeX);ylabel(EjeY);title(Curvas);gridtext(pX,pY,Texto)gtext(Texto);legend(Curva1,Curva2)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensionesUtilizacin de la ventana grfica de MATLAB:

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensionesModificacin de:Tipo de letra.Tamao de letra.Anchura de las lneas.Letras griegas.t=0:.05:2*pi;w=1;x=cos(w*t);plot(t,x,r,LineWidth,4);title(Grafica x_1 con \omega=1);text(2,0.2,COS,fontname,arial,fontsize,14);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensioneshold on/off Se pueden dibujar varias grficas en las misma pantalla.x=[0:.1:2*pi];y=sin(x);z=cos(x)subplot(2,1,1);plot(x,y);subplot(2,1,2);plot(x,z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensionessemilogxsemilogyloglogx=[0.1:.1:2*pi];y=sin(x);z=2+sin(5*x);subplot(2,1,1);semilogx(x,y);subplot(2,1,2);loglog(x,z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensionesGrficos polares:T=0:0.01:2*pi;R=sin(2*T).*cos(2*T);polar(T,R);T=0:pi/90:2*pi;R=2*sin(T).^2;polar(T,R);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 2 dimensionesOtras instrucciones de dibujos en dos dimensiones:pieRepresenta grficos de tarta. barGrficos de barras. bar3Grficos de barras en 3 D. stairs Grficos de escalera. histHistogramas.plotyyRepresenta en la misma grfica2 funciones con el mismo eje X.Complejos:compassfeather

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos 3 dimensionesplot3(x,y,z)t=0:0.2:10*pi;E=exp(-0.05*t);Dib1=E.*sin(t);Dib2=E.*cos(t);plot3(Dib1,Dib2,t);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 4Dibujar la siguiente curva tridimensional. Con los siguientes parmetros a=10, b=1,c=0.3, 0t2.

    a=10;b=1;c=0.3;t=0:.05:2*pi;x=b*cos(t);y=b*sin(t);z=c*cos(a*t);plot3(x,y,z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Dibujo de superficiesEvala la funcin Z=f(x,y).

    La fila i-sima de la matriz Z ser f(x,y(i)), donde se mantiene constante la variable x durante toda la evaluacin de la fila.

    Del mismo modo, la columna j-sima corresponde a f(x(j),y), donde se mantiene constante la variable y.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Dibujo de superficiesZ=f(x,y)x = [-2 1 0]y=[1 2 3]Z debe evaluarse en:Z=f(-2,1)f(-2,2) f(-2,3)Constante la variable xf(-1,1)f(-1,2)f(-1,3)f(0,1)f(0,2)f(0,3)

    Constante la variable y

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Dibujo de superficiesDados los mrgenes de variacin de las variables independientes x e y, es necesario construir una red de pares a travs de la funcin:[X,Y]=meshgrid(x,y)x=[-2 1 0]y=[1 2 3][X,Y]=meshgrid(x,y)X = -2 -1 0 -2 -1 0 -2 -1 0

    Y = 1 1 1 2 2 2 3 3 3

    POSTERIORMENTE, SE EVALA LA FUNCIN MEDIANTE LA INSTRUCCIN mesh(Z), donde Z=f(X,Y).

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 5Dibujar mediante una malla tridimensional la superficie generada por la expresin: en el intervalo (7.5, +7.5). x=-7.5:.5:7.5;y=x; [X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; mesh(X,Y,Z);title('Sombrero mexicano');

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 5Z=sin(R)./R; mesh(X,Y,Z);title('Sombrero mexicano');

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*SuperficiesEl color de la superficie est relacionado con el valor de la variable Z (azul, valores pequeos y rojo para los mayores).

    meshc(Z)Dibuja la malla tridimensional y las curvas de nivel.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Superficieswaterfall(Z)Genera la malla tridimensional con las lneas dispuestas a lolargo del eje x.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Otras funciones para crear volmenessphere(n)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*[X,Y,Z]=cylinder(1,15);mesh(X,Y,Z); Otras funciones para crear volmenescylinder(n)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Superficies tridimensionales slidassurf(Z)x=-1.5:.1:1.5;y=x;[X,Y]=meshgrid(x,y);Z=sqrt(9-X.^2-Y.^2);figure(1);surf(Z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Tabla de colorescolormap(hot)colormap(cool)colormap(pink)colormap(flag)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Otras instrucciones para crear vlmenes slidossurfc(Z)Crea el volumen slido y las lneas de nivel.t=0:.2:2*pi;y=2-sin(t);[X,Y,Z]=cylinder(y,20)surfc(X,Y,Z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Otras instrucciones para crear vlmenes slidossurfnorm(X,Y,Z)Crea el volumen slido y los vectores perpendiculares a la superficie.t=0:.2:2*pi;y=2-sin(t);[X,Y,Z]=cylinder(y,20)surfnorm(X,Y,Z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Grficos de contornoMuestran las lneas de nivel en 2 y 3 D.

    contour(X,Y,Z,numLin)contour3(X,Y,Z,numL)

    [X,Y,Z]=peaks(25); contour(X,Y,Z,20); [X,Y,Z]=peaks(25); contour3(X,Y,Z,20);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Cambio del punto de visinAntiguas versiones de MATLAB: view(Azimuth,Elevacion) Ahora se hace directamente desde la ventana de figura.r=[0:0.05:1]';phi=0:pi/20:2*pi;x=r*cos(phi);y=r*sin(phi);z=besselj(1,3.8316*r)*cos(phi);surf(x,y,z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Cambio del punto de visinAntiguas versiones de MATLAB: view(Azimuth,Elevacion) Ahora se hace directamente desde la ventana de figura.r=[0:0.05:1]';phi=0:pi/20:2*pi;x=r*cos(phi);y=r*sin(phi);z=besselj(1,3.8316*r)*cos(phi);surf(x,y,z);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Anlisis de datosMATLAB dispone de una serie de instrucciones para realizar anlisis estadsticos bsicos.Adems, dispone del Statistics Toolbox.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 6 Se dispone de la medida de la cotizacin (media mensual) de la bolsa en los ltimos 12 meses. Para introducir las funciones especficas de anlisis de datos y como se desconoce los valores exactos de los niveles burstiles, se crea un vector con valores aleatorios comprendidos entre 6000 y 8000 meses=1:12;aleat=rand(1,12)*2e3;bolsa=aleat+6e3;plot(meses,bolsa);title('Cotizacin');xlabel('Meses');ylabel('Valor');

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Instrucciones bsicas de estadsticaValor mediomean(bolsa)Desviacin tpicastd(bolsa)Mximomax(bolsa)Mnimomin(bolsa)Suma acumuladacumsum(bolsa)Histogramashist(bolsa)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*PolinomiosMATLAB representa los polinomios como vectores cuyos elementos son los coeficientes del polinomio dispuestos en orden descendente.Polinomio=[1 2 3 4 5];

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*PolinomiosRaces:roots(polinomio)Construccin del polinomio a partir de sus races: poly([raices]) p1=-1;p2=-3;p3=-3+4*j;p4=conj(p3);polinomio2=poly([p1 p2 p3 p4])

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Operaciones bsicas sobre PolinomiosSuma:Deben ser polinomios del mismo orden.polin1+polin2Producto: conv(polin1,polin2)

    pol1=[1 2 3 4];pol2=[1 2 1];polMul=conv(pol1,pol2)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Operaciones bsicas sobre PolinomiosDivisin: deconv(polin1)Derivada: polyder(polin1)Integral: polyint(polin1)Descomposicin en fracciones simples:

    polNum=[1 4 3 1];polDer=[1,0,-1];[r,p,k]=residue(polNum,polDer)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Evaluacin del polinomio Si se desconoce el orden del polinomioy1=polyval(pol,x);plot(x,y1);xlabel('x');ylabel('y=x{^3}+2x{^2}+3x+1');

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ajuste de datos e interpolacinAjuste de curvas mediante polinomios:polyfit(x,y,ordenPolinomio)x=-3:.5:3;y=3*x.^2+2*x+2*randn(1,length(x)); n1=1;n2=2;pol1=polyfit(x,y,n1)pol2=polyfit(x,y,n2)

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ajuste de curvas mediante polinomiosDibujando los resultados:xi=-3:.1:3;z1=polyval(pol1,xi);z2=polyval(pol2,xi); plot(x,y,'*r');hold on;plot(xi,z1,':b','LineWidth',2);plot(xi,z2,'-.g','LineWidth',2);hold off;legend('Seal inicial','Ajuste Lineal','Ajuste Cuadrtico');

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Interpolacin unidimensionalDada una serie de muestras medidas, se pretende estimar el valor del eje de ordenadas, en los puntos intermedios.interp1(datoX,datoY,puntoIntermedioEstimado)horas= 1:12; temps =[ 5 8 9 15 25 29 31 30 22 25 27 24 ];

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Ecuaciones DiferencialesLa resolucin de ecuaciones diferenciales con MATLAB se realiza en tres pasos:Se define, mediante una funcin de MATLAB, la ecuacin diferencial.

    Se resuelve la ecuacin diferencial, empleando uno de los mtodos de integracin numrica disponibles.-Se representa la evolucin temporal de las variables de estado.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Resolucin de ecuaciones diferencialesSe quiere resolver el sistema de ecuaciones diferenciales ordinarias siguientes:PRIMER PASO. CREACIN DE LA FUNCIN ec1.mfunction yprima=ecuacion1(t,u)yprima=zeros(2,1);% Predimenvect.estados.yprima(1)=-u(1).*u(1)-u(2);yprima(2)=2*u(1)-u(2);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Resolucin de ecuaciones diferenciales (II)SEGUNDO PASO. RESOLUCIN DE LA FUNCIN ec1.mTini=0;Tfin=10;Cond_Inic=[1;1]; % Las cond. ini. son un vector [t,y]=ode23(@ecuacion1,[Tini,Tfin],Cond_Inic); ode23 es un mtodo de integracin de paso variable!

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Resolucin de ecuaciones diferenciales (III)TERCERO PASO. DIBUJANDO las variables de ec1.mx_t=y(:,1);y_t=y(:,2);plot(t,x_t,'b',t,y_t,'r');legend('x(t)','y(t)');xlabel('Tiempo');

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*Resolucin de ecuaciones diferenciales (IV)DIBUJANDO el plano de fase de ec1.mplot(x_t,y_t,'b','LineWidth',2);xlabel('x(t)');ylabel('y(t)');title('Plano de fase de la ec. dif.');

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 7Resolver la ecuacin del atractor de Lorentz definida por el sistema de EDOs:

    con las condiciones iniciales x(0)=z(0)=0 e y(0)=1. Integrar en el periodo (0,20) segundos.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 7 (resolucin)function yprima=caos(t,u)yprima=zeros(3,1);x=u(1);y=u(2);z=u(3);xprima=-3*(x-y); yprima=-x*z+26.5*x-y;zprima=x*y-z;yprima=[xprima;yprima;zprima];

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 7 (resolucin)Tini=0;Tfin=20;Cond_Inic=[0;1;0];[t,y]=ode23(@caos,[Tini,Tfin],Cond_Inic); x_t=y(:,1);y_t=y(:,2);z_t=y(:,3);plot3(x_t,y_t,z_t);

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 8Este ejemplo de ecosistema fue propuesto por el italiano Vito Volterra (1860-1940). Considrense dos poblaciones; una de conejos (c(t)) y otra de zorros (z(t)), que estn relacionadas mediante las siguientes ecuaciones diferenciales:

    El tiempo se mide en aos. Resolver el sistema de ecuaciones diferenciales anterior y dibujar la solucin para =0.01, y la condicin inicial, nmero de conejos c(0)=300 y nmero de zorros z(0)=150 en el intervalo de tiempo de 0 a 25 aos.

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 8 (resolucin)function yprima=ecosistema(t,y)alfa=0.01;yprima=zeros(2,1);c=y(1);z=y(2);yprima(1)=2*c-alfa*c*z;yprima(2)=-z+alfa*c*z;

    Introduccin a MATLAB: Aplicaciones a la ingeniera

  • Introduccin a MATLAB: Aplicaciones a la ingeniera*EJERCICIO 8 (resolucin)[t,y]=ode23(@ecosistema,[0,25],[300;150]);conejos=y(:,1);zorros=y(:,2);plot(t,conejos,'b',t,zorros,'r');legend('Conejos','Zorros');

    Introduccin a MATLAB: Aplicaciones a la ingeniera