Fundamentos de MatlabFunciones y scripts
Control del flujo
Introduccion a MATLAB
Departamento Matematica Aplicada
Universidad de Malaga
Curso 2012-2013
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 1
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Fundamentos
Matlab es un lenguaje de programacion implementado porThe MathWorks, Inc. y disponible en multitud de entornos:Windows, Unix,. . .
Matlab esta especializado en Calculo Cientfico. Integraanalisis numerico, computacion matricial, procesamiento desenales y un entorno grafico que permite expresar de formamatematica multitud de problemas.
Matlab proviene de MATrix LABoratory. Se desarrolla paraproporcionar facil acceso a matrices en los proyectos EISPACKy LINPACK.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 2
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ventana de Comandos
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 3
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Editor de textos
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 4
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ventanas
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 5
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Caractersticas
Matlab proporciona al usuario:
Gestion dinamica de la estructura de datos matriz rectangular.
Un conjunto de comandos, funciones y rutinas graficas muyfaciles de usar.
La extensibilidad es una de las caractersticas masimportantes. Matlab crece constantemente gracias amultitud de matematicos, ingenieros,... que contribuyen aampliar las capacidades del lenguaje.
Herramientas que permiten desarrollar y personalizar lasrutinas numericas.
Existen otros lenguajes similares con software libre: SCILAB,OCTAVE, MAXIMA,. . .Tambien debemos destacar: MATHEMATICA, R, GAUSS,DERIVE,...
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 6
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Variables
Matlab distingue entre mayusculas y minusculas: Total y TOTALson variables distintas.Matlab tiene las siguientes variables predefinidas:
ans: Variable que almacena el ultimo resultado.
eps: Epsilon de la maquina, o cota superior del error relativo deredondeo al expresar un numero real en aritmetica de punto flotante.
pi: El numero pi.
inf, NaN: Infinito y Not a Number.
i, j: Numero imaginario1. CUIDADO: Puede cambiarse.
Las variables pueden ser borradas con el comando clear:
clear (borra todas las variables del espacio de trabajo).
clear variable1,variable2,. . . (borra las variables indicadas).
clear all (borra variable, funciones, breakpoints y otros.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 7
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Variables 2
La variable basica de Matlab es la matriz. Un numero realsera una matriz 1 1. Aunque existe la variable cadena(a=qwerty) y dispone de funciones para estas variables.La matrices Matlab, pueden ser de 3 tipos: enteras, reales ocomplejas. La conversion entre tipos es transparente al usuario.Los calculos se hacen con la maxima precision (16 dgitos), pero lasalida por pantalla puede realizarse con:
formato corto (formato por defecto) format shortformato largo (long) format longformato racional (rat) format ratformato cientfico corto (short e)cientfico largo (long e)
El formato compacto (format compact) evita lineas en blanco.El cambio de formato puede hacerse mediante la ventana decomandos.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 8
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Complejos
Una matriz sera compleja si lo es algun elemento:
Ejemplo
Introducir A = [1, 3, 5] + i [2, 4, 6], o bienA = [1 + 2 i , 3 + 4 i , 5 + 6 i ]
Automaticamente una matriz sera compleja si el resultado de uncalculo da un numero complejo:
Ejemplo
Introducir B = [log(4), 2, sqrt(2)]
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 9
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Caractersticas basicas 2
Ayudas en MATLAB:
help: Lista todas las toolboxes existentes.
help sort: Ayuda sobre el comando sort (ordenar).
who: Lista las variables definidas.
whos: Lista las variables definidas, espacio ocupado, tipo, . . .
quit: Salir de Matlab.
info, computer, ver, version dan informacion sobreMatlab, el ordenador en el que estas trabajando, y lasversiones de Matlab y las toolboxes que estas ejecutando.
clc: Limpia la ventana de comandos.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 10
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Gestion del entorno
El sistema operativo
path En la version de Matlab para Windows, puedemodificarse el camino de busqueda de un comando en disco.
dir, type, cd, . . . igual significado que en MS-DOS.
quit abandonar Matlab.
Ejemplo
Anadir un directorio al path de busqueda de Matlab.>> p = path;path(p, a :);
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 11
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Diarios
Podemos tener un registro de las ordenes ejecutadas en una sesionde Matlab y las salidas efectuadas por pantalla.
diary nombre de fichero hace que toda la informacion queaparezca en la pantalla, se enve al da al fichero.
diary off/on permitira enviar o no los resultados.
Ejemplo
Crear un diario con las ordenes y los resultados de un ejercicio.>> diary ejer1.txt, % Enva a ejer1.txt en directorio actual.>> ..., ..., % ordenes que iran al diario llamado ejer1.txt>> diary off>> ..., ..., % las ordenes entre diary off>> diary on % y diary on no apareceran en el diario>> diary c : \examen\ejer2.txt>> ..., % ordenes que iran al diario llamado ejer2.txt
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 12
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Sentencias de asignacion
Una instruccion de este tipo es de la forma: variable=expresionSi terminamos la instruccion con el smbolo ; el resultado secalculara pero no sera mostrado en pantalla, lo queacelerara muchos los calculos.Varias instrucciones pueden situarse en la misma lnea separadaspor comas o por puntos y comas.
Ejemplo
A=3*B; C=2*A+3*B,D=A+B-C;Se calcularan A, C y D pero solo se mostrara el resultado de C.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 13
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Operadores logicos, predicados
Las constante logicas vienen dadas por 0 (que indica falso) y 1(que indica cierto).Los operadores relacionales =,==,= operanelemento a elemento en el caso de matrices, as como lasconectivas logicas &, |, y , respectivamente and, or(ALT+1) y not (ALT+4).
Ejemplo
Si x=[2, 3, 4, 1, 1,-2, 3] e y=[2, 2, 0, 2, 1, 1, -1]>> z = (x < 3) produce z=[1,0,0,1,1,1,0]>> u = (x == y) produce u=[1,0,0,0,1,0,0]>> w = (z&u) | ( z& u) produce w=[1,1,1,0,1,0,1]>> C = (A = B) produce una matriz C con 1 donde seandistintos aij y bij .
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 14
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Introduccion de una matriz
1) Introduccion explcita de sus elementos:
El comienzo y final de la matriz se indica mediante corchetes.Los datos se introducen por filas, separadas por espacios enblanco (uno o varios) o comas.Las filas se separan mediante punto y coma (;) o mediante latecla INTRO.Para introducir lneas largas se usan los puntossuspensivos(...), al final de la lnea.
Ejemplo
Para introducir la matriz A =
1 0 12 1 1
1 2 0
daremos en
Matlab el siguiente comando:>> A = [1, 0,1; 2,1, 1; 1, 2, 0]
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 15
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Introduccion de una matriz-2
Las matrices pueden crearse a partir de expresiones Matlab tal ycomo aparece en las siguientes expresiones.
Ejemplo
>> B = 3 A+ A2, B = inv(D) (L+ R)C = [A B ;B zeros(A)]
Es recomendable usar parentesis que clarifiquen las expresiones.
Ejemplo
Si x=[2,5;7,0] y queremos calcular y =1
2 + x2deberemos
introducir en Matlab: >> y = 1/(2+ x.2)
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 16
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Introduccion de una matriz-3
Puede cargarse desde un fichero de texto de nombre matriz.mque contiene la lnea: A = [1, 0,1; 2,1, 1; 1, 2, 0].La introduccion de la instruccion:>> matrizproduce el mismo resultado que si la lo hacemos directamente enel interprete Matlab.
Podemos guardar la matriz mediante>> save matrizy posteriormente recuperarla mediante:>> load matriz
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 17
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Vectores
Por enumeracion de sus elementos.
Usando la notacion rango: Valor Inicial : paso : Valor Final
A partir de otros u otra operacion que produzca un vector:y = 3 x + sin(2 pi/5)
Ejemplo
>> x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]>> y = 1 : 10>> z = 1 : 2 : 10>> u = x+ sin(y)>> v = linspace(0, 5, 12)>> w = diff(x)
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 18
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejercicio
Calcula lo que devuelve:
>> A = [1; 2; 3]
>> B = [1; 2; 3];
>> C = [1; 2, 3]
>> D = [1, 2; 3, 4]
>> E = [1; 2; [3; 4]]
>> F = [1 : 9; [1 : 9]. 2]
Dado v=[1 2 3] y w=[4 5 6] que devuelve:>> x = [v;w; 0 3 1]
Que instruccion debemos teclear para obtener:v=[2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 . . . 4.8 4.9 5]?
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 19
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Operaciones con matrices
A+B, A-B, A*B, p*A (p un escalar) son la suma, resta,producto de matrices y matriz por escalar. Devuelve un errorsi las matrices no tiene dimension compatible.
A \ b, A/b realizan la division directa y division inversarespectivamente de matrices, esto es, A1 b y A b1.Es importante que x = A \ b nos da la solucion del sistema:A*x=b, mientras que X=A/B nos da X = A B1 solucion aX*B=A. Cuidado: Si el sistema es imposible da la solucionmnimos cuadrados.
A p (p un escalar) devuelve la potencia p-esima de A. Si p esnatural mayor que 1 se calcula por productos sucesivos. Si nose calcula por autovalores y autovectores.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 20
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejercicios
Dadas las matrices A=
1 2 34 5 6
7 8 9
, B=[1 2 3] y
C =
1 3 34 7 6
7 0 2
Calcular:
D=A+B, E=2A-5C, A3, A5,A = A1/2.
Inversa de A mediante inv(A) y como A1.
La solucion de Ax=b.
La solucion de AX=C.
F = (3A 5C )1B
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 21
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejercicios
Indica la instruccion que debemos ejecutar, si queremos resolver el
sistema Ax=b?
1 2 34 5 6
7 8 9
*
x1x2
x3
=
366804
351
Y Para resolver x A = b Que instruccion sera la correcta?Soluciona) x = A\b, o bien x = inv(A) bb) x = b/A, o bien x = b inv(A)NOTA: En el segundo caso b debe ser un vector 1 3 o matrizk 3, resultando x un vector de igual dimension.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 22
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Matrices especiales
ones(m,n): Matriz de unos de m filas y n columnas.
zeros(m,n): Matriz de ceros de m filas y n columnas.
rand(m,n): Matriz m n de numeros aleatorios distribuidosuniformemente en (0,1).
randi([Imin,Imax],m,n): Matriz m n de numeros aleatoriosdistribuidos uniformemente en los enteros entre Imin e Imax.
randn(m,n): Matriz m n de numeros aleatorios distribuidossegun la normal de media 0 y desviacion tpica 1.
eye(n): Matriz identidad de orden n.
size(A): Un vector [m,n] con las filas y las columnas de A.
length(v): Longitud de un vector.
A : Matriz traspuesta (conjugada).
A. : Matriz traspuesta (sin conjugar los elementos).
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 23
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Operaciones y funciones matriciales
inv(A) calcula A1.
det(A) calcula el determinante.
trace(A) calcula la traza de A.
norm(A) calcula la norma de la matriz.
poly(A) proporciona el polinomio caracterstico de una matriz.
expm(A) calcula eA (funcion matricial).
sqrtm(A) calculaA.
logm(A) calcula la matriz logaritmo neperiano.
[V,D]=eig(A) calcula los autovalores y autovectores de A.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 24
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Otras funciones matriciales
Sea p un vector y A una matriz.
rot90(A) gira la matriz A.
fliplr(A) pasa la primera columna al final.
flipud(A) pasa la primera fila a final.
reshape redimensiona matrices.
vander(p) matriz de Vandermonde con penultima columna p.
diag(p,k) da una matriz que tiene por diagonal k-esima el vector p.
diag(A,K) da un vector, que es la diagonal k-esima de A.
diag(diag(A)) produce una matriz con todos los elementos ceroexcepto los de la diagonal que son los de A.
tril(A) pone a ceros los elementos por encima de la diagonal.
triu(A) analogo al anterior pero con ceros bajo la diagonal.
lu(A) produce 3 matrices L, U, P tales que LU=PA.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 25
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejemplo
Ejemplo
Dado A=[1 2 3; 4 5 6] Que devuelve: >>ones(size(A))? Yque devuelve: >>length(A)?
Que puede devolver: >>rand(2)? a) [0.2345 0.3611],
b)
(0.1578 0.76910.5454 0.8328
), c)
(0.1578 1.76910.5454 1.8328
), d)
(0.23270.1322
)
Que orden hay que dar para que Matlab devuelva:
ans=[1 0; 0 1; 0 0]?
Si tenemos la matriz A =
(1 + 2 i 1 i3 + 2 i 2 6 i
)Que devuelve
A? Que devuelve A.? Que devuelve conj(A)? Que devuelveB=zeros(size(A))?
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 26
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejemplo
Ejemplo
Si M =
(2 33 2
), e introducimos:
N = [ones(2) M; zeros(2) eye(2)] Que matriz se obtiene?
Ejemplo
Introducir: >> X = [1 2 3 pi], Y = zeros(size(X))Que resulta?
Ejemplo
Introducir: >> x = 1 : 0.3 : 2, y = 2 x+ 1 Que resulta?
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 27
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Seleccion de elementos y submatrices
A(x , y) es la matriz formada por los elementos de A referenciadospor las filas indicadas por x , y por las columnas indicadas por y .Senalar que x e y pueden ser escalares, pero tambien vectores.
A(:, y) todas las filas de A y las columnas indicadas por y .
A(x , :) referencia a las filas indicadas por x y todas lascolumnas de A.
Dada A =
2 1 2 2 0 41 0 5 7 12 32 8 9 3 1 1
. Cuanto valen:
A(2,4)
A([1 3],:)
A([3:-1:1],[4,2])
A([3 1 2 1],[1 3])
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 28
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejemplo
Dado el vector v=[7 6 5 4 3 2 1] Como se obtiene la terceracomponente?
Que devuelve la instruccion: >>x=v(1:3)?
Que devuelve la instruccion: >>x=v([3 5 1 7])?
Que devuelve la instruccion: >>x=v(3:-1:1);? Y la>>x=v(3:-1:1) ?
Que devuelve >> v(2:5)?
Dada la matriz A=[1 2 3; 4 5 6; 7 8 9], calcula lo que devuelven lassiguientes instrucciones:
>>A(3,3)=0
>>E=A(1:2,2:3)
>>B=A(3:-1:1,1:3)
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 29
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejemplos
Sea A=[4:-2:0;2:3:8;3:5:14] escribir la matriz que devuelve:
>> A(2,1)=5*A(3,2)-A(1,1)
>> A(2,:)=A(2,:)-2/4*A(1,:)
>> D=A(1:2,2:3)
>> E=A(1:2,:)
>> F=A(:)
>> G=A(1:2)
>> H=A(:,3)
>> K=A([1 3],:)
>> L=A([1 3],[2 3])
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 30
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Operaciones elemento a elemento
X .Operador Y (X e Y matrices)
Realizara la operacion indicada de los elementos que se encuentrenen la misma posicion.
Ejemplo
>> A = X . Y , calcula Aij = Xij Yij .
Ejemplo
Si M =
(2 32 2
)y N =
(1 01 1
)entonces:
M N =(
5 34 2
), M. N =
(2 02 2
)
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 31
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Operadores punto
X .Operador Y (Producto, Division, Potencia)
Las funciones de Matlab operan elemento a elemento:
exp(A) calcula una matriz con los elementos eAij
sqrt(A) calcula una matriz con los elementosAij
log(A) calcula el logaritmo neperiano elemento a elemento.
abs(A), sin(A), cos(A). . .
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 32
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Polinomios
Para representar un polinomio en Matlab usaremos vectores. Elpolinomio
P(x) = anxn + an1x
n1 + . . .+ a1x1 + a0
se representa en Matlab como
p = [an, an1, . . . a1, a0]
Por ejemplo: si queremos representar en Matlab el polinomio:P(x) = 3x2 + 4x + 5 lo almacenaramos de la siguiente forma:>> p = [3, 4, 5].Y para q = x4 5x3 lo haremos mediante>> q = [1,5, 0, 0, 0].
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 33
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Operaciones con polinomios
Las operaciones tpicas para manipular polinomios son:
P(x) + Q(x), P(x) Q(x): Se ponen como >> p+ q,>> p q, pero hay que tener mucho cuidado en usarvectores de igual longitud.
P(x) Q(x): Se calcula mediante >> conv(p,q)P(x)Q(x) : Con >> [c, r] = deconv(p,q)
P (x): En Matlab como >> polyder(p)P(x)dx : En Matlab como >> polyint(p)
Evaluar P(x): En Matlab como >> polyval(p, x)
Las races de P(x) = 0: En Matlab como >> roots(p)
Polinomio con races dadas: >> poly(x)
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 34
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejercicios
Poner las instrucciones Matlab para:
Expresar los polinomios: P(X ) = x4 + x2 1 yQ(x) = (1 x2)2.Hallar los puntos en que P(x) = 2.
Evaluar P(3), P(x) siendo x=1,1.1, 1.2,. . . ,3.
Hallar los puntos en que se cortan, es decir, resolverD(x) = P(x) Q(x) = 0.Hallar su producto C (x) = P(x) Q(x).Hallar el cociente y resto de P entre Q.
Resolver la ecuacion algebraica: P(x) Q(x) + x2 2 = 0.Calcular P(5), P (5) y P (5).
Como obtenemos IP =P(x)dx y que forma tomara.
Calcular I = 42 P(x)dx
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 35
Fundamentos de MatlabFunciones y scripts
Control del flujo
IntroduccionManipulacion de matrices y vectores
Ejercicio resuelto
Ejemplo
Dado el polinomio: p(x) = x4 3x3 + 2x 5Hallar sus races.>> p = [1,3, 0, 2,5], r = roots(p)Representarlo graficamente en [-5,5].xx = 5 : 0.01 : 5; y = polyval(p, xx);plot(xx, y), gridHallar el area delimitada entre el eje OX y las 2 races realesque posee.Ip = polyint(p),Area = polyval(Ip, r(1)) polyval(Ip, r(2)).NOTA: A estas alturas sabemos que r1 2.96 y r2 1.2son las races reales de p(x).
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 36
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Funciones
Como en todos los lenguajes las funciones pueden ser de librera odefinidas por el usuario.Las funciones de librera se cargan al iniciar Matlab y son las basicasdel lenguaje y externas estando incluidas en las TOOLBOXES instaladas.Cualquier usuario puede anadir sus propias funciones facilmente.Tanto los parametros de llamada, como los resultados de lafuncion son matrices.Una misma funcion puede devolver uno o varios argumentos, segun serealice la llamada y recibir diferente numero de parametros de entrada.
d=eig(A) devolvera en d los autovalores de A.
[v,d]=eig(A) devuelve los autovectores en v y los autovalores en d.
help eig indica todas las posibles formas de llamar a la funcion eig.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 37
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Definicion de funciones
La forma es:function [y1, . . . , ym] = nombre funcion(x1, . . . , xn)sentencias
Ejemplo
Definir la funcion en Matlab que calcule la siguiente funcion:
alfa(x) =7x2 sen(x)
2x + 3.
function y=alfa(x)y=(7*x.2-sin(x))./(2*x+3);
Luego mediante>> y = alfa(7), y2 = alfa([123]), x = 1 : 10; y3 = alfa(x)podremos obtener su valor
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 38
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Caractersticas
Las variables que se declaren dentro de la funcion son locales.
La unica conexion entre el espacio de trabajo y el cuerpo de lafuncion se hace a traves de lista entrada y lista salida.
La instruccion return provoca la terminacion inmediata de laejecucion del fichero.
% se emplea para introducir comentarios. Los comentariosque se escriban hasta la primera lnea de codigo, se devuelvencuando se solicita ayuda mediante help nombre funcion.
nargin y nargout: numero de parametros de entrada y desalida (respectivamente).
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 39
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
funciones INLINE
Conviene ver: help inline.INLINE(EXPR) construye un objeto funcion inline de la expresionMatlab contenida en EXPR.Ejemplos:g = inline(t2)g = inline(sin(2*pi*f + theta), f, theta)
Ejemplo
Introduce en Matlab la funcion y = ex/4sen(x) utilizando laorden inline y la funcion fplot para dibujarla en [0, 10]>> F = inline(exp(x./4). sin(x))>> fplot(F, [0, 10]); grid on
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 40
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Scripts
Contienen instrucciones Matlab y para ejecutarlos basta conponer su nombre. Se crean y modifican con el editor de textos.Se usan para introducir datos iniciales (matrices grandes) yorganizar los calculos (programas).
Ejemplo
Se crea un fichero de texto de nombre ej1.m con las ordenes:x=1:10;y=x.2-2;plot(x,y)grid on
Lo llamaremos mediante >> ej1 y dibujara la grafica.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 41
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Instrucciones de Entrada/Salida
echo visualiza el comando en ejecucion.
disp visualiza texto o numeros en la pantalla.
input permite visualizar un texto y obtener datos desdeteclado.
keyboard permite leer y modificar variables desde teclado.
pause detiene la ejecucion un tiempo determinado o hastapulsar una tecla.
return provoca la terminacion de la ejecucion del fichero ydevolucion del control a la instruccion llamante.
menu permite generar un menu de opciones.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 42
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Funciones de orden superior y manejo de excepciones
Para pasar funciones como argumento a otras funciones.
feval evalua la funcion cuyo nombre se ha pasado comoprimer parametro con los argumentos que se han pasado comoparametros adicionales.
eval permite interpretar cadenas de texto que contienenexpresiones Matlab validas.
error sirve para dar un mensaje de error desde un fichero, ymuestra su argumento en pantalla.
Ejemplo
>>x=[4 8 16];>>fun1=sqrt;>>feval(fun1,x)>>ans= 2.0000 2.8284 4.0000
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 43
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Funciones matematicas
Las funciones matematicas en Matlab, estan dirigidas a vectores,as: >> x = [0 pi/2 pi], sin(x), produce la salida:>> ans = 0 1 0Una lista de funciones elementales puede verse mediante help elfun
Funciones trigonometricas elementales incluidas son:
sin, cos, tan, asin, acos, atan, asinh, acosh, atanh, . . .
Otras funciones elementales son:
abs, angle, sqrt, exp, log, log2, log10, round, fix, ceil, floor,rem, sign . . . .
Funciones con salida un vector: diff, linspace, find, sort . . .
Funciones estadsticas: Entre ellas estan max, min, sum, prod,sort, cumsum, cumprod, mean, median, std, cumsum,cumprod, hist, corrcoef, cov, var, corr, skewness, kurtosis,rand, randn, randi, geomean, harmmean, mad, prctile,boxplot, . . .
(Consultar help stats para una lista completa).Departamento Matematica Aplicada Introduccion a MATLAB Pag. 44
Fundamentos de MatlabFunciones y scripts
Control del flujo
FuncionesFunciones definidas por el usuarioFicheros de ordenes, scripts
Predicados
any(x) devuelve cierto si algun elemento del vector x no escero.
all(z) devuelve cierto solo si los elementos de x son distintosde 0.
find(x) devuelve las posiciones de los elementos distintos decero del vector x.
exist(var) devuelve cierto si la variable existe.
isnan(A) devuelve cierto donde vale NaN y cero donde no.
finite(A) devuelve cierto en los valores finitos y 0 donde no losea.
isempty(A) devuelve cierto si es una matriz vaca.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 45
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Sentencias de control de flujo
Sentencia IF ... THEN ... ELSE:
if condicion,sentencia-1
elseif condicion2sentencia-2
elsesentencia-3
endCuidado: La condicion debe dar un valor, no un vector o matriz.Estara mal:x=[2 3 4], y=[1 3 2], if x==y, z=1, else z=x-y, endque podra hacerse mediante:if sum(abs(x-y))==0, z=1, else z=x-y, end
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 46
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Case
Sentencias CASE, SWITCHswitch Variable,case 1, Sentencias para Variable=1.case 2, Sentencias para Variable=2.. . .case 8,10,12, Sentencias cuando Variable vale 8, 10 o 12.
otherwiseerror(No esta contemplado el caso.)
end
Si la variable de conmutacion vale 1, ejecuta la 1a, si vale 2 la 2a,etc.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 47
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Bucles
Sentencia FOR:
for matrizsentencias
end
Sentencia WHILE:
while condicionsentencias
endLa instruccion break provoca la salida del bucle, o del ultimo buclesi estan anidados.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 48
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Ejemplo
Ejemplo
1 for k=1:4, y(k)=x(k+2)-x(k),end
2 k=1:4, for k, y(k)=x(k+2)-x(k),end
3 k=1, while k
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Comandos graficos
plot(x,y) representa la tabla de puntos (xi , yi ).>> x = 1 : 0.5 : 10; y = sin(x);plot(x, y), gridrepresenta la funcion y = sen(x).
fplot(funcion, [a, b]) dibuja una funcion.
hold on/off Permite superponer dos o mas graficas.
grid on activa una cuadrcula en la figura.
whitebg cambia el color de fondo.
title, xlabel, ylabel, xcolor, ycolor,. . . consultar helpcomando.
shg permite visualizar el ultimo grafico en la pantalla.
clf, clg borran la pantalla de graficos.
subplot(m,n,p) permite crear varias graficas en una mismafigura.
figure abre una nueva ventana de graficos.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 50
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Ejemplo
Ejemplo
Dibujar el seno y el coseno en la misma figura.>> fplot(sin(x), [2 pi, 2 pi])>> hold on, fplot(cos(x), [2 pi, 2 pi])La siguiente orden hace lo mismo>> fplot([sin(x), cos(x)], [2 pi, 2 pi])Representar graficamente en [0, 10] la funcion y = ex/4sen(x)introduciendo en Matlab la funcion. Expresar los valores en una tabla.function y=fun22(x)y=exp(-x./4).*sin(x);y luego ejecutar:>> x = 0 : 0.01 : 10; y = fun22(x);plot(x, y); grid>> [x, y]
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 51
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Ejercicios
Dada la matriz A=[1,2,3;4,5,6;7,8,9], calcula:
1 El valor de C al ejecutar: C = (A < 3).
2 Que hacemos para obtener:
1 0 00 5 0
0 0 9
3 Y si queremos obtener
1 2 30 5 6
0 0 9
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 52
Fundamentos de MatlabFunciones y scripts
Control del flujo
Bifurcacion condicionalBuclesGraficosEjercicios
Ejercicios-2
3 Usando las funciones de algebra lineal, Como podemos
obtener la siguiente matriz?
1 1 0 0 01 3 1 0 00 1 5 1 00 0 1 7 10 0 0 1 9
4 Dado el vector v=[1 2 3], usando las funciones de algebra,
que instruccion debemos ejecutar para obtener:
1 0 00 2 0
0 0 3
5 Interpolar 5 elementos en progresion aritmetica entre 0 y 20.
Departamento Matematica Aplicada Introduccion a MATLAB Pag. 53
Top Related