0% encontró este documento útil (0 votos)
19 vistas79 páginas

Introduccion Al Matlab

El documento es una introducción a MATLAB, un programa interactivo para computación numérica y visualización de datos, que destaca por su versatilidad en ingeniería y ciencia. Se abordan temas como la inicialización del programa, operaciones con matrices y vectores, programación básica, y el uso de la MATLAB C Math Library y el MATLAB Compiler. Además, se explican comandos básicos y la gestión del espacio de trabajo, así como la creación de aplicaciones stand-alone.

Cargado por

Mai López
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
19 vistas79 páginas

Introduccion Al Matlab

El documento es una introducción a MATLAB, un programa interactivo para computación numérica y visualización de datos, que destaca por su versatilidad en ingeniería y ciencia. Se abordan temas como la inicialización del programa, operaciones con matrices y vectores, programación básica, y el uso de la MATLAB C Math Library y el MATLAB Compiler. Además, se explican comandos básicos y la gestión del espacio de trabajo, así como la creación de aplicaciones stand-alone.

Cargado por

Mai López
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 79

Introducción al MATLAB

Contenidos
1. Generalidades

2. Inicialización del programa

3. Primeros pasos. Utilización de comandos

4. Operaciones
• Manipulación de vectores y matrices
• Operaciones con matrices
• Operaciones con arreglos

5. Precisión y formatos de salida

6. Gráficos bidimensionales

7. Programación básica
• Operadores lógicos y relacionales
• Bucles y estructuras condicionales
• Ficheros *.m

8. Ficheros de entrada/salida
Generalidades

• MATLAB es un programa interactivo utilizado en computación numérica y también en


visualización de datos. Matlab tiene una gran aplicación en el campo de la técnica y de la
ciencia por su gran versatilidad y manejo en su uso.

• El acrónimo MATLAB obedece a las palabras MATRIX LABORATORY, Este programa se


concibió con el propósito de de proporcionar fácil acceso a dos librerías (LINPACK y EISPACK)
muy importantes en el campo de la computación y el cálculo matricial.

• MATLAB está dotado de un entorno interactivo que se apoya básicamente en el tratamiento


matricial. El programa resulta mucho más eficiente a la hora de resolver problemas que si se
utilizasen los lenguajes de programación más comunes como son: BASIC, PASCAL,
FORTRAN, C, etc.

• MATLAB incorpora una gran variedad de programas especializados (TOOLBOXES) ampliando


las funciones en el programa principal. Estos programas cubren, prácticamente, todas las áreas
de la ingeniería y la simulación, destacando entre ellos el 'toolbox' de proceso de imágenes,
señal, control automático (SIMULINK), estadística, análisis financiero, matemáticas simbólicas,
redes neurales, lógica difusa, identificación de sistemas, simulación de sistemas dinámicos, etc.
Generalidades

• MATLAB fue desarrollado en leguaje FORTRAN y posteriormente complementado y


reimplementado en lenguaje C.

• MATLAB se basa en la utilización de matrices debido a que con una matriz (conjunto
ordenado de elementos) se pueden describir de forma flexible y matemáticamente eficiente
infinidad de cosas (elementos, comportamientos, etc.). Así, una matriz de pixeles puede
representar a una imagen en una pantalla; una matriz de fluctuaciones de una señal puede
asociarse a un sonido o voz humana; y lo más importante, una matriz puede describir
cabalmente las relaciones entre diferentes elementos de un sistema: (B)=(M)(A)

• MATLAB está disponible para un gran número de plataformas como son: estaciones de trabajo
SUN, Apollo, VAXstation y HP, VAX, MicroVAX, Gould, Apple Macintosh y PC AT compatibles
80386 o superiores. Opera bajo sistemas operativos UNIX, Macintosh y Windows.
La MATLAB C Math Library Generalidades

• MATLAB C Math Library es una librería incluida en el programa MATLAB que proporciona una
alta gama de funciones clásicas que pueden agruparse en las siguientes categorías:

· Algebra lineal.
· Funciones matemáticas elementales y especializadas.
· Operadores lógicos y aritméticos.
· Matrices elementales y manipulación de vectores.
· Matrices especiales.
· Estadística básica y análisis de datos.
· Polinomios e interpolación.
· Gestión de cadenas de caracteres.
· Entradas y Salidas.
· Gestión de memoria y errores.

• El objetivo de la MATLAB C Math Library es soportar el desarrollo de aplicaciones de tipo


stand-alone (aplicaciones que para su ejecución no precisan de ninguna librería).
MATLAB y su compilador Generalidades

• Para construir una aplicación de tipo stand-alone con codificación de ficheros M, han de
seguirse los siguientes pasos:

1. Utilizar el compilador de MATLAB para convertir ficheros M en C mediante mediante la


utilización de la instrucción externa a MATLAB:

mcc -e

2. Compilar el código C fuente en objeto utilizando un compilador ANSI C.

3. Enlazar el código resultante con la MATLAB C Math Library y con cualquier tipo de ficheros
de programas específicos que hayan sido previamente definidos por el usuario.
La MATLAB COMPILER TOOLBOX Generalidades

• MATLAB Compiler permite crear código C optimizado procedente de ficheros M de MATLAB.


Este compilador puede ser utilizado de dos modos:

1. Como un generador MEX automático. Pueden convertirse ficheros M en funciones C


ejecutables que se ejecutaran desde dentro de MATLAB. Como un generador de código C
fuente.

2. Pueden construirse aplicaciones que se ejecutaran independientemente de MATLAB. Estas


aplicaciones externas requieren de la MATLAB C Math Library, que está disponible
separadamente..

• Mediante la conversión automática de ficheros M en código C fuente, el compilador


MATLAB elimina consumo de tiempo y la conversión manual de código.

• Todo el proceso de conversión, compilación y enlazado se inicia a través de una simple


instrucción de MATLAB
Generación automática de ficheros MEX Generalidades

• El compilador de MATLAB automatiza la creación de ficheros MEX de C (MATLAB


Ejecutables).

• Los ficheros MEX contienen código objeto que es dinámicamente enlazado como
'runtime' en el entorno MATLAB por el intérprete del programa.

El proceso en cuestión se realiza en tres pasos:

1. El compilador de MATLAB traduce las funciones MATLAB en sus funciones equivalente


en lenguaje C.

2. La instrucción MATLAB cmex llama al compilador y al enlazador del sistema para construir
un fichero MEX objeto.

3. El intérprete de MATLAB enlaza automáticamente la función de MATLAB como runtime.

• Los ficheros M pueden convertirse convenientemente en código fuente C para incorporarlos


posteriormente en los ficheros externos desarrollados en lenguaje C

• Esta opción es ideal para usuarios que quieren sacar la máxima ventaja de MATLAB desde
cualquier otra aplicación o producir código C eficiente a partir de los algoritmos desarrollados
con MATLAB. Los desarrollos del tipo stand-alone requieren para ello la MATLAB C Math
Library.
Inicialización del programa

Bajo entorno WINDOWS, el programa se inicializa pulsando doble click


sobre el icono de MATLAB.

El programa incorpora por defecto una serie de ventanas desplegadas


para poder comenzar a programar.

En este curso utilizaremos una configuración básica en la que en la


pantalla aparecerán las siguientes ventanas o espacios de trabajo:

• current directory

• current history

• command window
Inicialización del programa

Espacio de trabajo en MATLAB

current directory

command window

current history
Primeros pasos. Utilización de comandos

Una vez inicializado el programa en la ventana de comandos aparecerá el


indicador:
>>

A partir de este momento ya se está en disposición de introducir comandos


en el programa.

Para conocer los comandos puede recurrirse a la ayuda de MATLAB:


>> help

Una forma de comenzar con el programa es recurriendo a una aplicación de


demostración mediante el comando:
>> demo

Para salir del programa hay que insertar:


>> quit
Primeros pasos. Utilización de comandos

Con el comando path puede comprobarse cuáles son las localizaciones


de los ficheros y programas con los que va a trabajar MATLAB, pudiendo
añadirse nuevos subdirectorios (incluso personales) a conveniencia
>> path

La orden pwd nos indica cuál es el directorio de trabajo actual.


>> pwd

Para mostrar el contenido del directorio de trabajo, se pueden emplear los


comandos dir o ls.
>> dir
>> ls

El comando delete nombre-fichero puede emplearse para eliminar un


archivo del directorio de trabajo. Ejemplo:
>> delete hola.mat

MATLAB ofrece la posibilidad de introducir varios comandos en una misma


línea de la ventana de comandos, separados por coma o punto y coma.
Primeros pasos. Utilización de comandos

Para limpiar el contenido de la ventana de comandos se utilizará la orden clc.


>> clc

El símbolo % sirve para introducir comentarios. Todo lo escrito desde ese


símbolo hasta el final de la línea será ignorado por el intérprete de MATLAB.
El uso de comentarios es muy útil a la hora de escribir programas.

Si se quiere guardar toda la sesión de trabajo en un archivo, basta usar el


comando diary nombrearchivo. Dicho archivo contendrá los comandos
introducidos y los correspondientes resultados. Cuando no se quiera seguir
almacenando la información se introducirá diary off.
>> diary hoy % abre la sesión de trabajo que se desea guardar
>> diary off % cierra sesión de trabajo

Si se desean almacenar todas las variables de memoria en un fichero


junto con sus valores actuales, se usa el comando save nombre-fichero.
Esto crea un fichero binario en el directorio de trabajo actual con el
nombre introducido y con extensión *.mat. Si no se da el nombre del
fichero, se crea uno llamado matlab.mat.
Utilización de comandos

MATLAB trabaja generalmente con matrices numéricas rectangulares. La manera más fácil
de introducir en el programa matrices pequeñas es enumerando sus elementos, de tal
manera que:

· los elementos estén separados por blancos ó comas.

· los elementos estén cerrados entre corchetes: [ ].

· muestre el final de cada fila con ; (punto y coma).

Ejemplos:

>> A=[1 3 5; 2 4 6; 7 8 9] >> B=[1 2 3 4; 5 6 7 8]

A= B=

1 3 5 1 2 3 4
2 4 6 5 6 7 8
7 8 9
Utilización de comandos

Las matrices pueden tener un solo elemento y entonces se denominarán:


escalares

Si las matrices tienen una sola línea (fila o columna) se denominan:


vectores

Si las matrices tienen más de una línea y una columna se denominan:


matrices

Ejemplos:

>> C=2 >> D=[2 5 8] >> E = [1 2; 3 4]

C= D= 1 2
3 4
2 2 5 8

escalar vector matriz


Utilización de comandos

Si no se desea presentar el valor de la variable creada hay que agregar punto y coma (;) al
final del comando.

Después de crear una variable, si se desea presentar su valor en pantalla hay que escribir el
nombre de la variable después del prompt (>>).
Ejemplo:
>> F=[1 3 4];
>> F

F=
1 3 4

Las filas de la matriz también se pueden introducir mediante la tecla enter:

Ejemplo:
>> G=[1 2 3
456
7 8 9]

G=
1 2 3
4 5 6
7 8 9
Elementos de matrices Utilización de comandos

Los elementos de una matriz pueden ser cualquier expresión de MATLAB.

Ejemplo:
>> H=[-13.6 5^2 3*6/2]

H=

-13.6000 25.0000 9.0000

También nos podemos referir a elementos individuales de la matriz utilizando índices entre
paréntesis.

Ejemplo:

>> H(4)=abs(H(1));
>> H

H=

-13.6000 25.0000 9.0000 13.6000


Elementos de matrices Utilización de comandos

A una matriz ya definida también se le pueden añadir filas completas. Para ello hay que
definir la fila a añadir y luego introducirla dentro de la matriz separándola mediante puntos y
comas según ya se ha definido anteriormente.

Ejemplo:
>> fila=[3 3 3 3];
>> H=[H; fila]

H=

-13.6000 25.0000 9.0000 13.6000


3.0000 3.0000 3.0000 3.0000

Si se omite escribir el valor de una variable seguida por el signo =, MATLAB crea de forma
automática la variable ans para guardar el resultado.
Ejemplo:
>> 6

ans =

6
La variable ans es de tipo permanente (no se puede eliminar) y tiene un significado especial.
Información del espacio de trabajo Utilización de comandos

Los ejemplos que se han ido ejecutando se han guardado en variables que están en el
espacio de trabajo de MATLAB. Para listar las variables en el espacio de trabajo se utiliza el
comando who . Para ver información adicional acerca de estas variables se utiliza el
comando whos.
>> who
Your variables are:

A B C D E F G H ans fila

>> whos
Name Size Bytes Class Attributes

A 3x3 72 double
B 2x4 64 double
C 1x1 8 double
D 1x3 24 double
E 2x2 32 double
F 1x3 24 double
G 3x3 72 double
H 2x4 64 double
ans 1x1 8 double
fila 1x4 32 double
Funciones Utilización de comandos

Las funciones que utiliza MATLAB son propias del procesador del programa. También
existen otras funciones que están disponibles en las librerías M.

Del mismo modo que en el lenguaje C, los usuarios también pueden crear funciones de las
que puede hacer uso el programa.

Ejemplos:

>> t=100; >> t=pi/2;


>> y=sqrt(log(t)) >> y=sin(t)

y= y= 1

2.1460

¡ Ojo con el uso de funciones: en el ejemplo anterior log(t) se refiere el logaritmo neperiano !
Salvar y guardar el espacio de trabajo Utilización de comandos

Para salir de la sesión de trabajo con MATLAB se utilizan las órdenes quit o exit. Al salir de
la sesión las variables utilizadas se borran y ya no pueden ser utilizadas.

Como ya se comentó, si se desea que las variables de una sesión puedan ser nuevamente
utilizadas en otra sesión de MATLAB diferente, entonces hay que guardar las variables con
la orden save. save guarda las variables en un fichero denominado matlab.mat.

Si ahora se desea recuperar en un nuevo espacio de trabajo las variables guardadas en


matlab.mat hay que utilizar la orden load.

También se pueden guardar y cargar las variables que deseemos utilizando, a su vez, otros
nombres de ficheros, p. ejemplo:

>> save ejem y t


En el ejemplo anterior se guardaran las variables y y t en el fichero ejem.mat

>> load ejem


Con este último ejemplo se recupera las variables y y t del fichero ejem.mat
Salvar y guardar el espacio de trabajo Utilización de comandos

Los ficheros *.mat donde se alojan las variables utilizadas por MATLAB se ubicarán en
directorios previamente establecidos a la hora de configurar el programa.

carga del fichero


ficheros *.mat *.mat donde se
donde se han guardaron las
guardado variables variables

directorio donde se
desean que se
guarden los ficheros
*.mat
Limpiar el espacio de trabajo Operaciones

Con la orden clear se eliminaran todas las variables del espacio de trabajo. Hay que tener
mucho cuidado con esta orden ya que la variable quedará ya eliminada y, por lo tanto, es
irrecuperable.

>> clear

Si sólo se desea eliminar una determinada variable del espacio de trabajo se introducirá la
orden clear seguida del nombre de la variable, Suponiendo que queramos eliminar la
variable x:

>> clear x

Recordar que una operación muy frecuente es limpiar la ventana de comandos del texto
utilizado en la introducción de comandos. Para ello se emplea la orden clc:

>> clc

Este comando no borra las variables del espacio de trabajo.


Manipulación de vectores y matrices Operaciones

Para generar un vector se asignará a una variable los extremos del vector y el paso o
incrementador. Primero se situará el primer extremo, luego el incrementador y, por último, el
segundo extremos. Los tres valores estarán separados por dos puntos (:),

Ejemplo:
>> p=1:0.5:2

p=

1.0000 1.5000 2.0000

Si no se especifica el paso, el programa por defecto lo reconoce como 1:


Ejemplo:
>> q=1:10

q=

1 2 3 4 5 6 7 8 9 10
Manipulación de vectores y matrices Operaciones

Los elementos de un vector o de una matriz se representan por sus índices. Los valores de
los elementos de la matriz pueden ser manipulados individualmente haciendo referencia a
su correspondientes índices.

Ejemplos:

>> A=[1 2; 3 4; 5 6]; >> B=[1 2 3];


>> A(1,1)=A(2,1)+A(3,1); >> B(1)=B(3);
>> A >> B

A= B=

8 2 3 2 3
3 4
5 6

Un índice puede ser un vector. Si x y v son vectores, entonces x(v) es [x(v(1)), x(v(2)), ...,x(v(n))].
Manipulación de vectores y matrices Operaciones

Para matrices, los índices de vectores permiten acceso a submatrices contiguas y no


contiguas. Supóngase la matriz cuadrada de 4x4:

C=[1 2 3 4; 5 6 7 8; 1 4 6 9; 0 1 0 3]

Ejemplos:

Obtiene la submatriz los


tres primeros elementos Obtiene la submatriz
de la columna 2 de C 2x2 de la 1ª y 2ª filas y Reemplaza la 1ª y 5ª
2ª y 3ª columnas columna de A con las
dos primeras de B

>> D=C(1:3, 2) >> E=C(1:2,2:3)

D= E= >>A(:, [1 5]) = B(:, 1:2)

2 2 3
6 6 7
4
Manipulación de vectores y matrices Operaciones

MATLAB permite listar todos los elementos de una matriz disponiéndolos en forma de columna.
El orden de colocación será de columna en columna. Considerando la matriz E del ejemplo anterior:

>> E(:)
ans =

2
6
3
7

Con los comandos diag, tril, triu y ‘ se puede obtener una diagonal, los triángulos inferiores y
superiores a la diagonal y la transpuesta de una matriz:

Ejemplos:

>> diag(E) >> tril(E) >> triu(E) >> E’

ans = ans = ans = ans =

2 2 0 2 3 2 6
7 6 7 0 7 3 7
Manipulación de vectores y matrices Operaciones

• traspuesta de una matriz: (‘)


A=
1 2
3 4

>> A‘
1 3
2 4

• determinante de una matriz: det(A)


A=
1 2
3 4

>> det(A)
-2

• inversa de una matriz: inv(A)


A=
1 2
3 4

>> inv(A)
-2.0000 1.0000
1.5000 -0.5000
Operaciones con vectores y matrices Operaciones

• suma y resta
Las operaciones de suma (+) y resta (-) están definidas únicamente en matrices (vectores y
escalares) que posean la misma dimensión.

Ejemplos:

escalares vectores matrices

>> A=3; >> D=[1 2 3]; >> G=[1 4 7; 2 5 8];


>> B=8; >> E=[7 6 5]; >> H=[3 7 0; 1 1 8];
>> C=A+B; >> F=D+E; >> J=G+H;
>> C >> F >> J

C= F= J=

11 8 8 8 4 11 7
3 6 16
Operaciones con vectores y matrices Operaciones

• producto de vectores y matrices


Las operación producto (*) está definida sobre matrices siempre que el número de columnas de la
primera matriz sea el mismo que el de filas de la segunda.

Ejemplos:

vectores
matrices
(prod. escalar)

>> U=[1 2 3]; >> A=[1 2 3 ; 4 5 6];


>> V’=[-2 >> B=[1 4 2; 1 0 1; 1 0 0];
5 >> C=A*B;
7]; >> C
>> W=U*V’;
>> W C=

W= 6 4 4
15 16 13
29
Operaciones con vectores y matrices Operaciones

• producto de un escalar por una matriz


Resulta otra matriz de a misma dimensión que la del mutiplicando y cuyos elementos están
afectados por el escalar en forma de producto. Tomando como ejemplo la matriz C anterior:

>> 3*C

ans =

18 12 12
45 48 39

• producto de un vector por una matriz


Es un caso especial del producto matriz-matriz:

>> U=[1 2 3];


>> B=[1 4 2; 1 0 1; 1 0 0];
>> U*B

ans =

6 4 4
Operaciones con vectores y matrices Operaciones

• producto escalar: dot(U, V)

>> U=[1 2 3];


>> V=[1 -1 3];
>> dot(U, V)

ans =

• producto vectorial: cross(U, V)

>> U=[1 2 3];


>> V=[1 -1 3];
>> cross(U, V)

ans =

9 0 -3
Operaciones con vectores y matrices Operaciones

• división de matrices

En división de matrices, si A es una matriz cuadrada no-singular, entonces A\B y B/A


corresponden a la multiplicación izquierda y derecha de B por el inverso de A, esto es,
inv(A) * B y B * inv(A), respectivamente. El resultado es obtenido directamente sin la
computación del inverso.

Ejemplo de división y comprobación del resultado:

A= A/B = inv(A)*B = M = A/B = inv(A)*B;


N = B/A = inv(B)*A;
3.0000 6.0000 M*N=
1 2 -1.0000 -3.0000
3 4 1.0000 0.0000
0.0000 1.0000
B=
B\A = B*inv(A) =

1 0 -2.0000 1.0000
5 6 -1.0000 2.0000
Operaciones con vectores y matrices Operaciones

• exponente de una matriz: (A)n

Siempre que la matriz sea cuadrada y el exponente un escalar entero positivo.

Ejemplos:

A^3=A^2*A
>> A=[1 2 3; 4 5 6; 7 8 9]; 468 576 684
>> A^2 1062 1305 1548
1656 2034 2412
ans =
>> B=A^2
B=
30 36 42
66 81 96 30 36 42
66 81 96
102 126 150 102 126 150

>> B*A
ans =

468 576 684


1062 1305 1548
1656 2034 2412
Operaciones con vectores y matrices Operaciones

• funciones matriciales trascendentes y exponenciales

MATLAB considera expresiones como exp(A) y sqrt(A) como operaciones de arreglos, definidas en
los elementos individuales de A. También puede calcular funciones trascendentales de matrices,
como la matriz exponencial y la matriz logarítmica. Estas operaciones especiales están definidas
solamente para matrices cuadradas.

Ejemplos:
A= A=

1 2 3 1 2 3
4 5 6 4 5 6
7 8 9 7 8 9

>> sqrt(A) >> exp(A)

ans = ans =

1.0000 1.4142 1.7321 1.0e+003 *


2.0000 2.2361 2.4495
2.6458 2.8284 3.0000 0.0027 0.0074 0.0201
0.0546 0.1484 0.4034
1.0966 2.9810 8.1031
Operaciones con vectores y matrices Operaciones

• otras funciones elementales con matrices

poly(A): polinomio característico de la matriz A

det(A): calcula el determinante de la matriz A

trace(A): calcula la traza de la matriz A

eig(A): calcula los valores propios de la matriz A

Ejemplos con A=[1 2 3; 4 5 6; 7 8 9];

>> poly(A) >> det(A) >> trace(A) >> eig(A)

ans = ans = ans = ans =

1.0000 -15.0000 -18.0000 0.0000 0 15 16.1168


-1.1168
-0.0000
Operaciones con arreglos Operaciones

El témino operaciones con arreglos se refiere a aquellas operaciones aritméticas desarrolladas


elemento por elemento.
Siempre que nos refiramos a una operación con arreglos antes del símbolo de la operación
(operador) hay que insertar un punto (.).

• suma y resta
Para la suma y la resta las operaciones con arreglos son idénticas a las de matrices.

• producto, división y potencia

Ejemplos

>> A=[1 2 3]; >> A./B >> A.^2


>> B=[4 5 6];
>> A.*B ans = ans =

ans = 0.2500 0.4000 0.5000 1 4 9

4 10 18
Precisión y formatos de salida

Precisión.- Aproximadamente 16 dígitos significativos en computadoras utilizando aritmética


flotante IEEE. El rango aproximado es 10^-308 a 10^+308.

Formatos de salida.- Tomando como ejemplo el cociente 4/3:

a) format short
1.3333
b) format short e
1.3333e+00
c) format long
1.33333333333333
d) format long e
1.33333333333333e00
e) format bank
1.33
f) format hex
3ff5555555555555

Para insertar elegir en el programa uno de estos tipos de formato sólo hay que introducir el nombre
del formato en el punto de inserción. Ejemplo: >> format bank ( y pulsar intro).
Precisión y formatos de salida

Con todo, todas las opciones de configuración y formatos de salida pueden ser cambiados en el
programa tomando la opción preferences del menú file de la barra de menús:
Gráficos bidimensionales

El comando plot es el más utilizado para representar gráficos en MATLAB.

Hay diferentes formas de utilizar plot a la hora de representar gráficos:

a) plot(y)
b) plot(x, y)
c) plot(x, y, 'tipo_línea')
d) plot(x1, y1, 'tipo_línea_1', x2, y2, 'tipo_línea_2', ... ,xn, yn, 'tipo_línea_n')

En este apartado analizaremos todos ellos comenzando por el más simple. También se utilizarán
otros comandos para representar gráficas especiales.

Para los gráficos se pueden utilizar diferentes colores y estilos de línea. Los símbolos que
diferencian los colores y estilos de línea son:

Símbolo Color Símbolo Estilo de línea


y amarillo . punto
m magenta o circulo
c cyan (azul claro) x marca
r rojo + mas
g verde * asterisco
b azul - sólido
w blanco : punteado
k negro -. segmento punto
-- segmento
Gráficos bidimensionales

Supóngase que se desea representar gráficamente una serie de datos que vienen dados en el
vector y. La orden plot(y) representa dichos datos tomando como eje x los índices del vector.

Ejemplo:
Genera un
vector de 20
>> y=1:0.5:10; elementos
>> plot(y)
11

10

0
0 2 4 6 8 10 12 14 16 18 20
Gráficos bidimensionales

Cuando se desea representar gráficamente la función y=f(x) entonces el comando utilizado será:
plot (x, y). Con este comando se representaran las componentes de la variable dependiente
(vector y) en función de las componentes de la variable indepenciente (vector x).

Como ejemplo se representará la función y=sin(x) en el rango comprendido entre 1º y 360º.

Ejemplo:
vector de vble
>> t=0:1:360; independiente
>> x=t*pi/180;
vector de vble
>> y=sin(x);
dependiente
>> plot(x, y) conversión a rad

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7
Gráficos bidimensionales

Al comando plot (x, y) se le pueden añadir nuevas opciones con el fin de diferenciar diferentes
funciones o representaciones. Estas opciones están ligadas con el tipo de línea y de color que se
desee que aparezcan en el gráfico.

Utilizando el ejemplo anterior si se desea que la gráfica y=sin(x) sea de color rojo y con línea
discontinua, habrá que hacer:

>> t=0:1:360;
línea discontinua de
>> x=t*pi/180;
color rojo
>> y=sin(x);
>> plot(x, y, 'r--')

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7
Gráficos bidimensionales

En un mismo gráfico se pueden representar diferentes funciones, para ello se utilizará el comando:
plot(x1, y1, ‘parámetros1’, x2, y2, ‘parámetros2, …). Si ahora se desea representar en una misma
gráfica la función sin(x) y la función cos(x) con diferente tipo y colores de línea:

>> t=0:1:360;
>> x=t*pi/180;
>> y1=sin(x);
>> y2=cos(x); representa dos
>> plot(x, y1, 'r-', x, y2, 'b--') gráficas con
distinttos tipos de
línea y color
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7
Gráficos bidimensionales

A los diferentes gráficos se pueden añadir las siguientes propiedades:

tittle: añade título a la gráfica


xlabel: añade encabezamiento al eje-x
ylabel: añade encabezamiento al eje-y
text: añade una cadena de texto en una localización específica
gtext: añade texto a la gráfica utilizando el ratón
grid: crea líneas entrecortadas

Estas propiedades se introducen el el gráfico de la siguiente forma:

plot(x,y1,'r-',x,y2,'g--'); title('Angulo difuso'); xlabel('x=sin(t)'); ...)

También se pueden cambiar las propiedades de los ejes del gráfico con los comandos:

loglog(x, y): crea una gráfica utilizando una escala logarítmica para ambos ejes
Semilogx(x, y): crea una gráfica utilizando una escala logarítmica para el eje-x y una escala
lineal para el eje-y.
semilogy(x, y): crea una gráfica utilizando una escala logarítmica para el eje -y y una escala
lineal para el eje-x.
Gráficos bidimensionales

Aun con todo la anterior, cuando MATLAB genera un gráfico habilita un asistente con el que
poder cambiar sus propiedades sin tener que introducir las órdenes anteriormente descritas. Así,
si se desea modificar las propiedades del último gráfico editado mediante la inserción de títulos,
cambios de tipo de línea etc, obtendríamos con este asistente:

representación de funciones transcendentes


1

0.5

sin(x)
y(x)

-0.5
cos(x)
-1
0 1 2 3 4 5 6 7

ángulo (rad)
Gráficos bidimensionales

Matlab ofrece la posibilidad de crear gráficos en forma de matriz. Esto se puede conseguir
introduciendo la orden subplot. Tomando tres vectores y1, y2 e y3 que representan los datos de
las funciones sin(x), cos(x) y sin(x-pi), respectivamente, resultaría:

si existe un
gráfico abierto lo Crea una matriz de gráficos de 3
cierra filas por 1 columna, y abre el
gráfico 1
sin (t)
1

0
>> clf;
>> subplot(3, 1, 1); -1
0 1 2 3 4 5 6 7
>> plot(x, y1); cos(t)
>> title('sin (t)'); 1

>> subplot(3, 1, 2); 0


>> plot(x, y2);
-1
>> title('cos(t)'); 0 1 2 3 4 5 6 7
>> subplot(3, 1, 3); sin(t-pi)
1
>> plot(x, y3);
>> title('sin(t-pi)'); 0

-1
0 1 2 3 4 5 6 7
Gráficos bidimensionales

MATLAB también permite cargar datos desde un fichero externo y poderlos representar con la
orden load.

Supongamos que queremos cargar los datos generados en un fichero con el tratamiento de textos
word:
datos.dat

En el fichero se han introducido los datos correspondientes a los cuadrados de los números
enteros comprendidos entre 1 y 10
Gráficos bidimensionales

Para poder representar estos datos gráficamente con MATLAB habrá que introducir en el área
de trabajo el fichero correspondiente mediante la orden open.

Cuando se abre el fichero MATLAB detecta que no está en un formato legible para él, por lo que
nos preguntará que formato deseamos dar a los datos (csv, etc,) para que lo pueda transformar
y hacerlo legible.

MATLAB GENERA UN
VECTOR DE DATOS
INDEXADOS
Gráficos bidimensionales

A partir de ese momento ya se puede disponer de los datos del fichero en MATLAB:

>> load(‘datos.dat’); >> plot(datos)


>> datos

datos = 100

90

0 80

1 70

4 60

9 … y se pueden 50

16 representar 40
25 30
36 20
49 10
64
0
81 1 2 3 4 5 6 7 8 9 10 11

100
¡¡ En la gráfica se ha representado el valor de
(x-1)2 ya que al valor de 0 se la ha asignado el
índice 1 !!
Gráficos bidimensionales

Con MATLAB también se pueden representar datos mediante gráficos de barras. Las órdenes
utilizadas para este caso serán:

a) bar(y);
b) bar(x,y);
c) [xb,yb]=bar(y); => plot(xb,yb)
d) [xb,yb]=bar(x,y); => plot(xb,yb)

Con el siguiente ejemplo vamos a intentar generar un gráfico de barras para los datos obtenidos
de un fichero externo (barras.dat) que contenga valores para el eje x y el eje y.
Gráficos bidimensionales

Una vez cargado en MATLAB aparecerá como una matriz de diez filas por dos columnas:

>> barras

barras =

2 234
3 297
4 98
1 587
6 400
7 350
9 600
10 700
5 0

Ahora hay que asignar a cada una de las columnas un vector, denominando x al vector que
contiene los datos de la primera columna, e y al vector que contiene los datos de la segunda
columna:

>> x=barras(:,1);
>> y=barras(:,2);
Gráficos bidimensionales

Por último, sólo queda que generar el gráfico mediante la orden bar(x, y):

>> bar(x, y)

700

600

500

400

300

200

100

0
0 2 4 6 8 10 12
Programación básica

MATLAB permite a la hora de programar una serie


de elementos típicos para la modificacin del flujo de
una secuencia de instrucciones. La sintaxis es similar
a la de cualquier lenguaje de programación. Todos
estos operadores se pueden usar en la ventana de
comandos, en línea, o en un fichero *.m.
Operadores lógicos y relacionales Programación básica

Los operadores lógicos permiten la comparación de escalares (o de matrices elemento a


elemento -arreglos-). Si el resultado de la comparación es verdadero, devuelven un 1, en
caso contrario devuelven un 0.

Los operadores elementales son:

< menor que <= menor o igual == igual


> mayor que >= mayor o igual ~= no igual

Es importante no dejar espacios entre los operadores formados por dos símbolos. Si los
datos a comparar son matrices, la comparación se hace elemento a elemento, devolviendo
una matriz binaria.

Ejemplos:
>> a=3<2 >> b=3>=3 >> c=1~=5

a= b= c=

0 1 1
Bucles y estructuras condicionales Programación básica

En esta sección únicamente se tratarán los bucles for y while, y la estructura condicional
if-else.

• Bucle for
La sintaxis de este bucle es la siguiente:

for variable=incio:paso:final
declar ación 1;
...
declaración n;
end

for variable=inicio:final
declaración 1;
...
declaración n;
end
Bucles y estructuras condicionales Programación básica

Ejemplo: Supóngase que se quieren sumar dos vectores dados a y b dando como resultante
otro vector c.

>> a=[1 2 3 4 5];


>> b=[4 5 6 7 8];
>> for i=1:5
c(i)=a(i)+b(i);
end
>> c

c=

5 7 9 11 13

Ejemplo: Se desea crear un vector d que contenga los dígitos comprendidos entre el 0 y el 9

>> for i=1:1:10


d(i)=i-1;
end
>> d

d=

0 1 2 3 4 5 6 7 8 9
Bucles y estructuras condicionales Programación básica

También se pueden anidar bucles con MATLAB.

Ejemplo: Supóngase que se desea construir una matriz (5x6) y que en cada una de las filas tenga
por elementos los números naturales comprendidos entre el 1 y el 6:

Solución:

>> for i=1:5


for j=1:6
A(i,j)=j;
end
end
>> A

A=

1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
1 2 3 4 5 6
Bucles y estructuras condicionales Programación básica

• Bucle while
Permite implementar bucles condicionales. Su sintaxis es:

while expresion
sentencias;
end

La expresión es de la forma X operador Y, donde X e Y son escalares o expresiones que


devuelven escalares y los operadores suelen ser operadores relacionales.

Ejemplo: Supóngase que se desea conocer el primer número natural a partir del cual n! tenga más
de 100 dígitos.

>> n=1;
>> while prod(1:n)<1e100
n=n+1;
end
>> n

n=

70
Bucles y estructuras condicionales Programación básica

Ejemplo: imprimir la lista de los primeros números naturales cuya suma es menor o igual a 100.

>> n=1;
>> while sum(1:n)<=100
numero(n)=n;
n=n+1;
end
>> numero

numero =

1 2 3 4 5 6 7 8 9 10 11 12 13

Es importante evitar en lo posible el uso de bucles en MATLAB ya que su ejecución requiere


mucho tiempo de cálculo. En muchos casos será posible realizar las mismas operaciones sin el
uso de bucles de una forma mas eficiente y compacta.
Bucles y estructuras condicionales Programación básica

• Estructura condicional if, else, elseif, break

Con esta estructura se puede ejecutar una orden o comando según una determinada
condición. La síntesis de esta estructura es la siguiente:

if expresion 1
hace algo
elseif expresion 2
hace algo
else
hace algo
end

else y elseif son opcionales.

Dentro de cada estructura condicional se pueden ir anidando otras, y así sucesivamente.

Este tipo de estructuras es de las más utilizadas en programación.


Bucles y estructuras condicionales Programación básica

Ejemplo: Determinar el número de términos negativos que tiene un vector de siete elementos dado.

>> n=0;
>> u=[1 0 -3 5 6 -4 -8];
>> for i=1:7
if u(i)<0
n=n+1;
end
end
>> n

n=

En este ejemplo se ha utilizado un bucle de control for y una estructura condicional if sin utilizar else
por no ser necesario.
Bucles y estructuras condicionales Programación básica

Ejemplo: Separar los términos del vector anterior en otros dos vectores: uno que contenga los
números pares, y el otro los impares.

>> u=[1 0 -3 5 6 -4 -8];


>> n=1;
>> m=1;
>> for i=1:7;
if rem (u(i), 2)==0
pares(n)=u(i);
n=n+1;
else
impares(m)=u(i);
m=m+1;
end
end
>> pares

pares =

0 6 -4 -8

>> impares

impares =

1 -3 5
Ficheros *.m Programación básica

MATLAB puede ejecutar programas almacenados en ficheros ASCII que


pueden encontrarse en alguno de los subdirectorios indicados en el camino
de búsqueda o bien en el subdirectorio de trabajo actual y tengan además
extensión *.m.

Hay dos tipos de ficheros *.m: script files y function files

Los script files son ficheros *.m en los que se ponen secuencialmente
comandos de matlab que se ejecutan en ese orden al introducir el nombre
del fichero *.m (sin extensión). Operan globalmente con los datos que se
encuentran en la memoria. Los ejemplos que ilustran estas notas son en s´.
script-files, pues llevan un conjunto de comandos matlab y comentarios.

Los function files son también ficheros *.m, pero a diferencia de los
anteriores, se le pueden pasar argumentos y pueden devolver resultados.
Por tanto utilizan variables globales que se pasan por valor.

La mayoría de los ficheros contenidos en los toolboxes son funciones.


Ficheros *.m Programación básica

Para crear un script file hay que seguir los pasjos que a continuación se indican:

Supongamos que queremos crear dos script files que contengan las instrucciones para
sumar dos números y restarlos (u=3 u v=5)..

En primer lugar crearemos dos ficheros *.m, uno denominado suma.m y el otro resta.m. Para
ello hacemos clic con el botón derecho del ratón en el espacio de trabajo de la ventana
Current Folder y elegimos new file y el tipo de fichero *.m que queramos crear.
Seguidamente, se asigna al fichero un nombre (suma, resta, etc.).
Ficheros *.m Programación básica

A continuación se hace doble clic sobre el fichero creado y entramos en el editor de texto que
permitirá introducir los comandos deseados.

Introducidos los comandos, sólo hay que salvar el fichero y ya está dispuesto para ser
utilizado cuando se requiera que ejecute las operaciones en él indicadas.
Ficheros *.m Programación básica

Supongamos ahora que desde MATLAB se desea conocer la suma y la resta de los dos
números anteriormente introducidos en los script files:

>> suma
Llama a fichero suma.m y
ejecuta los comandos que se
ans = indican en él.

>> resta
Llama a fichero resta.m y
ejecuta los comandos que se
ans = indican en él.

-2

Este tipo de ficheros también se pueden crear y editar directamente desde MATLAB con el
comando edit.
Ficheros *.m Programación básica

Un fichero *.m que contiene la palabra function al principio de la primera línea, es un


function file. En una función, a diferencia de un comando, se deben pasar los argumentos.
Las variables definidas y manipuladas dentro de la función son locales a ésta y no operan
globalmente en el espacio de trabajo. Los archivos de funciones se utilizan para extender a
MATLAB, p. ejemp., crear nuevas funciones para MATLAB utilizando el lenguaje propio de
MATLAB.

Un fichero *.m de tipo function file ha de editarse con la siguiente sintaxis:

Variables de
entrada
Variables de (argumentos)
salida

function [out1,out2,...] = nombre_fichero (in1,in2,...)


% Comentarios adicionales para el help
comandos de MATLAB
end
Ficheros *.m Programación básica

Para editar un function file se seguiran los mismos pasos que para un script file. El
proceso lo ilustraremos con un ejemplo: introducir un vector en MATLAB y que una
función calcule el valor medio de sus elementos.

El primer paso es crear un fichero de función con el nombre media.m. Una vez creado lo
editamos con el editor de textos de MATLAB.
Ficheros *.m Programación básica

Sólo queda que guardar el fichero *.m en el directorio de trabajo y ejecutar la orden que
realice la operación del valor medio habiendo introducido previamente un vector:

>> u=[1 2 3 4 5 6 7 8 9 0];


>> media(u)

ans =

4.5000

Ahora también se puede repetir el ejemplo de la suma y la resta de dos números mediante
scripts files, introduciendo los valores desde MATLAB:
Ficheros *.m Programación básica

Introduciendo en MATLAB los valores de x=3 e y=5::

>> x=3;
>> y=5;
>> sumarresta(x, y)

ans =

ans =

-2

En el ejemplo anterior:

• se pasan los parámetros x e y al function file.


• en el fichero sumarresta.m se han declarado las variables locales suma y resta que, como
puede observarse, no han sido utilizadas.
• Los parámetros x e y se asignan a los argumentos x e y de la función sumarresta (no
tienen porqué tener el mismo nombre las variables de MATLAB con los argumentos de la
función).
• En el fichero sumarresta.m se realizan las operaciones que se indican imprimiendo su
valor en pantalla.
Ficheros de entrada/salida (E/S)

• Declaración fopen (abrir un fichero *.dat, *.bin, *.txt, etc.)

Sintaxis:

id = fopen(‘nombre.txt’, ‘permiso’)

donde permiso puede ser:

`r' Abre archivo para lectura


`r+ Abre archivo para lectura y escritura
`w' Borra el contenido del archivo existente o crea un nuevo archivo y lo abre
para escritura
`w+' Idem que `w' únicamente que el archivo se abre para lectura y escritura
`a' Crea y abre un nuevo archivo o abre un archivo
`a+' Idem que `a' únicamente que el archivo es abierto para lectura y escritura
Ficheros de entrada/salida (E/S)

Ejemplo: Creamos un fichero para introducir datos denominado hola.dat:

El fichero aparece en el espacio de trabajo.


Ficheros de entrada/salida (E/S)

• Declaración fprintf (imprimir en un fichero *.txt)

Sintaxis:

fprintf(fid,’%f’ A(i))

donde:

A(i) con los elementos a grabar en el fichero, p. ej., un vector.


%f especificación de impresión como en lenguaje C.
fid es un identificador del fichero *.txt donde se desean guardar los datos.

Ejemplo: Introducir los datos correspondientes a los elementos de un vector u = [1 3 5 7]


en el fichero pruebas.txt:
Ficheros de entrada/salida (E/S)

Introduce el vector de cuatro elementos


>> u=[1 3 5 7]; crea y abre un fichero de lectura-escritura
>> iden=fopen('pruebas.txt','a+');
>> k=length(u); asigna una variable la longitud del vector
>> for i=1:k
fprintf(iden,'%.2f',u(i)); Imprime los elementos del vector como
fprintf(id1,'\n'); números reales de dos decimales
end salta línea
>> fclose(iden);
cierra el fichero

Si abrimos el fichero desde el espacio de trabajo de MATLAB:


Ficheros de entrada/salida (E/S)

Una vez que se han introducido los datos en un fichero, si no se van a introducir más es
recomendable cerrarlo con la sentencia fclose, cuya sintaxis es:

fclose(fid)
Si lo que se desea es cerrar todos los ficheros abiertos:

fclose(‘all’)

Por último, si deseamos cargar los datos en una matriz (vector) para poderlos analizar
posteriormente, se puede utilizar el comando load. Tomando el ejemplo anterior:

>> load('pruebas.txt');
>> M=pruebas;
>> M

M=

1
3
5
7
Ficheros de entrada/salida (E/S)

• Declaración fwrite (escribir en un fichero binario). Su sintaxis es:

fwrite(fid, A)
donde:

A Matriz de datos que se desea grabar


fid es un identificador del fichero binario donde se desean guardar los
datos.

• Declaración fread (leer datos de un fichero binario). Su sintaxis es:

B = fread(fid)
donde:

B Matriz donde se desea que se guarden los datos


fid es un identificador del fichero binario donde se desean guardar los
datos.

Tanto a fwrite como fread se le pueden asociar otros parámetros relativos al formato de datos.
Con help se puede obtener información al respecto.
Ficheros de entrada/salida (E/S)

Ejemplo: Se desea escribir los datos de una matriz dada (A) en un fichero binario llamado
matriz.bin. Posteriormente se desea introducir en otra matriz B los datos de la matriz
grabada en el fichero.
>> id1=fopen('matriz.bin', 'r');
>> B=fread(id1);
>> B

>> A=[1 2 3; 4 5 6; 7 8 9]; B=


>> id1=fopen('matriz.bin', 'w');
>> fwrite(id1,A); 1
>> fclose(id1); 4
7
2
5
8
3
6
9

En el primer grupo de sentencias se ha creado una matriz 3x3, se ha creado y abierto un


fichero para escribir, se ha escrito en el fichero la matriz en forma de columna, y, por ultimo,
se ha cerrado el fichero.
En el segundo grupo de sentencias se ha abierto el fichero matriz.bin para la lectura, se
han asignado los datos de columna a una matriz B y, por último, se han mostrado en
pantalla los elementos de la matriz B.
fin

También podría gustarte