Está en la página 1de 111

Curso rpido de Matlab

Rafael Palacios (dic/2004)


Curso de Matlab - 2
Temario
1. Introduccin a Matlab.
2. Estructuras bsicas de datos.
3. Programacin en Matlab.
4. Estructuras avanzadas de datos.
5. Optimizacin de cdigo.
6. Representaciones grficas.
7. Desarrollo de aplicaciones con Matlab.
29/nov
13/dic
20/dic
Curso de Matlab - 3
Temario (1)
1. Introduccin a Matlab.
Versiones de Matlab,
Mejoras de la versin 7
Entorno de desarrollo,
Ayudas y documentacin,
Toolboxes.
2. Estructuras bsicas de datos.
3. Programacin en Matlab.
4. Estructuras avanzadas de datos.
5. Optimizacin de cdigo.
6. Representaciones grficas.
7. Desarrollo de aplicaciones con Matlab.
Curso de Matlab - 4
Introduccin a Matlab
Qu es Matlab?
Matlab = Matrix Laboratory.
Programa interactivo para realizar clculos
numricos y visualizaciones en el ordenador.
Programa comercial de The Mathworks Inc
(Natick, MA). ht t p: / / www. mat hwor ks. com
Creado en California por J ack Little and Cleve
Moler en 1984, para realizar clculo matricial en
ordenadores sin necesidad de conocimientos de
programacin.
Curso de Matlab - 5
Introduccin a Matlab
Ent or no i nt er ac t i vo
Lenguaj e de pr ogr amac i n
(c on i nt er f ac es ex t er nos For t r an, C...)
Ent or no par a desar r ol l o de apl i c ac i ones
+
+
Curso de Matlab - 6
Versiones de Matlab
Plataformas donde corre Matlab
Sistema Operativo
Unix: Linux, solaris, HP-UX
MacOS
MS-Windows
Arquitectura
RISC: Sparc, HP-PA
PowerMac (G4, G5)
Intel Pentium(III, IV, Xeon, M), AMD (Athlon, Opteron)
Curso de Matlab - 7
Versiones de Matlab
Matlab 5
Grficos de calidad (2D, 3D)
PC: Corre bajo windows utilizando toda la memoria
disponible
Matlab 6
Entorno de desarrollo con interfaz J ava.
Matrices 3D, estructuras, cell arrays
Matlab 7
Mejoras en el interfaz y mejora de Simulink
Matlab compiler admite objetos
Clculo con enteros
Curso de Matlab - 8
Algunas mejoras de Matlab 7
Se puede poner todas las ventanas dentro del entorno de desarrollo
Figuras
command window
Workspace
command history
Curso de Matlab - 9
Algunas mejoras de Matlab 7
Acceso a comandos anteriores
Teclas: PE TAB
Curso de Matlab - 10
Algunas mejoras de Matlab 7
Dibujar grficos directamentes desde el editor de matrices
Tamao mximo
de la matriz:
524288 elementos
Curso de Matlab - 11
Algunas mejoras de Matlab 7
Breakpoints con expresiones condicionales
Curso de Matlab - 12
Algunas mejoras de Matlab 7
Ejecucin del cdigo por secciones (cellenable cell mode)
Ejecucin
seccin por
seccin
Permite repetir la ejecucin de una seccin
cambiando un parmetro de la misma.
Parmetro que estamos retocando
Resultado de la ejecucin de la seccin
Curso de Matlab - 13
Otras mejoras de Matlab 7
Ejecucin/Debugger por secciones de cdigo (Cell Mode)
Generacin automtica de documentacin
Optimizacin de cdigo con M-Lint y profiler (ver cap6)
Mejoras en la generacin automtica de cdigo desde
Simulink
Interactive plot tool (ver cap 6)
Funcin t ext scan para leer archivos
Clculo con variables enteras.
Matrices ms pequeas, cdigo ms rpido. imgenes
Acentos y caracteres internacionales en el editor.
Curso de Matlab - 14
Entorno de desarrollo
Arraque de Matlab
Windows
Inicio/Programas/Matlab 7.0.1/Matlab 7.0.1
icono de Matlab en el escritorio
comando: mat l ab
comando: mat l ab r pr ogr ama
Unix
comando: mat l ab
En IIT comandos: mat l ab, mat l ab5, mat l ab61,
mat l ab65, mat l ab7
Ejemplo til: mat l ab65 - nodi spl ay
(Modo Consola sin grficos)
Curso de Matlab - 15
Entorno de desarrollo
Ventana de
comandos
Curso de Matlab - 16
Comandos bsicos
ver muestra la versin, el cdigo de licencia y
las toolboxes disponibles
Licencia 46431: profesores (para investigacin y
proyectos)
Licencia 205966: aulas (slo para docencia)
whos lista todas las variables disponibles
save ar chi vo guarda todas las variables
save ar chi vo a b guarda las variables a y b
l oad ar chi vo carga variables
qui t salir
Curso de Matlab - 17
Editor
Matlab incorpora un editor que interacciona con
el resto del entorno.
Ejecucin por secciones
en cell mode
Controles del debugger
sintaxis
Curso de Matlab - 18
Ayudas y documentacin
Ayuda en modo texto mediante comandos
hel p f unci n muestra la ayuda de una funcin
hel p vale tanto para las funciones del sistema como para
desarrollos propios
Ayuda de tipo grfico
Start / Help
Hypertext Help Window
Curso de Matlab - 19
Ejemplo de consulta
Secciones de la ayuda
Syntax
Description
Arguments
Examples
Algorithm
Limitations
See Also
Refences
d
e
v
e
l
o
p
e
d

b
y

s
c
h
o
l
a
r
s
Curso de Matlab - 20
Ayuda on-line
Pgina oficial de soporte
ht t p: / / www. mat hwor ks. com/ suppor t /
Documentacin
Soluciones a problemas ordenadas por categoras
Ejemplos de cdigo
Noticias
Actualizaciones
Matlab Central
Newsgroups
File Exchange
Link Exchange
Soporte tcnico personal por correo electrnico
Utilizar un cdigo de licencia vlido
Describir la plataforma
Acotar el problema
Curso de Matlab - 21
Toolboxes
Libreras especializadas en materias concretas. Incluyen:
Manuales tipo tutorial (User's Guide) [HTML, PDF]
Referencia de las funciones (Reference Guide) [HTML, PDF]
Programas de demo
Aplicaciones completas listas para utilizar
Curso de Matlab - 22
Ejemplos de Toolboxes
>> ver
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MATLAB Ver si on 6. 5. 0. 180913a ( R13)
MATLAB Li cense Number : 46431
Oper at i ng Syst em: SunOS 5. 8 Gener i c_108528- 29 sun4u
J ava VM Ver si on: J ava 1. 3. 1_02 wi t h Sun Mi cr osyst ems I nc. J ava Hot Spot ( TM) Ser ver VM
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MATLAB Ver si on 6. 5 ( R13)
Si mul i nk Ver si on 5. 0 ( R13)
Cont r ol Syst emTool box Ver si on 5. 2 ( R13)
Fuzzy Logi c Tool box Ver si on 2. 1. 2 ( R13)
I mage Pr ocessi ng Tool box Ver si on 3. 2 ( R13)
MATLAB Compi l er Ver si on 3. 0 ( R13)
MATLAB Web Ser ver Ver si on 1. 2. 2 ( R13)
Mu- Anal ysi s and Synt hesi s Tool box Ver si on 3. 0. 7 ( R13)
Neur al Net wor k Tool box Ver si on 4. 0. 2 ( R13)
Nonl i near Cont r ol Desi gn Bl ockset Ver si on 1. 1. 6 ( R13)
Opt i mi zat i on Tool box Ver si on 2. 2 ( R13)
Real - Ti me Wor kshop Ver si on 5. 0 ( R13)
Robust Cont r ol Tool box Ver si on 2. 0. 9 ( R13)
SB2SL ( conver t s Syst emBui l d t o Si mu. . . Ver si on 2. 5 ( R13)
Si gnal Pr ocessi ng Tool box Ver si on 6. 0 ( R13)
Syst emI dent i f i cat i on Tool box Ver si on 5. 0. 2 ( R13)
>> dat e
ans =
27- Nov- 2004
Curso de Matlab - 23
Otras Toolboxes
Application Areas
Technical Computing
Mathematical computation, analysis, visualization, and algorithm
development
Control Design
Model-Based Design for control systems, including simulation, rapid
prototyping, and code generation for embedded systems
Signal Processing and Communications
Model-Based Design for signal processing and communication systems,
including simulation, code generation, and verification
Image Processing
Image acquisition, analysis, visualization, and algorithm development
Test & Measurement
Hardware connectivity and data analysis for test and measurement
applications
Financial Modeling and Analysis
Financial modeling, analysis, and application deployment
ht t p: / / www. mat hwor ks. com/ pr oduct s/
Curso de Matlab - 24
Temario (2)
1. Introduccin a Matlab.
2. Estructuras bsicas de datos.
Variables
Vectores y matrices
Ejemplos de operaciones
Tipos de datos
3. Programacin en Matlab.
4. Estructuras avanzadas de datos.
5. Optimizacin de cdigo.
6. Representaciones grficas.
7. Desarrollo de aplicaciones con Matlab.
Curso de Matlab - 25
Variables
Matlab no requiere declarar ni dimensionar
variables
Las variables se auto-declaran al inicializarlas
La memoria se reasigna dinmicamente
>> x=5;
>> y=20;
>> z=x*y
z =
100
>> dat os=l oad( ' dat os. t xt ' ) ;
>> cadena=' hol a' ;
poniendo ';' se realiza la asignacin pero no se muestra el resultado
sin poner ';' se puestra el resultado final
Curso de Matlab - 26
Vectores y Matrices
Matlab considera que todas las variables son
matrices (vectores y escalares son casos
particulares).
>> x=[ 1, 2, 3, 5, 7, 11, 13] ; [ 1 2 3 5 7 11 13 ]
>> x=[ 1 2 3 5 7 11 13] ; [ 1 2 3 5 7 11 13 ]
>> y=1: 5; [ 1 2 3 4 5 ]
>> par es=2: 2: 10; [ 2 4 6 8 10 ]
>> i mp_down=9: - 2: 1; [ 9 7 5 3 1 ]
>>a( 5) =7; [ 0 0 0 0 7 ]
Ejemplos de inicializacin de vectores fila
Curso de Matlab - 27
Vectores y Matrices
>> x=[ 1; 2; 3; 5; 7; 11; 13]
x =
1
2
3
5
7
11
13
>> x=[ 1, 2, 3, 5, 7, 11, 13] ' ;
Ejemplos de inicializacin de vectores columna
traspuesta
Vector fila
Curso de Matlab - 28
Vectores y Matrices
>> M = [ 1 2 3; 4 5 6; 7 8 9] ;
>> cer os=zer os( 2, 5) ;
>> unos=ones( 3, 4) ;
>> M2=[ 20, 21, 22; M] ;
>> M2=[ [ 20, 21, 22] ; M] ;
>> M3=[ [ 15; 16; 17] , M] ;
>> al eat or i o=r and( 20, 30) ;
>> nor mal =r andn( 20, 30) ;
Ejemplos de inicializacin de Matrices
1 2 3
4 5 6
7 8 9
0 0 0 0 0
0 0 0 0 0
1 1 1 1
1 1 1 1
1 1 1 1
20 21 22
1 2 3
4 5 6
7 8 9
15 1 2 3
16 4 5 6
17 7 8 9
Curso de Matlab - 29
Acceso a los elementos de una matriz
Matlab utiliza los parntisis para acceder a
elementos de la matriz
Los subndices empiezan en 1, por lo tanto el
primer elemento es a( 1, 1)
Ejemplo: a( 3, 5) =56. 8;
0. 1737 0. 3421 0. 6391 0. 1632 0. 2313
0. 7858 0. 7742 0. 0934 0. 2763 0. 8453
0. 3656 0. 1478 0. 9288 0. 1310 0. 7264
0. 7769 0. 1482 0. 4851 0. 0232 0. 6947
0. 1737 0. 3421 0. 6391 0. 1632 0. 2313
0. 7858 0. 7742 0. 0934 0. 2763 0. 8453
0. 3656 0. 1478 0. 9288 0. 1310 56. 8000
0. 7769 0. 1482 0. 4851 0. 0232 0. 6947
Curso de Matlab - 30
Acceso a los elementos de una matriz
Se pueden utilizar vectores para definir ndices
Ejemplo 1: a( 2: 3, 1: 4) =zer os( 2, 4) ;
o bien: a( 2: 3, 1: 4) =0;
0. 1737 0. 3421 0. 6391 0. 1632 0. 2313
0. 7858 0. 7742 0. 0934 0. 2763 0. 8453
0. 3656 0. 1478 0. 9288 0. 1310 56. 8000
0. 7769 0. 1482 0. 4851 0. 0232 0. 6947
0. 1737 0. 3421 0. 6391 0. 1632 0. 2313
0 0 0 0 0. 8453
0 0 0 0 56. 8000
0. 7769 0. 1482 0. 4851 0. 0232 0. 6947
Curso de Matlab - 31
Acceso a los elementos de una matriz
Se pueden utilizar vectores para definir ndices
Ejemplo 2: a( [ 2, 3] , [ 2, 4] ) =ones( 2, 2) ;
o bien: a( [ 2, 3] , [ 2, 4] ) =0;
0. 1737 0. 3421 0. 6391 0. 1632 0. 2313
0 0 0 0 0. 8453
0 0 0 0 56. 8000
0. 7769 0. 1482 0. 4851 0. 0232 0. 6947
0. 1737 0. 3421 0. 6391 0. 1632 0. 2313
0 1. 0000 0 1. 0000 0. 8453
0 1. 0000 0 1. 0000 56. 8000
0. 7769 0. 1482 0. 4851 0. 0232 0. 6947
Curso de Matlab - 32
Acceso a los elementos de una matriz
El operador ' : ' se utiliza para indicar "todos los
elementos"
0. 1737 0. 3421 0. 6391 0. 1632 0. 2313
0. 7858 0. 7742 0. 0934 0. 2763 0. 8453
0. 3656 0. 1478 0. 9288 0. 1310 56. 8000
0. 7769 0. 1482 0. 4851 0. 0232 0. 6947
a( 3, : )
si ze( a( 3, : ) ) [ 1 5]
a( : , 2)
si ze( a( : , 2) ) [ 4 1]
a( : ) t odos l os el ement os
si ze( a( : ) ) [ 20 1]
todo en un vector columna
Curso de Matlab - 33
Acceso a los elementos de una matriz
El operador ' end' significa "ltimo elemento"
Ejemplo: Vector de diferencias
>> t =1: 0. 1: 2;
>> y=si n( 2*pi *t ) ;
>> di f er enci as=[ NaN; y( 2: end) - y( 1: end- 1) ] ;
1. 00 1. 10 1. 20 1. 30 1. 40 1. 50 1. 60 1. 70 1. 80 1. 90 2. 00
- 0. 00 0. 59 0. 95 0. 95 0. 59 0. 00 - 0. 59 - 0. 95 - 0. 95 - 0. 59 - 0. 00
NaN 0. 59 0. 36 0. 00 - 0. 36 - 0. 59 - 0. 59 - 0. 36 - 0. 00 0. 36 0. 59
t =
y =
di f er enci as =
Curso de Matlab - 34
Operaciones bsicas
Operaciones aritmticas: + - * / ^
Matlab trabaja con matrices, a diferencia de otros lenguajes
que slo trabajan con escalares
Operaciones elemento a elemento: + - .* ./ .^
>> a=r and( 2, 5) ;
>> b=r and( 5, 2) ;
>> c=a*b; %mat r i z de 2x2
>> d=b*a; %mat r i z de 5x5
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
mn = magi c( 4) ;
345 257 281 273
257 313 305 281
281 305 313 257
273 281 257 345
256 4 9 169
25 121 100 64
81 49 36 144
16 196 225 1
mn*mn
mn^2
mn. *mn
mn. ^2
Curso de Matlab - 35
Otras operaciones matriciales
Suma: sum
>> b=sum( A) ; %como a es mat r i z, se suma por col umnas y b es un vect or f i l a
>> c=sum( b) ; %como b es vect or , se suman t odos sus el ement os
>> c=sum( sum( a) ) ; %suma t odos l os el ement os de l a mat r i z a
>> c=sum( a( : ) ) ; %suma t odos l os el ement os de l a mat r i z a
Media y desviacin: m=mean( A) ; si gma=st d( A) ;
Elementos de la diagonal: v=di ag( A) ;
Left division: x=A\ B; La solucin por mnimos cuadrados de A x =b se obtiene mediante x =A \ b;
Determinante: c=det ( A) ;
Inversa: B=i nv( A) ;
Autovalores: v=ei n( A) ;
Valor absoluto mdulo de complejos: B=abs( A) ;
Curso de Matlab - 36
Otras operaciones
Trig: si n, cos, t an, asi n, acos, at an, si nh,
cosh, t anh, asi nh, acosh, at anh
Rounding: f l oor , cei l , r ound, f i x
Modular: r em, mod
Exponential: exp, l og, l og2, l og10, sqr t
Primes: f act or , pr i mes
Curso de Matlab - 37
Tipos de datos
Matlab opera normalmente en formato double segn el
estndar IEEE
>> a=123/ 0
War ni ng: Di vi de by zer o.
a =
I nf
>> b=0/ 0
War ni ng: Di vi de by zer o.
b =
NaN
>> I nf - I nf
ans =
NaN
>> c=15+sqr t ( - 1)
c =
15. 0000 + 1. 0000i
Maneja correctamente los valores
Inf (infinito) y NaN (not-a-number)
Complejos automticos
Curso de Matlab - 38
Tipos de datos
Matrices reales
double
single
Matrices enteras
int8, uint8
int16, uint16
int32, uint32
int64, uint64
Otros
char
logical
cell
struct
r eal mi n2. 2251e- 308, r eal max1. 7977e+308, eps2. 2204e- 016
r eal mi n1. 1755e- 038, r eal max3. 4028e+038, eps1. 1921e- 007
Curso de Matlab - 39
Tipos de datos: Matrices dispersas
Las matrices dispersas ahorran memoria y los
calculos son ms eficientes
Todas las operaciones de matrices funcionan
con matrices dispersas
Si se vuelve ineficiente, se convierte
automticamente a matriz normal
s = spar se( 1000, 1000) ;
s( 2, 11) = 2;
s( 992, 875) = 3;
s( 875, 992) = 4. 7;
s=s+3; %s dej a de ser di sper sa
Curso de Matlab - 40
Temario (3)
1. Introduccin a Matlab.
2. Estructuras bsicas de datos.
3. Programacin en Matlab.
Scripts
Funciones
Expresiones lgicas
Control de flujo
4. Estructuras avanzadas de datos.
5. Optimizacin de cdigo.
6. Representaciones grficas.
7. Desarrollo de aplicaciones con Matlab.
Curso de Matlab - 41
Scripts
Un script es una secuencia de instrucciones de
Matlab guardada en un archivo con extensin . m
%Scr i pt de ej empl o
%%I ni ci o
a=magi c( 4) ;
f pr i nt f ( ' I ni ci o cl cul os\ n' ) ;
%%Tr aza
t r aza=sum( di ag( a) ) ;
%%Resul t ado
f pr i nt f ( ' La t r aza val e: %f \ n' , t r aza)
ej em_scr i pt . m
Se ejecuta escribiendo su nombre:
>> ej em_scr i pt
Curso de Matlab - 42
Funciones (llamada)
Las funciones puede recibir varios valores y devolver
varios resultados
[ m, d] =med_des( x) ;
Puede haber argumentos opcionales
mi t =i mr ead( ' camer aman. t i f ' , ' TI FF' ) ;
mi t =i mr ead( ' camer aman. t i f ' ) ;
No es necesario asignar todos los valores retornados
[ mi t , map] =i mr ead( ' i mageman. gi f ' ) ;
mi t =i mr ead( ' i mageman. gi f ' ) ;
Curso de Matlab - 43
Funciones (definicin)
Las funciones se escriben en archivos . mque
deben encontrarse en el directorio actual (o en
un directorio definido en el pat h)
f unct i on [ med, des] =med_des( x)
%Funci ona par a cal cul ar l a medi a y l a desvi aci n a l a vez
% [ med, des] =med_des( x)
%
%Raf ael Pal aci os ( nov/ 2004)
med=mean( x( : ) ) ;
des=st d( x( : ) ) ;
Informacin que aparece al hacer hel p med_des
Med_des. m
Curso de Matlab - 44
Funciones
La variable nar gi n (local de la funcin) es el
nmero de argumentos recibidos.
La variable nar gout (local de la funcin) es el
nmero de argumentos que se recogern en la
llamada. Puede ahorrarnos unos clculos.
Todos los argumentos llegan por valor, no es
posible hacer paso por referencia.
Los scripts comparten las variables del
workspace, mientras que las funciones
utilizan variables en local
Curso de Matlab - 45
Expresiones lgicas
Operadores relacionales: ~= == > < >= <=
Operadores lgicos:
&& Short-circuit AND
| | Short-circuit OR
& AND
| OR
Hay una funcin xor , pero no es un operador
Curso de Matlab - 46
Control de Flujo: if
bloque i f
i f r em( n, 2) ~= 0
M = odd_magi c( n)
el sei f r em( n, 4) ~= 0
M = si ngl e_even_magi c( n)
el se
M = doubl e_even_magi c( n)
end
i f a > b
t mp=a;
a=b;
b=t mp;
end
A diferencia de C, en Matlab no es necesario utilizar parntesis en la expresin lgica
Curso de Matlab - 47
Control de Flujo: for
bucle f or
a=[ ] ;
f or n = [ 1 2 3 5 7 11 ]
a = [ a, i spr i me( n) ] ;
end
f or n = 3: 32
r ( n) = r ank( magi c( n) ) ;
end
Curso de Matlab - 48
Control de Flujo: while
bucle whi l e
whi l e ~i spr i me( x)
x = x + 1;
end
Curso de Matlab - 49
Control de Flujo: switch
swi t ch- case
swi t ch ( r em( n, 4) ==0) +( r em( n, 2) ==0)
case 0
M = odd_magi c( n)
case 1
M = si ngl e_even_magi c( n)
case 2
M = doubl e_even_magi c( n)
ot her wi se
er r or ( ' Thi s i s i mpossi bl e' )
end
A diferencia de C, en Matlab no hace falta utilizar br eak.
Curso de Matlab - 50
Control de Flujo: try
t r y- cat ch
t r y
st at ement
. . .
st at ement
cat ch
st at ement
. . .
st at ement
end
Las instrucciones comprendidas entre cat ch y end slo se ejecutan si se produce
un error en las primeras. Utilizar l ast er r para ver el ltimo error.
Curso de Matlab - 51
Temario (4)
1. Introduccin a Matlab.
2. Estructuras bsicas de datos.
3. Programacin en Matlab.
4. Estructuras avanzadas de datos.
Todos los tipos de datos
Cadenas de caracteres
Estructuras y Cells arrays
Matrices de N dimensiones (arrays)
Date and time
5. Optimizacin de cdigo.
6. Representaciones grficas.
7. Desarrollo de aplicaciones con Matlab.
Curso de Matlab - 52
Todos los tipos de datos
Matlab tiene en total 15 tipos de datos que se
utilizan para formar matrices o arrays
Adicionalmente existen tipos de datos definibles por el usuario para programacin orientada
a objetos: user classes, y Java classes
Curso de Matlab - 53
Identificacin del tipo de dato
Descripcin del tipo de dato
Identificacin lgica
i si nt eger ( x)
i sf l oat ( x)
i schar ( x)
i sl ogi cal ( x)
i scel l ( x)
i sst r uct ( f echa)
i sempt y( [ ] )
i si nf ( I nf )
i snan( NaN)
>> t i po=cl ass( x)
t i po =
doubl e
>>
i nt 8, ui nt 8
i nt 16, ui nt 16
i nt 32, ui nt 32
i nt 64, ui nt 64
si ngl e
doubl e
Curso de Matlab - 54
Conversin de tipos numricos
La conversin se realiza utilizando el nombre del
tipo como si fuese una funcin
>> a=r andn( 5, 7)
a =
- 0. 4326 1. 1909 - 0. 1867 0. 1139 0. 2944 0. 8580 - 0. 3999
- 1. 6656 1. 1892 0. 7258 1. 0668 - 1. 3362 1. 2540 0. 6900
0. 1253 - 0. 0376 - 0. 5883 0. 0593 0. 7143 - 1. 5937 0. 8156
0. 2877 0. 3273 2. 1832 - 0. 0956 1. 6236 - 1. 4410 0. 7119
- 1. 1465 0. 1746 - 0. 1364 - 0. 8323 - 0. 6918 0. 5711 1. 2902
>> b=i nt 8( a)
b =
0 1 0 0 0 1 0
- 2 1 1 1 - 1 1 1
0 0 - 1 0 1 - 2 1
0 0 2 0 2 - 1 1
- 1 0 0 - 1 - 1 1 1
Matlab aplica redondeo en la conversin a enteros
Curso de Matlab - 55
Conversin de tipos numricos
Funciones de redondeo
r ound: redondea al entero ms prximo
f l oor : redondea hacia -Inf
cei l : redondea hacia +Inf
f i x: redondea hacia cero
>> cl ass( r ound( 3. 5) )
ans =
doubl e
>> b( 4. 7)
??? Subscr i pt i ndi ces must ei t her be r eal posi t i ve i nt eger s or l ogi cal s.
>> b( r ound( 4. 7) )
ans =
- 1
No cambia el tipo de dato
Es til para calcular ndices
Curso de Matlab - 56
Cadenas de caracteres
En Matlab las cadenas de caracteres son vectores de tipo
char (igual que en C)
>> st r =' Hel l o Wor l d' ;
>> whos
Name Si ze Byt es Cl ass
st r 1x11 22 char ar r ay
Gr and t ot al i s 11 el ement s usi ng 22 byt es
>> st r ( 7)
ans =
W
>> st r =[ ' H' , ' o' , ' l ' , ' a' ] ;
>> nombr es( 1, : ) =' Raf ael ' ;
>> nombr es( 2, : ) =' Ana ' ;
Para utilizar variables que contengan ms de una cadena de caracteres es necesario que todas las
cadenas tengan la misma longitud. Esto se facilita con la funcin de conversin char :
>> nombr es=char ( ' Raf ael ' , ' Ana' ) ;
Utilizando cell arrays se puede almacenar cadenas de distintas logitudes
Curso de Matlab - 57
Cadenas de caracteres
Comparacin de cadenas de caracteres
El operador == trata las cadenas como vectores
st r cmp: compara cadenas y retorna 1 para cierto
y 0 para falso. (OJ O: distinto que en C).
Otras funciones de comparacin: st r ncmp,
st r cmpi , st r ncmpi
A = ' f at e' ;
B = ' cake' ;
A == B
ans =
0 1 0 1
Curso de Matlab - 58
Cadenas de caracteres
Otras funciones de cadenas de caracteres
st r r ep: tpico find-and-replace
cadena=st r r ep( cadena, ' busca' , ' sust i t uye' ) ;
f i ndst r : busca una cadena dentro de otra
posi ci on = f i ndst r ( ' busca' , cadena) ;
st r cat : concatena 2 o ms cadenas
t ext o = st r cat ( cadena1, cadena2, cadena3) ;
spr i nt f : construye una cadena a partir de
variables. Equivale a spr i nt f de C
cadena=spr i nt f ( ' Tengo %6. 2f EUR' , mi _di ner o) ;
Curso de Matlab - 59
Estructuras y cell arrays
Las estructuras permite almacenar valores de
diferente naturaleza bajo un nombre de variable
No requiere definicin previa
se accede a los campos igual que en C
Vectores de estructuras se obtienen
dinmicamente aadiendo elementos
>> punt o. x=123;
>> punt o. y=34;
>> punt o. col or =' r ed' ;
>> punt o
punt o =
x: 123
y: 34
col or : ' r ed'
>> punt o( 2) . x=435;
Curso de Matlab - 60
Estructuras y cell arrays
Se puede acceder a un campo concreto
poniendo el nombre del campo en una cadena
de caracteres:
>> punt o. x=123;
>> punt o. y=34;
>> punt o. col or =' r ed' ;
>> punt o
punt o =
x: 123
y: 34
col or : ' r ed'
>> campo=' col or ' ;
>> punt o. ( campo)
ans =
r ed
Curso de Matlab - 61
Estructuras y cell arrays
Un cell array permite construir vectores en las que cada
elemento es de un tipo diferente:
Se utilizan llaves {}en lugar de corchetes [ ] o parntesis ( )
La diferencia con las estructuras es que se accede a los
valores utilizando un ndice en lugar del nombre del campo
Trabajar con estructuras es muy ineficiente
>> c={12, ' Red' , magi c( 4) };
>> c
c =
[ 12] ' Red' [ 4x4 doubl e]
>> b{1}=12;
>> b{2}=' Red' ;
>> b{3}=magi c( 4) ;
>> b
b =
[ 12] ' Red' [ 4x4 doubl e]
Curso de Matlab - 62
Estructuras y cell arrays
Un cell array permite contruir matrices en las que
cada fila es diferente:
>> a{1, 1} = 12;
>> a{1, 2} = ' Red' ;
>> a{1, 3} = magi c( 4) ;
>> a{2, 1}=ones( 3) ;
>> a{2, 2}=43;
>> a{2, 3}=' t ext o' ;
>> a
a =
[ 12] ' Red' [ 4x4 doubl e]
[ 3x3 doubl e] [ 43] ' t ext o'
>>
til para algo?
Curso de Matlab - 63
Estructuras y cell arrays
Utilizando ( ) accedo a un elemento, que es tipo cell
Utilizando {}accedo al valor
>> a
a =
[ 12] ' Red' [ 4x4 doubl e]
[ 3x3 doubl e] [ 43] ' t ext o'
>> cl ass( a)
ans =
cel l
>> cl ass( a( 1, 1) )
ans =
cel l
>> cl ass( a{1, 1})
ans =
doubl e
Curso de Matlab - 64
Estructuras y cell arrays
Ejemplo de acceso a base de datos (database toolbox)
conn=dat abase( ' base_de_dat os_ODBC' , ' usuar i o' , ' passwor d' ) ;
quer y=' SELECT t o_number ( PROD) , HORA, EST FROM TB_CENT WHERE CENTRAL=' ' ROBLA' ' ' ;
cur s=exec( conn, quer y) ;
cur s=f et ch( cur s) ;
f or i =1: si ze( cur s. Dat a, 1)
pr oducci ones( i ) =cur s. Dat a{i , 1};
hor as( i ) =cur s. Dat a{i , 2};
est ados( i ) =cur s. Dat a{i , 3};
end
cl ose( cur s) ;
cl ose( conn) ;
Curso de Matlab - 65
Matrices de N dimensiones
Las matrices de ms de 2 dimensiones se
llaman Multidimensional Arrays
Matlab soporta todas las operacones
matemticas en matrices de N dimensiones
Curso de Matlab - 66
Matrices de N dimensiones
>> c=i mr ead( ' aut umn. t i f ' ) ;
>> whos c
Name Si ze Byt es Cl ass
c 206x345x3 213210 ui nt 8 ar r ay
Gr and t ot al i s 213210 el ement s usi ng 213210 byt es
>> i mshow( c)
>> max( c( : ) )
ans =
248
>> gr i s=( c( : , : , 1) +c( : , : , 2) +c( : , : , 3) ) / 3;
>> i mshow( gr i s)
todos los elementos
Curso de Matlab - 67
Date and Time
Matlab representa fechas y horas en tres formatos:
cadena de caracteres
valor numrico (nmero de das desde 1/ene/0000)
vector numrico [ao, mes, da, hora, min, sec]
Tiene en cuenta aos bisiestos
No tiene en cuenta hora UTC/hora local ni cambios
de hora invierno/verano
date
now
clock
Curso de Matlab - 68
Date and Time
Funciones de conversin
Ejemplo de manejo de fechas
f unct i on f echa_cor r egi da=FechaCambi o( f echa_cal cul o, di as)
%
%Obt i ene una nueva est r uct ur a de f echa adel ant ando o r et r asando di as
%f unct i on f echa_cor r egi da=FechaCambi o( f echa_cal cul o, di as)
% f echa_cor r egi da y f echa_cal cul o son est r uct ur as con l os campos di a, mes, aNo.
%
%Ej empl o: f unct i on f echa_cor r egi da=FechaCambi o( f echa_cal cul o, - 1) ; %di a ant er i or
%
%Raf ael Pal aci os Nov/ 2004
%
f echa_num=dat enum( f echa_cal cul o. aNo, f echa_cal cul o. mes, f echa_cal cul o. di a) ;
f echa_num=f echa_num+di as;
f echa_vec=dat evec( f echa_num) ;
f echa_cor r egi da. aNo=f echa_vec( 1) ;
f echa_cor r egi da. mes=f echa_vec( 2) ;
f echa_cor r egi da. di a=f echa_vec( 3) ;
tambin f pr i nt f
Curso de Matlab - 69
Temario (5)
1. Introduccin a Matlab.
2. Estructuras bsicas de datos.
3. Programacin en Matlab.
4. Estructuras avanzadas de datos.
5. Optimizacin de cdigo.
Medida de tiempos: tic, toc, cputime
Anlisis del cdigo: profiler, M-Lint
Orden de los bucles
Predeclaracin de variables
Find en lugar de for
Variables globales
Compilador
6. Representaciones grficas.
7. Desarrollo de aplicaciones con Matlab.
Curso de Matlab - 70
Medida de tiempos
Funciones bsicas para medir tiempos
t i c y t oc miden el tiempo en segundos
cput i me indica el tiempo de CPU en segundos
>> t i c; i nv( i nv( i nv( r andn( 1000) ) ) ) ; t oc
El apsed t i me i s 10. 015000 seconds.
>> t =cput i me; i nv( i nv( i nv( r andn( 1000) ) ) ) ; e=cput i me- t
e =
9. 5137
t i c
f or k = 1: 100
- - pr ogr ama r pi do - -
end
t oc
Curso de Matlab - 71
Anlisis del cdigo
pr of i l er genera un informe del rendimiento de
un programa
>> pr of i l e on
>> i nv( i nv( i nv( r andn( 1000) ) ) ) ;
>> pr of i l e of f
>> pr of i l e r epor t
Modo comandos:
>> pr of i l e vi ewer
Modo grfico:
Profiler nos indica qu funcin
merece la pena optimizar.
Curso de Matlab - 72
Anlisis del cdigo
M- Li nt analiza el cdigo e identifica posibles
problemas y posibles puntos de mejora de
rendimiento.
Curso de Matlab - 73
Optimizacin de bucles
Al ser un lenguaje interpretado, los bucles son
muy lentos
>> t i c, f or t =1: 100, pr ueba, end, t oc
El apsed t i me i s 3. 856000 seconds.
>> t i c, f or t =1: 100, pr ueba2, end, t oc
El apsed t i me i s 2. 554000 seconds.
>> t i c, f or t =1: 100, suma=sum( z( : ) ) ; end, t oc
El apsed t i me i s 1. 893000 seconds.
%pr ueba
suma=0;
f or i =1: 1000
f or j =1: 1000
suma=suma+z(i,j);
end
end
%pr ueba2
suma=0;
f or i =1: 1000
f or j =1: 1000
suma=suma+z(j,i);
end
end
Curso de Matlab - 74
Predeclaracin de variables
La predeclaracin evita que Matlab reasigne
memoria dinmicamente
>> t i c, pr ueba, t oc
El apsed t i me i s 54. 589000 seconds.
>> t i c, f or t =1: 100, pr ueba2, end, t oc
El apsed t i me i s 10. 846000 seconds.
%pr ueba
f or i =1: 1000
f or j =1: 1000
z2( j , i ) =z( j , i ) ;
end
end
%pr ueba2
z2=ones( si ze( z) ) ;
f or i =1: 1000
f or j =1: 1000
z2( j , i ) =z( j , i ) ;
end
end
500 veces ms rpido!!!!
Nota: Estos tiempos no mejoran utilizando el compilador porque son retrasos del sistema operativo, no de
Matlab. En Unix el cdigo malo es 50 veces ms lento, en lugar de 500 veces ms lento.
Curso de Matlab - 75
Find en lugar de for
En muchas ocasiones se puede utilizar f i nd en
lugar de realizar un bucle
f i nd devuelve un vector con los ndices de un
vector que corresponden a valores "true"
>> t i c, f or t =1: 100, pr ueba, end, t oc
El apsed t i me i s 2. 293000 seconds.
>> t i c, f or t =1: 100, l engt h( f i nd( c>200) ) ; end, t oc
El apsed t i me i s 1. 062000 seconds.
%pr ueba i magen
num=0;
f or i =1: si ze( c, 1)
f or j =1: si ze( c, 2)
f or k=1: si ze( c, 3)
i f c( i , j , k) >200
num=num+1;
end
end
end
end
Ejemplo: Busco los pixels con nivel mayor de 200
Nota: este ejemplo no es muy significativo
Curso de Matlab - 76
Find en lugar de for
>> c=i mr ead( ' aut umn. t i f ' ) ;
>> t i c, f or t =1: 100, pr ueba, end, t oc
El apsed t i me i s 2. 293000 seconds.
>> c=i mr ead( ' aut umn. t i f ' ) ;
>> t i c, f or t =1: 100, c( f i nd( c>200) ) =0; end, t oc
El apsed t i me i s 0. 611000 seconds.
%pr ueba i magen
f or i =1: si ze( c, 1)
f or j =1: si ze( c, 2)
f or k=1: si ze( c, 3)
i f c( i , j , k) >200
c( i , j , k) =0;
end
end
end
end
Ejemplo2: Pongo a cero los pixels con nivel mayor de 200
c>200 genera una matriz 3D de ceros y unos
f i nd( c>200) genera un vector con los ndices que valen 1
c( f i nd( c>200) ) equivale a decir c( [ 23, 267, . . . ] )
Curso de Matlab - 77
Find en lugar de for
Otras funciones tiles al estilo de find son:
al l : determina si todos los elementos son nonzero
I f al l ( A>0. 5)
any: determina si algn elemento es nonzero
I f any( A>0. 5)
r eshape: reorganiza los elementos de una matriz para
adaptarse a otras dimensiones
sor t : ordena elementos y obtiene una tabla de ndices de
ordenacin
f unct i on x=al eat ( r ango)
%%f unct i on x=al eat ( r ango)
% Gener a una l i st a de nmer os al eat or i os no r epet i dos de t amao r ango
%
z=r and( 1, r ango) ;
[ s, x] =sor t ( z) ;
Curso de Matlab - 78
Variables globales
En las llamadas a funcin el paso de variables
es por valor
Hay muchas llamadas del tipo:
mi _f echa=Di aSi gui ent e( mi _f echa) ;
En general las funciones que transforman
matrices muy grandes son ineficiente debido al
uso de la memoria
Nota: Aunque desde el punto de vista del programador las variables van por valor, Matlab es "listo" no
siempre copia la variable en el stack. Matlab generalmente hace el paso por referencia y slo copia la
variable si la funcin la modifica (para proteger los valores originales)
Curso de Matlab - 79
Variables globales
Utilizar variables globales no es muy
estructurado, pero en caso de matrices grandes
evita asignaciones de memoria
gl obal GRAVI TY
GRAVI TY = 32;
y = f al l i ng( ( 0: . 1: 5) ' ) ;
f unct i on h = f al l i ng( t )
gl obal GRAVI TY
h = 1/ 2*GRAVI TY*t . ^2;
Curso de Matlab - 80
Compilador
Convierte cdigo Matlab a C y permite crear un
ejecutable indepenciente
El programa resultante no requiere licencia
Ejecuta ms deprisa por estar compilado
Compila funciones, no scripts
mbui l d - set up
Instalacin: La primera vez hay que seleccionar el compilador por defecto
mcc mpr ueba. m
Comando general para compilar
Curso de Matlab - 81
Compilador
El compilador permite crear los siguientes
elementos:
Aplicacin independiente: mcc mf i l e1. m
Libreras de funciones: mcc l f i l e1. m
COM object (component object model)
Excel Add-in
Curso de Matlab - 82
Compilador
Para instalar una aplicacin en un ordenador que no
tenga Matlab:
Crear un CD en el ordenador de desarrollo con:
pr ueba. exe
pr ueba.ct f
<mat l abr oot >\ t ool box\ compi l er \ depl oy\ wi n32\ MCRI nst al l er . exe
En el ordenador de destino:
Instalar MCRI nst al l er en C: \ MCR (por ejemplo)
Asegurarse de que c: \ MCR\ r unt i me\ wi n32 est en el PATH
Copiar pr ueba. exe y pr ueba. ct f al directorio de la aplicacin.
Curso de Matlab - 83
Temario (6)
1. Introduccin a Matlab.
2. Estructuras bsicas de datos.
3. Programacin en Matlab.
4. Estructuras avanzadas de datos.
5. Optimizacin de cdigo.
6. Representaciones grficas.
Tipos de grficos
Crear grficos con plot y surf
Retoque de grficos desde men
Guardar grficos: hgsave, hgload, print
Creacin de animaciones
7. Desarrollo de aplicaciones con Matlab.
Curso de Matlab - 84
Crear grficos
Matlab permite crear grficos de varios tipos,
que se utilizan para:
visualizar el contenido de las variables
crear imgenes/pelculas/VR/GIS
generar interfaces de usuario (ver captulo 7)
Curso de Matlab - 85
Crear/ajustar grficos
Crear grficos desde el editor de matrices (Permite representar
filas, columnas o regiones mediante varios tipos de grficos)
Curso de Matlab - 86
Seleccin del tipo de grfico
Matrix editor
Categories
Plot types
Description and function
references
Curso de Matlab - 87
Tipos de grficos (1D, 2D)
Line Stem & stair
Scatter
Histogram
Polar
Bar Pie
Curso de Matlab - 88
Tipos de grficos (>=3D)
3D surfaces Volumetrics Vector Fields
Images
Contour Analytic
Curso de Matlab - 89
Crear grficos con plot
pl ot ( Y)
pl ot ( X1, Y1, . . . )
pl ot ( X1, Y1, Li neSpec, . . . )
pl ot ( . . . , ' Pr oper t yName' , Pr oper t yVal ue, . . . )
>>plot(yy,'o-')
>>hold on; stem(yy); hold off
>>grid on
>>plot(xx,yy,'o-')
>>hold on; stem(xx,yy); hold off
>>grid on
Curso de Matlab - 90
Crear grficos con plot
pl ot ( x, y, ' r x- ' ) ;
y yel l ow
m magent a
c cyan
r r ed
g gr een
b bl ue
w whi t e
k bl ack
. punt o
o
x
+
*
- l nea cont i nua
: l nea de punt os
- . punt o y r aya
- - l nea di scont i nua
pl ot ( x, y1, ' r x- ' , x, y2, ' g- - ' ) ;
pl ot ( x, y1, ' r x- ' ) ;
hol d on;
pl ot ( x, y2, ' g- - ' ) ;
hol d of f ;
Truco: Para pintar una lnea:
hol d on
pl ot ( [ x1, x2] , [ y1, y1] , ' k' ) ;
hol d of f
Curso de Matlab - 91
Texto en grficos
xl abel ( ' Ej e X' ) ;
yl abel ( ' Ej e y' ) ;
zl abel ( ' Ej e z' ) ;
t i t l e( ' T t ul o de l a gr f i ca' ) ;
t ext ( x, y, ' Text o en ( x, y) ' ) ;
Truco: Los texto admiten expresiones tipo Latex
t i t l e( ' Gr f i ca: \ al pha + x_3^2' )
Curso de Matlab - 92
Subplots: varios grficos por figura
subpl ot ( 4, 2, 3)
pl ot ( r and( 10, 2) )
subpl ot ( ' posi t i on' , [ 0. 2, 0. 6, 0. 7, 0. 3] )
0.2
0.6
0.7
0.3
Curso de Matlab - 93
Grficos de superficies
sur f ( Z)
sur f ( X, Y, Z)
sur f ( X, Y, Z, C)
x=[ - 20, - 10, - 5, - 2, - 1, 0, 1, 2, 5, 10, 20] / 10;
y=x;
[ X, Y] =meshgr i d( x, y) ;
Z=cos( X) +cos( Y) ;
subpl ot ( 2, 2, 1)
surf(Z);
axi s( [ 0 11 0 11 0 2] )
subpl ot ( 2, 2, 2)
surf(x,y,Z);
subpl ot ( 2, 2, 3)
surf(X,Y,Z);
subpl ot ( 2, 2, 4)
C=r and( si ze( Z) ) ;
surf(X,Y,Z,C);
colores
Curso de Matlab - 94
Superficies especiales
f unct i on [ x, y, z] =t or us( )
%Di buj a un t or o
%
r =0. 5; %r adi o l at er al
n=30; %nmer o de el ement os
a=1; %r adi o cent r al
%Cal cul o ngul os en f unci n de l a r esol uci n
t het a=pi *( 0: 2: 2*n) / n;
phi =2*pi *( 0: 2: n) ' / n;
%Cal cul o y pr oyect o en x, y, z.
xx=( a + r * cos( phi ) ) *cos( t het a) ;
yy=( a + r * cos( phi ) ) *si n( t het a) ;
zz=r * si n( phi ) *ones( si ze( t het a) ) ;
%Di buj o l a f i gur a
ar =( a+r ) / sqr t ( 2) *1. 1;
col or map( ' cool ' )
subpl ot ( 2, 2, 1) ; mesh( xx, yy, zz) ;
axi s( [ - ar , ar , - ar , ar , - ar , ar ] ) ;
subpl ot ( 2, 2, 2) ; surf( xx, yy, zz) ;
axi s( [ - ar , ar , - ar , ar , - ar , ar ] ) ;
subpl ot ( 2, 2, 3) ; p=surf( xx, yy, zz) ;
shadi ng i nt er p
set ( p, ' EdgeCol or ' , ' k' ) ;
axi s( [ - ar , ar , - ar , ar , - ar , ar ] ) ;
subpl ot ( 2, 2, 4) ; surfl( xx, yy, zz) ;
axi s( [ - ar , ar , - ar , ar , - ar , ar ] ) ;
Curso de Matlab - 95
Iluminacin y Punto de vista
[ x, y, z] =peaks;
sur f l ( x, y, z) ;
shadi ng i nt er p
Punto de vista
vi ew( azi mut h, el evat i on)
vi ew( - 37. 5, 30)
Iluminacin
l i ght angl e( az, el )
l i ght angl e( 90, 21. 8)
Curso de Matlab - 96
Retoque de grficos desde men
Ventana de la figura con todas las opciones activadas
Para crear
nuevos subplot
Properties:
Figure
Axes
Current Object
Variables del
workspace
Selector de
objetos de la
figura
Toolbars
Curso de Matlab - 97
Retoque de grficos desde men
Explora valores pinchando en la grfica
Zoom y desplazamiento de ejes
Figure Toolbar
Curso de Matlab - 98
Retoque de grficos desde men
Detener la rotacin animada
Camera Toolbar
Controles de la cmara y del punto de luz
Curso de Matlab - 99
Retoque de grficos desde men
Objetos para dibujar
Plot edit Toolbar
Formato de los textos
Curso de Matlab - 100
Retoque de grficos por propiedades
Todas las propiedades de cada objeto del grfico
(figura, ejes, elemento grfico,...) estn guardadas
en "handles"
gcf current figure, gca current axis
get ( handl e) muestra todos las propiedades que se
pueden cambiar
set ( handl e, ' Pr oper t yName' , ' Val ue' , . . . ) cambia
propiedades
Ejemplo:
set ( gca, ' Xt i ck' , [ 1 2 3 4 5 6] ) ;
set ( gca, ' Xt i ckLabel ' , [ ' ene' ; ' f eb' ; ' mar ' ; ' abr ' ; ' may' ; ' j un' ] ) ;
Curso de Matlab - 101
Guardar grficos
Desde menu de figure
File/Save As .fig, .eps, .png, .jpeg, .bmp, .pcx, .tiff
File/Generate M file
Por comandos (til para sesiones de consola)
hgsave pepito pepito.fig
print guarda la figura como imagen
pr i nt - depsc - t i f f - r 300 ar chi vo
pr i nt dpng r 150 ar chi vo
Esta opcin nos permite ver qu comandos se utilizan para crear
las modificaciones que hemos realizado por men
Se puede cargar con hgload para retocar
Curso de Matlab - 102
Creacin de animaciones
Hay dos maneras de crear animaciones:
Offline: generar una pelcula para verla luego
On-Line: ir repintando la grfica desde Matlab
Las pelculas pueden generarse de dos maneras:
Guardar "fotogramas" en el disco (normalmente utilizando print) y
luego utilizar un programa externo para crear la pelcula.
getframe, movie
f or k = 1: 16
pl ot ( f f t ( eye( k+16) ) )
axi s equal
M( k) = get f r ame;
end
movi e( M, 1) ; %pl ay t he movi e
movi e2avi ( M, ' mi _pel i ' , ' f ps' , 1) ;
Curso de Matlab - 103
Temario (7)
1. Introduccin a Matlab.
2. Estructuras bsicas de datos.
3. Programacin en Matlab.
4. Estructuras avanzadas de datos.
5. Optimizacin de cdigo.
6. Representaciones grficas.
7. Desarrollo de aplicaciones con Matlab.
Creacin de interfaces grficas
Mtodos de comunicacin externa
Generacin de documentacin
Curso de Matlab - 104
Creacin de interfaces grficas
Ejecutar la aplicacin gui de desde Matlab
Objetos para pintar
Aplicacin
Curso de Matlab - 105
Creacin de interfaces grficas
Cada objeto tiene sus atributos
y una funcin callback
Curso de Matlab - 106
Creacin de interfaces grficas
Guide genera un archivo .m para escribir el cdigo de
nuestro programa
Como en todos los lenguajes, es aconsejable mantener el cdigo de clculo
aislado del cdigo del interface
Curso de Matlab - 107
Comunicaciones externas
Adquisicin directa de datos
Database toolbox
Data Acquisition toolbox
Image Acquisition toolbox
Adquisicin de datos desde archivos
xlsread, load, textscan (nmeros)
auread, wavread (sonido)
imread (imagen)
aviread (pelcula)
Curso de Matlab - 108
Comunicaciones externas
Programas externos
Matlab llama a otros programas
syst em, dos, uni x
Matlab llama a funciones de otros lenguajes
crear un fichero MEX (#include "mex.h")
Matlab llama a la funcin como si fuese un .m
Excel llama a Matlab
Excel Link toolbox
Cualquier programa llama a Matlab
mat l ab nodi spl ay mpr ogr ama
mat l ab nodeskt op mpr ogr ama
Curso de Matlab - 109
Generacin de documentacin
Consejos iniciales
Documentar todas la funciones:
Descripcin
Argumentos de entrada
Valores retornados
Ejemplo de utilizacin
Advertencias de utilizacin
Mantener el cdigo de clculo independiente del
interface grfico. Facilita la depuracin, la mejora
de rendimiento, la actualizacin del interface.
Crear secciones con comentarios del tipo %%
Curso de Matlab - 110
Generacin de documentacin
Matlab 7 incorpora una opcin de generacin de
documentacin.
De momento slo funciona para scripts
Genera documentacin en HTML, XML, LaTeX, Word
y Power Point.
Se basa el los comentarios de las secciones
Procedimiento:
Activar "cell mode" en el editor con Cell/Enable Cell Mode
Seleccionar File/Publish to HTML
Matlab ejecuta el script y genera un HTML con los
comentarios, el cdigo y grficas de los resultados.
Curso de Matlab - 111
Ejemplo: script torus.m

También podría gustarte