Está en la página 1de 20

MASTER DE INGENIERA

BIOMDICA.
Gua para la realizacin de los
trabajos (I)
Introduccin al Matlab
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

1
Arrancamos Matlab.....

En esta pestaa nos


aparecen los ficheros Espacio de comandos; aqu
que tenemos en el introduciremos las instrucciones
directorio en forma de comandos
elementales

Aqu aparecern las variables de


Instrucciones ms
trabajo.
recientes

Dependiendo de la versin Para que aparezcan todos los elementos seguir la


aparecern estos elementos de secuencia de mens: Desktop--Desktop Layout--Default
esta forma u otra. Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

2
Algunas cuestiones.......

Atajos usando el teclado

Constantes y valores
especiales

INSTRUCCIN BSICA: help (nombre de la funcin)


Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

3
Primeras pruebas........... En Matlab cada objeto es una MATRIZ; un escalar es
una matriz de 1x1; un vector fila es una matriz de
En la pantalla de comandos escribimos... 1xN y un vector columna es una matriz de Nx1;
visto los ejemplos anteriores (que son lo ms
generales posibles) introduce un escalar, un vector
fila y un vector columna.
y debemos ver:
qu ocurre si repites la Para obtener elementos dentro de una matriz la
instruccin con ; al final filosofa es siempre la misma; primero se indican las
de la instruccin?? filas y luego las columnas:

Mira el espacio de trabajo


(workspace)

Prueba ahora
Qu hace el operador ?
A(2,3) A([1 2],[1 2]) A([1 2 3],[2 3])
Seras capaz de introducir las siguientes y ahora t!!!
matrices?

Mira el espacio de trabajo y Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE
comprueba lo que tienes.
4
El operador : Genera en Matlab la siguiente matriz y
localiza, usando el operador: las matrices
Existe un operador bsico en Matlab; este operador que se marcan
es : (dos puntos); tiene dos funciones:
a) Localizar elementos dentro de una matriz (lo visto
anteriormente puede resultar bastante pesado)
b) Generar vectores.

LOCALIZAR ELEMENTOS
El uso es siempre el mismo El otro uso que se le da (bastante
VALOR INICIAL:INCREMENTO:VALOR FINAL; extendido en el procesado digital de
si el incremento es 1 se puede no indicar; si se quieren seales) es el de generar vectores:
todas las filas o todas las columnas se indica Ejemplos:
directamente con : Vector de 1 a 100: >>v=1:1:100
Pares de 0 a 50 >>p=0:2:50
Vector temporal de 0 a 1 segundo en
intervalos de milisegundos:
>>v=0:0.001:1
Intenta generar ahora t los siguientes
vectores
A([1 2],[1 2]) A([1 2 3],[2 3]) A([2 3],[1 2]) Impares de1 a 100; vector temporal de 0 a
A(1:1:2,1:1:2) A(1:1:3,2:1:3) A(2:1:3,1:1:2) 2 segundos (intervalo: 2 dcimas de
segundo); pares de 100 a 0
A(1:2,1:2) A(1:3,2:3) A(2:3,1:2) (clave:intervalo!!!)
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE
A(:,2:3)
5
CUANDO SE APLIQUEN A MATRICES HAY QUE
Operaciones aritmticas (I) RESPETAR LAS REGLAS DE LA OPERACIN
(ERROR MS COMN!!!); por ejemplo si tenemos
A*B el nmero de columnas de A debe ser igual al
nmero de filas de B; para sumar/restar deben tener
la misma dimensin

A\B=inversa(A)*B; A/
B=A*inversa(B); cuidado que no es
lo mismo A*B que A*B en
matrices!!!!!!!
Una primera aplicacin muy til (con lo
que sabemos!!!!); resolver sistemas de
ecuaciones lineales. A modo de ejemplo

se puede poner en forma matricial de la


siguiente forma: AX=B; donde A es la
matriz de los coeficientes; X el vector
columna de incgnitas y B el vector
columna de coeficientes; despejando esa
igualdad se llega a X=inversa(A)B.
3 2 1 9 4 1
A= A.^2= Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE
6 7 4 36 49 16
6
Operaciones aritmticas (II)
Tecleamos
en Matlab El vector x
contiene las
soluciones (x e y)
Ejercicios (los puedes resolver!!!!!).
Dados A y B como Determina:
a) la traspuesta de B (la llamamos C)
b) V=A-4C;
c) A/C y C\A

Determina un vector que contenga los cuadrados de los primeros 20


nmeros pares
Resuelve el sistema Podemos limpiar la pantalla de comandos con la
de ecuaciones instruccin clc (prubalo); si queremos eliminar
variables de la memoria hacemos clear A (A es
lo que queremos eliminar); si las queremos
eliminar todas tecleamos clear
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

7
Seguimos....... Todas las instrucciones se manejan
igual; primero se define el nmero
Matrices especiales de filas y de columnas; por ejemplo
una matriz de unos de tamao 3x2
sera ones(3,2); otro ejemplo: un
vector fila con 20 ceros sera
zeros(1,20). CUIDADO: si slo se
usa un argumento (N) se supone
que es una matriz cuadrada de
tamao NxN; por ejemplo si
ponemos A=zeros(10) nos generar
una matriz de tamao 10x10.
Operaciones sobre matrices

Instruccin que se usar


para el anlisis de datos en
la etapa de preprocesado
de los datos cuando se
hace un anlisis de
componentes principales
(PCA)

Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

8
Operadores relacionales y lgicos
Operadores
relacionales

Hay que tener cuidado con estos Ejercicio: a) genera una matriz X de nmeros aleatorios
operadores porque se aplican a TODOS entre 0 y 1 de tamao 4x2; b) observa la matriz; c)
los elementos de la matriz/vector determina C=X>0.5; d) visualiza C...qu observas?

Una instruccin muy til en el anlisis de


Operadores lgicos A modo de ejemplo, si datos es la instruccin find; se utiliza de
MATLAB dispone de tres quiero saber qu la siguiente forma [a,b]=find(condicin);
operadores lgicos para elementos de una matriz por ejemplo si en la matriz x quiero
combinar posibles X estaran entre 0 y 1 lo encontrar los valores que cumplen que
condiciones hara de la siguiente forma: son mayores que 10 hara:
C=(X>0) & (X<1). [a,b]=find(x>10); devuelve un vector a
Uso Matlab donde se indican las filas y un vector b
Ejercicio: a) genera una que indican las columnas a(1) va con b(1);
y & matriz X de nmeros a(2) con b(2).....
aleatorios (usando randn) Ejercicio: a) genera una matriz X de
de tamao 10x3; b) nmeros aleatorios (usando randn) de
o |
determina qu valores tamao 5x5; b) determina qu valores
estn entre 0 y 0.5. estn entre -1 y 1 (interpreta a y b)
no Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

9
Ms instrucciones tiles para nuestro trabajo
l=length(v) Si v es un vector devuelve la longitud del vector.

[a,b]=size(X) Devuelve el nmero de filas y el de columnas de la matriz X.

Si X es un vector (fila o columna) determina su valor medio; si


m=mean(X) es una matriz devuelve un vector con la media de de cada
columna
Determina la desviacin estndar en las mismas condiciones que
s=std(X)
el valor medio.
Si X es un vector devuelve el valor mximo de un vector (M) y
[M,I]=max(X) su posicin (I); si es una matriz devuelve esos valores por cada
columna de la matriz.
Determina el mnimo en las mismas condiciones que el valor
[M,I]=min(X)
mximo.
Ejercicio: a) genera una matriz X de nmeros aleatorios (instruccin randn) de tamao 50x5;
b) aplica las instrucciones vistas en esta tabla e intenta comprender cada uno de los
resultados.
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

10
Celdas y texto
Matlab dispone de otro tipo de elementos que nos van a aparecer en este curso: las
celdas. Estos elementos son como matrices pero en los que, en cada elemento de la
celda se puede definir cualquier cosa (una matriz, texto, etc). La instruccin para definir
una celda de tamao mxn es cell(m,n).

A nivel de ejemplo quiero definir una celda (c) de tamao 2x2 con diferentes
elementos; ejecuta las siguientes instrucciones: x=cell(3,2); x{1,1}='Pepe';
x{1,2}=randn(1,10); x{2,1}=eye(2); x{2,2}='Atpico';
x{3,1}=[0.1 0.2]; x{3,2}='Si';

Del ejemplo hay que destacar la dos diferencias con cualquier matriz vista hasta ahora:
puedo tener diferentes elementos (texto y numricos) y a los elementos de las celdas
no se accede con los parntesis () sino que se usan las llaves {}.

Otro elemento que aparece en el ejemplo es texto; nos encontraremos estos


elementos al cargar los ficheros de datos al aparecer los nombres de las variables.

Ejercicio: define una celda de tamao 2x2 con los siguientes elementos: tu nombre;
vector columna de unos (10 elementos); matriz aleatoria 3x3; primer apellido);
determina posteriormente el valor medio de la matriz aleatoria.
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

11
Primeras grficas (I)
Matlab es un lenguaje que ofrece gran cantidad de posibilidades grficas (aqu veremos las ms
sencillas!!!!); en el tema de preprocesado veremos otras. Teclea lo siguiente en la pantalla de
comandos (tras el ; pulsa enter) x=0:pi/100:100;y=sin(x); plot(x,y); Entiendes las etapas?; lo
obtenido?; usa help para aprender la funcin sin (LA AYUDA DE MATLAB ES
IMPRESCINDIBLE!!).
Se pueden modificar todos los parmetros del grfico Si queremos ahora cerrar pantallas grficas se
usando instrucciones pero hay un modo ms fcil: usa close(i) donde i es el ndice de la
a) En la pantalla grfica pulsa el icono pantalla que queremos cerrar; si queremos
b) Seguidamente pulsa dos veces (rpido) sobre cerrarlas todas usamos close all; si lo que
cualquier elemento de la grfica abrindose un men queremos es borrar usamos clf(i)
donde puedes modificarlo TODO Ejercicio:Tomando las anteriores grficas;
Ejercicio: En la figura anterior modifica el tamao, comprueba el uso de estas instrucciones.
tipo y color de la lnea; pon etiquetas a los ejes, ttulo
a la grfica y ponle una rejilla a la figura. Ahora queremos comparar dos resultados EN
LA MISMA GRFICA; para ello se usa la
Matlab, por defecto, siempre usa la misma ventana instruccin hold on; a partir de esta
grfica; si queremos hacer otra figura y que Matlab instruccin todas las grficas irn a la
no nos machaque la anterior hay que usar la misma pantalla para desactivarla se usa
instruccin figure (sin argumentos) antes de hold off; Ejercicio: Representa, en la
hacer la nueva figura. misma grfica un coseno y seno de un ngulo
Ejercicio:Tomando como base lo anteriormente visto que vara de 0 a en intervalos de
representa, en otra figura, coseno(x), instruccin cos 0.001 .
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE
donde x ahora va de 0 a 4 en intervalos de 0.1
12
Primeras grficas (II) Se pueden combinar diferentes
tipos de subplot; teclea el
Ahora quiero dividir la pantalla grfica en siguiente ejemplo y observa el
varias partes para poner varios resultado.
resultados; la forma de hacer es con la Hay que tener en cuenta que, si
instruccin subplot(mns), donde m,n quieres hacer algo sobre alguna
y s son parmetros. Para entenderlo se grfica primero le tienes que
considera la divisin de la pantalla como indicar a MATLAB la grfica
una matriz; m es el nmero de filas y n es mediante esta instruccin.
el nmero de columnas siendo s el ndice
Para limpiar cualquier una determinada grfica
que indica en qu divisin va la siguiente
cuando se tienen varias porque se ha usado
figura (se numera la divisin de izquierda
subplot; primero se indica cual se quiere borrar
a derecha y de arriba abajo).
(usando subplot!!!!) y, posteriormente, se usa el
Teclea los siguientes ejemplo, intenta
comando cla. Como ejercicio intenta limpiar la
comprender todos los pasos y lo que
grfica superior izquierda del ltimo ejemplo.
obtienes

Si se quiere imprimir una grfica para luego hacer


un documento (por ejemplo la queremos insertar
en Word) la instruccin directa es print (mira
la ayuda) aunque tenemos otra opcin ms
fcil; en el men de la pantalla grfica seguimos la
secuencia File-Save as y ah tenemos un montn
de opciones (las que mejor quedan las .eps).
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

13
Ficheros (I).
Matlab puede cargar diferentes tipos
de ficheros; la instruccin a utilizar
es load (mirar la ayuda) para
ficheros .mat, .dat, .txt; xlsread
para ficheros excel; imread para
imgenes...... Ms fcil es usar el
asistente de Matlab que nos facilita
la tarea; la secuencia a seguir es File-
Import Data. Se nos abrir un men
tpico de bsqueda de archivos y,
cuando encontremos el que
buscamos, tendremos algo parecido
a la siguiente pantalla (puede
cambiar el aspecto segn la
versin); escogemos las variables de
inters y pulsamos Finish
Ejercicio: Intenta cargar los ficheros radondata.txt; ecg.mat cuando hagas una carga y
compruebes que tienes las variables en memoria, brralas (te acuerdas cmo?)
antes de cargar el siguiente fichero. Representa las variables del fichero ecg.mat;
qu son?
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

14
Ficheros (II).
Hemos terminado de trabajar y queremos guardar nuestro trabajo; la
instruccin a usar es save; de la siguiente forma
save variables a guardar nombre del fichero opciones;
por ejemplo si usamos save A rollo guardaremos la variable A en el fichero rollo.mat; si no
especificamos ninguna variable guardar todas. A continuacin se muestran las opciones
de tipo de dato guardado y versin de Matlab que podra leer el fichero guardado

Ejercicio: Guarda la variable del ECG abdominal (sabes cmo conseguirla?) en un


fichero ascii (16 dgitos) y que lo pueda leer la versin 7 o posteriores
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

15
Bucles y condicionales (I)
En el anlisis de datos aparecen determinados bucles y condicionales para variar
las condiciones iniciales de bsqueda de los parmetros por lo que hay que
conocer las instrucciones bsicas y clsicas.

BUCLE FOR La primera linea indica el nmero de veces que se


Expresin en Matlab realizar la operacin; ese ndice se puede usar dentro
for k=1:n de la operacin claro!!!; el end final SIEMPRE HAY
ACCIN QUE PONERLO; fuente de error comn!!!
end

El bucle for se utiliza cuando se conoce el nmero de veces que hay que realizar
una operacin; por ejemplo, supongamos que queremos calcular la suma de los
elementos de un vector x; la siguiente secuencia de instrucciones lo hace; 1)
definir el vector x; 2) suma=0; 3) l=length(x); 4) for k=1:l, suma=suma+v(k); end
5) suma ..ES IMPORTANTE QUE ENTIENDAS LOS PASOS REALIZADOS.

EJERCICIO: Modifica la secuencia anterior de instrucciones para calcular, usando


un bucle for, el factorial de un nmero (n!=1234...n).
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

16
Bucles y condicionales (II)
BUCLE WHILE Mientras se cumpla la condicin se realizar la accin;
Expresin en Matlab otra vez cuidado con el end final SIEMPRE HAY QUE
while condicin PONERLO; fuente de error comn!!!. Aqu otro error
ACCIN comn es no verificar que la condicin no se cumple
end en algn momento.
El bucle while se utiliza cuando NO se conoce el nmero de veces que hay que
realizar una operacin; pero esa operacin depende de una condicin. El
ejemplo de la suma anterior sera 1) definir el vector x; 2) suma=0; 3) l=length(x);
4) while l>0 suma=suma+v(l); l=l-1; end 5) suma ..ES IMPORTANTE QUE
ENTIENDAS LOS PASOS REALIZADOS. Ejercicio: intenta repetir el ejercicio del
factorial con el bucle while
CONDICIONALES Si se cumple la condicin se realizar la accin 1; en caso
Expresin en Matlab contrario se realiza la accin 2; otra vez cuidado con el end
if condicin final SIEMPRE HAY QUE PONERLO; fuente de error
ACCIN 1 comn!!!. La parte del else se puede eliminar. Adems se
else pueden encadenar varios if con la instruccin elseif (MIRA
ACCIN 2 LA AYUDA). Esta instruccin la usaremos a continuacin
end Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

17
Ficheros .m
Si queremos combinar muchas instrucciones (programar!!!); tenemos que ponerlas
juntas en un fichero y decrselo a MATLAB. Los pasos a seguir 1) seran pulsar el
icono de la hoja en blanco (editor); 2) se escriben las instrucciones en el editor; 3) se
guarda con la extensin .m (no se empieza con nmero ni dejes espacios en blanco) y
asegrate de guardarlo en tu directorio de trabajo o en el path (MIRA LA AYUDA); 4)
ejectalo desde la pantalla de comandos escribiendo el nombre del programa.
El anterior fichero se conoce como script; existe otro tipo de fichero que son las
funciones en las que se les pueden pasar unos parmetros. Se sigue la misma secuencia
que en el caso anterior pero aparecen dos diferencias; a) la cabecera PRIMERA
LNEA DEL PROGRAMA que tendra la siguiente forma
function [a,b,...z]=nombre(p1,p2,..pn) donde a,b...z son los parmetros de salida de
la funcin y p1,p2,...pn los parmetros de la funcin; b) la funcin se guarda con
nombre.m.La manera de ejecutarlo desde la lnea de comandos sera de la misma
forma que en la primera lnea de dicha funcin

Ejercicio; implementa Ejercicio; implementa una funcin


la siguiente funcin y function [a,b]=ejemplo(x,y) que, a partir del peso y la estatura,
ejectala a=0.5*(x+y); determine el ndice de masa
comprobando su b=(x.*y).^.5 corporal
funcionamiento Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

18
Acabamos......

Descrgate el documento Introduccion Al Matlab de la pgina web


de la asignatura;

Slo nos centraremos en los dos primeros puntos;


manejo de matrices y bucles. El resto se puede hacer
usando la ayuda de las instrucciones (el famoso
help!!!).

Slo hemos visto una pincelada......pero con esto y la


ayuda de Matlab podemos hacer muchas cosas!!!!

Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

19
MASTER DE INGENIERA
BIOMDICA.
Gua para la realizacin de los
trabajos (I)
Introduccin al Matlab
Profesores: Emilio Soria y Antonio Jos Serrano, Dpto Ingeniera Electrnica, ETSE

20

También podría gustarte