Post on 02-Dec-2015
Matlab
Ficheros
• Matlabrc.m – Parámetros de inicialización y es el responsable de
los mensajes que aparecen al arrancar el programa.
– Se ejecuta automáticamente al iniciar Matlab.– Busca el archivo statup.m
• Startup.m mensajes de inicio• Finish.m quit
Sesión y variables
• Guardar el estado de sesión save
– Se crea en le directorio actual un fichero binario «matlab.mat» con el estado de sesión.
– No gráficos porque ocupan mucha memoria.
• Recuperar el estado de sesión load
Sesión y Variables
• Se puede guardar matrices y vectores de forma selectiva y en ficheros con nombre especificando por le usuario.– Save filename A x y «guarda las variables A, x, y en el
archivo filename.mat»
– Load filename.mat• save -append filename– Se guarda a continuación de lo que hubiera en el
fichero.
Guardar sesión y copiar salidas
• diary– diary filenames.txt– diary off
• Necesario para abrir el archivo
– diary on• Inicia el estado para guardar el trabajo
• Líneas de comentarios– % – /*– */
Operaciones con matrices
• Operador aritméticos• Operadores para la resolución de sistemas de
ecuaciones lineales• Operadores elemento a elemento
Operadores aritméticos
Operadores Aritméticos
• Los operadores anteriores se pueden aplicar también de modo mixto ( entre escalar y matricial)
Tipos de datos
• Matlab trabaja con vectores y matrices así como variables escalares.
• También trabaja en doble precisión es decir guarda cada dato en 8 bytes con 15 cifras de decimales exactas.
Tipos de datos
• Número reales de doble precisión• Otros tipos de variables:– Integer– Float– Logical
• Números complejos función complex• Cadena de caracteres
Números reales de doble precisión
• 1.0 /0.0– Infinito en Matlab es representado como Inf
• 0/0– Representación especial para los resultados que
no están definidos como números. – NaN – Not a Number
• Estas respuestas son muy importantes porque permiten controlar la fiabilidad de los resultados de los cálculos matriciales.
Operaciones con coma flotante
• eps Da una idea de la precisión o número de cifras almacenadas. En un PC, eps vale 2.2204e-016.
• realmin devuelve el número más pequeño con que se puede trabajar (2.2251e-308)
• realmax devuelve el número más grande con que se puede trabajar (1.7977e+308)
Entero
• Matlab trabaja por defecto con variables de punto flotante y doble precisión.
• Con esto no es necesario declarar el tipo de variables
• Sin embargo, es conveniente declarar variables de otros tipo para ahorrar memoria y cálculos mas rapidos.
Entero
• Matlab permite crear variables enteras con 1, 2, 4 y 8 bytes.
• Pueden tener signo o no – Var con signo representan var casi simétricos
respecto al 0• int8, int16, int32, int64
– Var sin signo son números no negativos desde cero – max • uint8, uint16, uint32, uint64
Ejemplos
• i=int32(100);– % se crea un entero de 4 bytes con valor 100
• >> j=zeros(100); i=int8(j); – % se crea un entero i a partir de j
• >> i=zeros(1000,1000,'int32'); – % se crea una matriz 1000x1000 de enteros
Tipos de variables
• Las funciones intmin(‘int64’) e intmax(‘int64’) que permite saber el valor del entero mas pequeño y mas grande que puede fomarse con variables enteras de 64 bits.
• >> disp([intmin('int64'), intmax('int64')])
Entero
• Isinteger(i)– 1 si es entero – 0 en otro caso
• Class(i)– Devuelve el tipo de variable que es i
• Isa(i,’int16’)– Identifica si la variable i corresponde a un entero
de 16 bits.
Variable reales o float
• single(x) • double(y)
• Las funciones realmin y realmax permiten saber los números double mas pequeño y mas grande en valor absoluto que admite el computador.– realmin(‘single’)– realmax(‘single’)
• isfloat(x) – X es una variable real, de simple o doble precisión.
Variables Lógicas
• Las variables lógicas surgen como el resultado de los operadores relacionales.
• Y de funciones lógicas– any– all aplicados a vectores y matrices
Help anyHelp all
Variables Lógicas
• Función logical(A) produce una variable lógica con el mismo número elementos de A
• Aplicación– Separar o extraer elementos de una matriz o
vector que cumpla con cierta condición y operar luego sobre dichos elementos.
Ejemplo
• A= magic(4) Creación matriz mágica• j=A>10 todos los elementos de
la matriz >10• isa(j,’logical’) Convierto la j en
variable lógica• A(j)=-10 Acción
Números complejos
• Función complex• Muchos cálculos matriciales los datos no son reales sino
complejos (parte real, parte imaginaria)
a=sqrt(-4)a =0 + 2.0000i>> 3 + 4jans =3.0000 + 4.0000i
Números Complejos
• Se recomienda no trabajar como variable ‘i’ para no confundirse con la parte imaginaria de un número.
i=2i =2>> 2+3ians =2.0000 + 3.0000i
Números complejos• Cuando i y j son variables utilizadas para otras finalidades como unidad
imaginaria puede utilizar la funcion sqrt(-1)
• Asignación
>> A = [1+2i 2+3i; -1+i 2-3i]A =1.0000 + 2.0000i 2.0000 + 3.0000i-1.0000 + 1.0000i 2.0000 - 3.0000i>> A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesarioA = 1.0000 + 2.0000i 2.0000 + 3.0000i-1.0000 + 2.0000i 1.0000 - 3.0000i
Numeros complejos
• Funcion complex
>> complex(1,2)ans =1.0000 + 2.0000i
Cadena de carácteres
• MATLAB puede definir variables que contengan cadenas de caracteres. En MATLAB las cadenas
• de texto van entre apóstrofos o comillas simples
– s = 'cadena de caracteres'
Funciones internas de Matlab
• Uso de las funciones internas• Uso de la ayuda• Funciones matemáticas fundamentales• Funciones trigonométricas• Funciones de análisis de datos• Números aleatorios• Números complejos• Limitaciones computacionales• Valores especiales y funciones varias
Funciones de Librería
• Partes de una función– Nombre– Entrada– Salida
• Ejemplo– X =[4 9 16]– B= sqrt(X)
• Size determina el número de filas y columnas en una matriz– d = [1 2 3 4 5 6]– f= size(d)– f= 2 3
• [x,y]= size(d) Asignación de las valores a var
Anidar funciones
• g= sqrt(sin(x))
– Recomendación: Asegurarse de incluir los argumentos para cada función dentro de su propio conjunto de paréntesis.
Ayuda
• help Ayuda general• help (función) Ayuda especifica– help tan
• doc (función)
Ejercicios
• Use el comando help en la ventana de comando para encontrar la sintaxis adecuada para las siguientes funciones.– cos– sqrt– exp
• Web resources
Funciones matemáticas comunes
• Logaritmos• Exponenciales• Valor absoluto• Funciones de redondeo
Cálculos comunesabs(x) Encuentra el valor absoluto de x abs(-2)
sqrt(x) Raiz cuadrada sqrt(85)
nthroot(x,n) Encuentra la n-esima raíz real de x. nthroot(x,n)
sign(x) Regresa un valor de –1 si x es menor que cero, un valor de 0 si es x es igual a cero y +1 si x es mayor que cero
sign(-8)
rem(x,y) Calcula el residuo de x/y rem(25,4)
exp(x) Calculo el valor de ex donde e es la base para logaritmos naturales o 2.7183
exp(10)
log(x) Calcula ln(x), el logaritmo natural de x (a la base e) log(10)
log10(x) Calcula log10(x), el logaritmo comun de x (a la base 10) log10(10)
Ejercicios
1. Cree el valor x de -2 a +2 con un incremento de 1. el vector debe ser – x=[-2, -1, 0, 1, 2]• Encuentre el valor absoluto y raíz cuadrada de cada
elemento del vector
2. Encuentre la raíz cuadrada de -3 y +3– Use la función sqrt – nthroot -3 y +3 a la potencia de ½• ¿Cómo varia el resultado?
3. Cree un vector x de -10 a 11 con un incremento de 3– Encuentre el resultado de x dividido entre 2– Encuentre el residuo de x dividido entre 2
4. Use el vector del problema 3 y encuentre ex
5. Use el vector del problema 3– Encuentre ln(x) – Encuentre log10(x)
6. Use la función sign para determinar cuales de los elementos en el vector x son positivos.
Funciones de redondeoround (x) Redondea x al entero mas cercano round(8.6)
fix(x) Redondea x al entero mas cercano hacia cero. Note que con esta función 8.6 se trunca a 8, no a 9
fix(8.6)
floor(x) Redondea x al entero mas cercano hacia el infinito negativo
floor(-8.6)
ceil(x) Redondea x al entero mas cercano hacia infinito positivo
ceil(-8.6)
Matemáticas Discretas
• Matlab incluye funciones para factorizar números, encontrar denominadores y múltiplos comunes, calcular factoriales y explorar números primos.
• Todas estas funciones requieren escalares enteros como entrada.
• Incluye la función rats que se expresa un numero punto flotante como un número racional (fracción)
• Las matemáticas discretas son las matemáticas de números enteros.
Funciones factor(x) Encuentra los factores primos de x factor(12)
gcd(x,y) Encuentra el máximo común denominador de x – y gcd(10,15)
lcm(x,y) Encuentra el mínimo común múltiplo de x – y lcm(2,5)
rats(x,) Representa x como fracción rats(1.5)
factorial(x) Encuentra el valor de x factorial(x!) . El factorial es el producto de todos los enteros menores que x.
factorial(6)
primes(x) Encuentra todos los numeros primos menores que x primes(10)
isprime(x) Verifica para ver si x es un número primo. Si los es regresa 1 sino lo es regresa 0
isprime(7)
Ejercicio
• Factorice el numero 322• Encuentre el máximo común denominador de
322 y 6• 322 es un numero primo?• Cuantos primos existen entre 0 y 322?• Aproxime pi como numero racional• Encuentre 10!
Funciones Trigonométricas
• Funciones estándar e hiperbólicas• Los ángulos se expresan en radianes– Cambiar a grados• Grados= radianes*180/pi;• Radianes= grados *pi/180
Funciones trigonométricassin(x) Encuentra el seno de x cuando x se expresa en
radianes sin(0)
cos(x) Encuentra el coseno de x cuando x se expresa en radianes
cos(pi)
tan(x) Encuentra la tangente de x cuando x se expresa en radianes
tan(pi)
asin(x) Encuentra el arcoseno o seno inverso de x, x debe estar entre -1 y 1. la función regresa un ángulo en radianes entre π/2 y –π/2
asin(-1)
sinh(x) Encuentra el seno hiperbolico de x cuando x se expresa en radianes
sinh(pi)
asinh(x) Encuentra el seno hiperbolico inverso de x asinh(1)
sind(x) Encuentra el seno de x cuando x se expresa en grados
sind(90)
asind(x) Encuentra el seno inverso de x y reporta el resultado en grados
asind(90)
Ejercicios
Funciones de análisis de datos
• Máximo y mínimo– Valor máximo de un vector• x=[1 5 3]• max(x)
• x=[1 5 3; 2 4 6]• max(x)
• Valor y ubicación• x=[1 5 3]• [a,b]=max(x)
• x=[1 5 3; 2 4 6]• [a,b]=max(x)
– max(x,y) crea una matriz del mismo tamaño que x y y (matriz cuadrada) cada elemento en la matriz resultante contiene el valor máximo de las posiciones correspondientes en x y y.• x=[1 5 3; 2 4 6]• y=[10,2,4; 1,8,7]• max(x,y)
• min(x) Encuentra el valor mas pequeño de un vector x
• x=[1 5 3]• min(x)
• x=[1,5,3; 2,4,6]• min(x)
• x=[1 5 3]• [a,b]=min(x)
• x=[1,5,3; 2,4,6]• [a,b]=min(x)
– Crea una matriz del mismo tamaño que x y y. Debe ser matriz cuadrada.
– La matriz resultante contendrá el valor mínimo de las posiciones correspondientes en x y y.• x=[1 5 3; 2 4 6]• y=[10,2,4; 1,8,7]• max(x,y)
Sugerencia
• Todas las funciones operan sobre columnas. • En caso de analizar datos en filas se debe usar
la traspuesta del vector.
– x=[1 5 3; 2 4 6]– max(x’)
Ejercicios
X=[4 90 85 75; 2 55 65 75; 3 78 82 79; 1 84 92 93]
• Cual es el valor max de cada columna?• En que posición se presenta dicho maximo?• Cual es el valor maximo de cada fila?
Media y mediana
• Media: promedio de todos los valores en el conjunto de datos.
• Mediana: el valor medio en un conjunto de datos.
Promedios
• mean(x)– Calcula el valor medio de un vector x• x=[1 5 3]• mean(x)
• x=[1 5 3; 2 4 6]promedio por columna• mean(x)
• median(x)– Encuentra la mediana de los elementos de un
vector x• x=[1 5 3]• median(x)
• x=[1 5 3; 2 4 6; 3 8 4]• median(x)
Sumas y productos
• sum(x)– Suma los elementos en el vector x• x=[1 5 3]• sum(x)
• x=[1 5 3; 2 4 6; 3 8 4] suma por columnas• sum(x)
• prod(x)– Calcula el productor de los elementos de un
vector x.• x=[1 5 3]• prod(x)
• x=[1 5 3; 2 4 6]• prod(x)
• cumsum(x)– Calcula un vector del mismo tamaño que un
vector x y contiene sumas acumuladas de los elementos del mismo.
• x=[1 5 3]• cumsum(x)
• x=[1 5 3; 2 4 6]• cumsum(x)
• cumprod(x)
• x=[1 5 3]• cumprod(x)
• x=[1 5 3; 2 4 6]• cumprod(x)
Valores de ordenación
• sort(x)– Ordena los elementos de un vector x – ascendente• x=[1 5 3]• sort(x)
• x=[1 5 3; 2 4 6] columnas• sort(x)
• sort(x,’descend’)– Ordena los elementos en cada columna –
descendente• x=[1 5 3]• sort(x,’descend’)
• x=[1 5 3; 2 4 6]columna• sort(x,’descend’)
• sortrows(x)– Ordena las filas de una matriz sobre la base de los
valores en la primera columna y mantiene intacta cada fila.
– x=[1 5 3; 2 4 6; 3 8 4]– sortrows(x)
– sortrows(x,n)• Ordena las filas en una matriz sobre la base de los valores
en la columna n
• sortrows(x,2)
Funciones de tamaño
• size(x)– Determina el numero de filas y columnas en la
matriz x. • x=[1 5 3; 2 4 6]• size(x)
• [a,b]=size(x)– Determina el numero de filas y columnas en la matriz x y
asigna el numero de filas a a y el numero de columnas a b
• length(x)– Determina la dimensión mas grande de una matriz
x• x=[1 5 3; 2 4 6]• lenght(x)
Funciones definidas por el usuario
• Creación de archivos –m de función– Tenemos funciones internas de Matlab pero es
posible crear nuestras propias funciones.
• Sintaxis– Parámetros iguales que las funciones internas• Nombre• Entrada• Salida
– Cos(x)
• El usuario no necesita ver los cálculos realizados, sino que solo se acepta la respuesta.– mifuncion(x)
– Las funciones definidas por el usuario se crean en archivos-m
– Se debe iniciar con una línea de definición de función que contenga:• Palabra function• Una variable que defina la salida de la función• Un nombre de función• Una variable que se use para el argumento de entrada
– function output=mifuncion(x)
• Los nombres de las variables son arbitrarios y depende del programador.
Ejemplo• function output=poly(x)• output=3*x.^3+5*x.^2-2*x+1
• Antes de poder usar esta función, se debe guardar en el directorio actual.
• El nombre del archivo debe ser el mismo que el nombre de función con la finalidad que de MATLAB lo encuentre.
• Una vez guardado el archivo-m, la función esta disponible para usar desde la ventana de comandos.
– Sugerencia: tomar en cuenta las reglas de declaración de variables.
• En particular– Nombre de la función debe empezar con una letra– Puede formarse con letras, números y el guión
bajo– No se pueden usar nombres reservados– Permite cualquier longitud, aunque los nombres
largos no son una buena práctica.
• x= 1• poly(x)
• x= [1 2 3 4 5]• poly(x)
Ejercicios
• Crear funciones MATLAB para evaluar las siguientes funciones matemáticas.– y(x)=x2
– y(x)=e1/x
– y(x)=sen(x2)
Ejercicios
• Cree funciones MATLAB para las siguientes conversiones de unidades.– Pulgadas a pies– Calorías a joules– Metros a millas– Millas por hora a pies por segundos
Ayuda de nuestra función
• Comentarios– Los comentarios inmediatamente siguiente a la
primera linea tienen un papel especial.– Se muestran cuando se requiere la ayuda de la
función.• function results = f(x)• %esta es una función de conversión de unidades de
segundos a minutos• Help f
Funciones con entradas y salidas
• Se puede requerir multiples entradas y salidas– Función definida: rem(5,3)
– function output=g(x,y)– %esta función multiplica x – y– %x y y deben ser del mismo tamaño– a= x.*y– output=a
Ejercicio
• X= 2• Y=9• G(x,y)
Funciones con mas de una salida
• function [dist, velo, acele] = m(t)• % esta función calcula la distancia, velocidad y
aceleración de un automovil para un valor t• acele= 0,5*t• vel= acele.*t• dist=vel.*t
• t= [0:10:30]• [distancia, velocidad, aceleracion]=m(t)
• Mejor:– Resultados=[t’, distancia’, velocidad’, aceleracion’]
Funciones logicas y estructuras de control
Otros tipos de datos en Matlab
• Hipermatrices (una o mas dimensiones)• Estructuras• Vectores o matrices de celdas• Matrices dispersas (sparse)• Clases y objetos
Hipermatrices
• Definicion• Funciones que trabajan con hipermatrices
Estructuras
• Creacion de estructuras• Funciones para operar con estructuras
Vectores o matrices de celdas
• Creación de vectores y matrices de celdas 56• Funciones para trabajar con vectores y
matrices de celdas 57• Conversión entre estructuras y vectores de
celdas
Matrices dispersas (sparse)
• Operaciones con matrices dispersa• Operaciones de álgebra lineal con matrices
dispersas• Reglas generales para operar con matrices
dispersas• Permutaciones de filas y/o columnas en
matrices sparse
Clases y objetos
Gráficas
Bidimensionales• Funciones gráficas 2D elementales 108• 8.1.1. Función plot 109• 8.1.2. Estilos de línea y marcadores en la función plot 111• 8.1.3. Añadir líneas a un gráfico ya existente 111• 8.1.4. Comando subplot 112• 8.1.5. Control de los ejes: función axis() 112• 8.1.6. Función line() 113• 8.1.7. Función findobj() 113• 8.2. Control de ventanas gráficas: Función figure 114• 8.3. Otras funciones gráficas 2-D 115• 8.3.1. Función fplot 115• 8.3.2. Función fill para polígonos 116• 8.3.3. Dibujo simplificado de funciones: Funciones ezplot() y ezpolar() 116• 8.4. Entrada de puntos con el ratón 117• 8.5. Preparación de películas o "movies" 117• 8.6. Impresión de las figuras en impresora láser 118• 8.7. Las ventanas gráficas de MATLAB
Graficos 3D• Tipos de funciones gráficas tridimensionales 121• 9.1.1. Dibujo simplificado de funciones 3-D: Funciones ezplot3(), ezsurf(),
etc. 122• 9.1.2. Dibujo de líneas: función plot3 122• 9.1.3. Dibujo de mallados: Funciones meshgrid, mesh y surf 123• 9.1.4. Dibujo de líneas de contorno: funciones contour y contour3 124• 9.2. Utilización del color en gráficos 3-D• Imágenes y gráficos en pseudocolor. Función caxis 125• 9.2.3. Dibujo de superficies faceteadas 126• 9.2.4. Otras formas de las funciones mesh y surf 126• 9.2.5. Formas paramétricas de las funciones mesh, surf y pcolor 127• 9.2.6. Otras funciones gráficas 3D 127• 9.2.7. Elementos generales: ejes, puntos de vista, líneas ocultas, ...
Graficos avazados
• Imágenes• Manipulación de gráficos• Animación• Otras técnicas de visualización• Introducción a visualización de volumen
Programación en Matlab• 6.1.1. Sentencia if 64• 6.1.2. Sentencia switch 64• 6.1.3. Sentencia for 65• 6.1.4. Sentencia while 66• 6.1.5. Sentencia break 66• 6.1.6. Sentencia continue 66• 6.1.7. Sentencias try...catch...end 66• 6.2. Lectura y escritura interactiva de variables 66• 6.2.1. función input 66• 6.2.2. función disp 67• 6.3. Ficheros *.m 67• 6.3.1. Ficheros de comandos (Scripts) 68• 6.3.2. Definición de funciones 68• 6.3.3. Sentencia return 69• 6.3.4. Funciones con número variable de argumentos 69• 6.3.5. Help para las funciones de usuario 70• 6.3.6. Help de directorios 71• 6.3.7. Sub-funciones 71• 6.3.8. Funciones privadas 72• 6.3.9. Funciones *.p 72• 6.3.10. Variables persistentes 72• 6.3.11. Variables globales 72• 6.4. Referencias de función (function handles) 72• 6.4.1. Creación de referencias de función 73• 6.4.2. Evaluación de funciones mediante referencias 74• 6.4.3. Información contenida por una referencia de función. Funciones sobrecargadas 75• 6.4.4. Otros aspectos de las referencias de función 76• 6.4.5. Utilidad de las referencias de función 76• 6.4.6. Funciones inline 77• 6.4.7. Funciones anónimas 77• 6.4.8. Funciones anidadadas 77• 6.5. Entrada y salida de datos 79• 6.5.1. Importar datos de otras aplicaciones 79• 6.5.2. Exportar datos a otras aplicaciones 79• 6.6. Lectura y escritura de ficheros• 6.6.1. Funciones fopen y fclose 80• 6.6.2. Funciones fscanf, sscanf, fprintf y sprintf 80• 6.6.3. Funciones fread y fwrite 81• 6.6.4. Ficheros de acceso directo
Funciones de función
• Integración numérica de funciones 84• 6.10.2. Ecuaciones no lineales y optimización 84• 6.10.3. Integración numérica de ecuaciones
diferenciales ordinarias 86• 6.10.4. Las funciones eval, evalc, feval y evalin
94• 6.11. Distribución del esfuerzo de cálculo:
Profiler
Scripts
Editor debugger
Interfaces de Matlab con otros lenguajes