You are on page 1of 91

Matlab

Ficheros
Matlabrc.m
Parmetros de inicializacin y es el responsable de los mensajes que aparecen al arrancar el programa. Se ejecuta automticamente al iniciar Matlab. Busca el archivo statup.m

Startup.m Finish.m

mensajes de inicio quit

Sesin y variables
Guardar el estado de sesin save

Se crea en le directorio actual un fichero binario matlab.mat con el estado de sesin. No grficos porque ocupan mucha memoria.

Recuperar el estado de sesin

load

Sesin 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 continuacin de lo que hubiera en el fichero.

Guardar sesin y copiar salidas


diary
diary filenames.txt diary off
Necesario para abrir el archivo

diary on
Inicia el estado para guardar el trabajo

Lneas de comentarios
% /* */

Operaciones con matrices


Operador aritmticos Operadores para la resolucin de sistemas de ecuaciones lineales Operadores elemento a elemento

Operadores aritmticos

Operadores Aritmticos
Los operadores anteriores se pueden aplicar tambin de modo mixto ( entre escalar y matricial)

Tipos de datos
Matlab trabaja con vectores y matrices as como variables escalares. Tambin trabaja en doble precisin es decir guarda cada dato en 8 bytes con 15 cifras de decimales exactas.

Tipos de datos
Nmero reales de doble precisin Otros tipos de variables:
Integer Float Logical

Nmeros complejos Cadena de caracteres

funcin complex

Nmeros reales de doble precisin


1.0 /0.0
Infinito en Matlab es representado como Inf

0/0
Representacin especial para los resultados que no estn definidos como nmeros. NaN Not a Number

Estas respuestas son muy importantes porque permiten controlar la fiabilidad de los resultados de los clculos matriciales.

Operaciones con coma flotante


eps Da una idea de la precisin o nmero de cifras almacenadas. En un PC, eps vale 2.2204e016.

realmin devuelve el nmero ms pequeo con que se puede trabajar (2.2251e-308) realmax devuelve el nmero ms grande con que se puede trabajar (1.7977e+308)

Entero
Matlab trabaja por defecto con variables de punto flotante y doble precisin. Con esto no es necesario declarar el tipo de variables Sin embargo, es conveniente declarar variables de otros tipo para ahorrar memoria y clculos 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 simtricos respecto al 0
int8, int16, int32, int64

Var sin signo son nmeros 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 pequeo 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 nmeros double mas pequeo 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 precisin.

Variables Lgicas
Las variables lgicas surgen como el resultado de los operadores relacionales. Y de funciones lgicas
any all aplicados a vectores y matrices

Help any Help all

Variables Lgicas
Funcin logical(A) produce una variable lgica con el mismo nmero elementos de A Aplicacin
Separar o extraer elementos de una matriz o vector que cumpla con cierta condicin y operar luego sobre dichos elementos.

Ejemplo
A= magic(4) j=A>10 isa(j,logical) A(j)=-10 Creacin matriz mgica todos los elementos de la matriz >10 Convierto la j en variable lgica Accin

Nmeros complejos
Funcin complex Muchos clculos matriciales los datos no son reales sino complejos (parte real, parte imaginaria) a=sqrt(-4) a= 0 + 2.0000i >> 3 + 4j ans = 3.0000 + 4.0000i

Nmeros Complejos
Se recomienda no trabajar como variable i para no confundirse con la parte imaginaria de un nmero. i=2 i= 2 >> 2+3i ans = 2.0000 + 3.0000i

Nmeros complejos
Cuando i y j son variables utilizadas para otras finalidades como unidad imaginaria puede utilizar la funcion sqrt(-1) Asignacin >> 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 necesario A= 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 carcteres
MATLAB puede definir variables que contengan cadenas de caracteres. En MATLAB las cadenas de texto van entre apstrofos o comillas simples
s = 'cadena de caracteres'

Funciones internas de Matlab


Uso de las funciones internas Uso de la ayuda Funciones matemticas fundamentales Funciones trigonomtricas Funciones de anlisis de datos Nmeros aleatorios Nmeros complejos Limitaciones computacionales Valores especiales y funciones varias

Funciones de Librera
Partes de una funcin
Nombre Entrada Salida

Ejemplo
X =[4 9 16] B= sqrt(X)

Size determina el nmero de filas y columnas en una matriz


d = [1 2 3 4 5 6] f= size(d) f= 2 3

[x,y]= size(d)

Asignacin de las valores a var

Anidar funciones
g= sqrt(sin(x))
Recomendacin: Asegurarse de incluir los argumentos para cada funcin dentro de su propio conjunto de parntesis.

Ayuda
help help (funcin)
help tan

Ayuda general Ayuda especifica

doc (funcin)

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 matemticas comunes


Logaritmos Exponenciales Valor absoluto Funciones de redondeo

Clculos comunes
abs(x) sqrt(x) nthroot(x,n) sign(x) rem(x,y) exp(x) log(x) log10(x) Encuentra el valor absoluto de x Raiz cuadrada Encuentra la n-esima raz real de 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 Calcula el residuo de x/y Calculo el valor de ex donde e es la base para logaritmos naturales o 2.7183 Calcula ln(x), el logaritmo natural de x (a la base e) Calcula log10(x), el logaritmo comun de x (a la base 10) abs(-2) sqrt(85) nthroot(x,n) sign(-8) rem(25,4) exp(10) log(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 raz cuadrada de cada elemento del vector

2. Encuentre la raz cuadrada de -3 y +3


Use la funcin sqrt nthroot -3 y +3 a la potencia de
Cmo 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 funcin sign para determinar cuales de los elementos en el vector x son positivos.

Funciones de redondeo
round (x) fix(x) floor(x) ceil(x) Redondea x al entero mas cercano round(8.6) Redondea x al entero mas cercano hacia cero. Note fix(8.6) que con esta funcin 8.6 se trunca a 8, no a 9 Redondea x al entero mas cercano hacia el infinito negativo Redondea x al entero mas cercano hacia infinito positivo floor(-8.6) ceil(-8.6)

Matemticas Discretas
Matlab incluye funciones para factorizar nmeros, encontrar denominadores y mltiplos comunes, calcular factoriales y explorar nmeros primos. Todas estas funciones requieren escalares enteros como entrada. Incluye la funcin rats que se expresa un numero punto flotante como un nmero racional (fraccin)

Las matemticas discretas son las matemticas de nmeros enteros.

Funciones
factor(x) gcd(x,y) lcm(x,y) rats(x,) factorial(x) primes(x) isprime(x) Encuentra los factores primos de x Encuentra el mximo comn denominador de x y Encuentra el mnimo comn mltiplo de x y Representa x como fraccin Encuentra el valor de x factorial(x!) . El factorial es el producto de todos los enteros menores que x. Encuentra todos los numeros primos menores que x Verifica para ver si x es un nmero primo. Si los es regresa 1 sino lo es regresa 0 factor(12) gcd(10,15) lcm(2,5) rats(1.5) factorial(6) primes(10) isprime(7)

Ejercicio
Factorice el numero 322 Encuentre el mximo comn 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 Trigonomtricas
Funciones estndar e hiperblicas Los ngulos se expresan en radianes
Cambiar a grados
Grados= radianes*180/pi; Radianes= grados *pi/180

Funciones trigonomtricas
sin(x) cos(x) tan(x) Encuentra el seno de x cuando x se expresa en sin(0) radianes Encuentra el coseno de x cuando x se expresa en radianes Encuentra la tangente de x cuando x se expresa en radianes cos(pi) tan(pi)

asin(x)

Encuentra el arcoseno o seno inverso de x, x debe estar entre -1 y 1. la funcin regresa un ngulo en radianes entre /2 y /2
Encuentra el seno hiperbolico de x cuando x se expresa en radianes

asin(-1)

sinh(x)

sinh(pi) asinh(1)

asinh(x) Encuentra el seno hiperbolico inverso de x

sind(x)

Encuentra el seno de x cuando x se expresa en grados

sind(90)
asind(90)

asind(x) Encuentra el seno inverso de x y reporta el resultado en grados

Ejercicios

Funciones de anlisis de datos


Mximo y mnimo
Valor mximo de un vector
x=[1 5 3] max(x) x=[1 5 3; 2 4 6] max(x)

Valor y ubicacin 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 tamao que x y y (matriz cuadrada) cada elemento en la matriz resultante contiene el valor mximo 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 pequeo 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 tamao que x y y. Debe ser matriz cuadrada. La matriz resultante contendr el valor mnimo 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 posicin 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] mean(x) promedio por columna

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] sum(x) suma por columnas

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 tamao 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 ordenacin
sort(x)
Ordena los elementos de un vector x ascendente
x=[1 5 3] sort(x) x=[1 5 3; 2 4 6] sort(x) columnas

sort(x,descend)
Ordena los elementos en cada columna descendente
x=[1 5 3] sort(x,descend) x=[1 5 3; 2 4 6] sort(x,descend) columna

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 tamao
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 dimensin mas grande de una matriz x
x=[1 5 3; 2 4 6] lenght(x)

Funciones definidas por el usuario


Creacin de archivos m de funcin
Tenemos funciones internas de Matlab pero es posible crear nuestras propias funciones.

Sintaxis
Parmetros iguales que las funciones internas
Nombre Entrada Salida
Cos(x)

El usuario no necesita ver los clculos 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 lnea de definicin de funcin que contenga:


Palabra function Una variable que defina la salida de la funcin Un nombre de funcin 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 funcin, se debe guardar en el directorio actual.

El nombre del archivo debe ser el mismo que el nombre de funcin con la finalidad que de MATLAB lo encuentre.
Una vez guardado el archivo-m, la funcin esta disponible para usar desde la ventana de comandos.
Sugerencia: tomar en cuenta las reglas de declaracin de variables.

En particular
Nombre de la funcin debe empezar con una letra Puede formarse con letras, nmeros y el guin bajo No se pueden usar nombres reservados Permite cualquier longitud, aunque los nombres largos no son una buena prctica.

x= 1 poly(x)

x= [1 2 3 4 5] poly(x)

Ejercicios
Crear funciones MATLAB para evaluar las siguientes funciones matemticas.
y(x)=x2 y(x)=e1/x y(x)=sen(x2)

Ejercicios
Cree funciones MATLAB para las siguientes conversiones de unidades.
Pulgadas a pies Caloras a joules Metros a millas Millas por hora a pies por segundos

Ayuda de nuestra funcin


Comentarios
Los comentarios inmediatamente siguiente a la primera linea tienen un papel especial. Se muestran cuando se requiere la ayuda de la funcin.
function results = f(x) %esta es una funcin de conversin de unidades de segundos a minutos Help f

Funciones con entradas y salidas


Se puede requerir multiples entradas y salidas
Funcin definida: rem(5,3)
function output=g(x,y) %esta funcin multiplica x y %x y y deben ser del mismo tamao 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 funcin calcula la distancia, velocidad y aceleracin 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


Creacin de vectores y matrices de celdas 56 Funciones para trabajar con vectores y matrices de celdas 57 Conversin 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

Grficas

Bidimensionales
Funciones grficas 2D elementales 108 8.1.1. Funcin plot 109 8.1.2. Estilos de lnea y marcadores en la funcin plot 111 8.1.3. Aadir lneas a un grfico ya existente 111 8.1.4. Comando subplot 112 8.1.5. Control de los ejes: funcin axis() 112 8.1.6. Funcin line() 113 8.1.7. Funcin findobj() 113 8.2. Control de ventanas grficas: Funcin figure 114 8.3. Otras funciones grficas 2-D 115 8.3.1. Funcin fplot 115 8.3.2. Funcin fill para polgonos 116 8.3.3. Dibujo simplificado de funciones: Funciones ezplot() y ezpolar() 116 8.4. Entrada de puntos con el ratn 117 8.5. Preparacin de pelculas o "movies" 117 8.6. Impresin de las figuras en impresora lser 118 8.7. Las ventanas grficas de MATLAB

Graficos 3D
Tipos de funciones grficas tridimensionales 121 9.1.1. Dibujo simplificado de funciones 3-D: Funciones ezplot3(), ezsurf(), etc. 122 9.1.2. Dibujo de lneas: funcin plot3 122 9.1.3. Dibujo de mallados: Funciones meshgrid, mesh y surf 123 9.1.4. Dibujo de lneas de contorno: funciones contour y contour3 124 9.2. Utilizacin del color en grficos 3-D Imgenes y grficos en pseudocolor. Funcin 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 paramtricas de las funciones mesh, surf y pcolor 127 9.2.6. Otras funciones grficas 3D 127 9.2.7. Elementos generales: ejes, puntos de vista, lneas ocultas, ...

Graficos avazados
Imgenes Manipulacin de grficos Animacin Otras tcnicas de visualizacin Introduccin a visualizacin de volumen

Programacin 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. funcin input 66 6.2.2. funcin disp 67 6.3. Ficheros *.m 67 6.3.1. Ficheros de comandos (Scripts) 68 6.3.2. Definicin de funciones 68 6.3.3. Sentencia return 69 6.3.4. Funciones con nmero 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 funcin (function handles) 72 6.4.1. Creacin de referencias de funcin 73 6.4.2. Evaluacin de funciones mediante referencias 74 6.4.3. Informacin contenida por una referencia de funcin. Funciones sobrecargadas 75 6.4.4. Otros aspectos de las referencias de funcin 76 6.4.5. Utilidad de las referencias de funcin 76 6.4.6. Funciones inline 77 6.4.7. Funciones annimas 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 funcin
Integracin numrica de funciones 84 6.10.2. Ecuaciones no lineales y optimizacin 84 6.10.3. Integracin numrica de ecuaciones diferenciales ordinarias 86 6.10.4. Las funciones eval, evalc, feval y evalin 94 6.11. Distribucin del esfuerzo de clculo: Profiler

Scripts

Editor debugger

Interfaces de Matlab con otros lenguajes