[go: up one dir, main page]

0% encontró este documento útil (0 votos)
65 vistas18 páginas

Curso Introductorio de Matlab

Cargado por

camilodomesa
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)
65 vistas18 páginas

Curso Introductorio de Matlab

Cargado por

camilodomesa
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/ 18

LABORATORIOS DEL DEPARTAMENTO DE CIENCIA E INGENIERÍA INTRODUCCIÓN A MATLAB 1

DE MATERIALES E INGENIERIA QUÍMICA


Índice General
CURSO ACADÉMICO 2008/2009
1 Introducción 1
1.1 Caracterı́sticas de MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Acceso a MATLAB desde windows . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Reglas Generales en MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

GRADO EN INGENIERÍA INFORMÁTICA 2 Primeros pasos 4


2.1 Operaciones Básicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
ASIGNATURA: CÁLCULO 2.2 Formato de salida: Comando format . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 El punto y coma ; en la lı́nea de comandos . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Constantes y Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

3 Grabar y Leer Datos en Ficheros 8


Introducción a MATLAB 4 Matrices y vectores 10
4.1 Introducción de matrices en la lı́nea de comandos . . . . . . . . . . . . . . . . . . 10
4.2 Elementos de matrices y vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3 Funciones para la construcción de matrices . . . . . . . . . . . . . . . . . . . . . . 12
4.4 Notación de dos puntos : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.5 Submatrices y Matrices por bloques . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5.1 Submatrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.5.2 Matrices por Bloques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
4.6 Operaciones Matriciales y Puntuales . . . . . . . . . . . . . . . . . . . . . . . . . 16
4.7 Resolución de Sistemas de Ecuaciones Lineales . . . . . . . . . . . . . . . . . . . . 17
4.8 Otras operaciones sobre matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.8.1 Operaciones de manipulación de filas y columnas . . . . . . . . . . . . . . 19

5 Gráficos 22
5.1 Gráficos 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5.2 Gráficos 2D Múltiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
UNIVERSIDAD CARLOS III DE MADRID 5.3 Edición de gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
5.4 Gráficos 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

´ 6 Programación 26
6.1 Reglas Generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2 Tipos de m-files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
6.2.1 Archivos de instrucciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
6.2.2 Archivos de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6.3 Estructuras de Control del Flujo del Programa . . . . . . . . . . . . . . . . . . . . 30
6.3.1 Bucles for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
6.3.2 Sentencia if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.3.3 Sentencia while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
6.4 Operadores Lógicos y Operadores Relacionales . . . . . . . . . . . . . . . . . . . . 32

7 Bibliografı́a 34
1 INTRODUCCIÓN 1 1 INTRODUCCIÓN 2

1 Introducción 1.2 Acceso a MATLAB desde windows

MATLAB =⇒ MATrix LABoratory


1. Pulsar con el botón izquierdo del ratón sobre el botón
1.1 Caracterı́sticas de MATLAB Inicio.
2. Pulsar con el botón izquierdo del ratón sobre la car-
peta de Programas.
• Programa de Cálculo Numérico y Cálculo
3. Pulsar con el botón izquierdo del ratón sobre la car-
Simbólico.
peta de Matlab 5.3.
– Se puede considerar como una calculadora progra-
4. Pulsar con el botón izquierdo del ratón sobre uno de los
mable muy potente.
iconos de MATLAB.
• Programa muy popular entre estudiantes, ingenie-
5. Aparecerá una ventana con el prompt : >>
ros, técnicos e investigadores debido a sus carac-
' $
terı́sticas: >>
– Programa interactivo.
– Capacidades Gráficas potentes y sencillas. & %

– Posee gran cantidad de Funciones de todos


6. Crear un directorio
los tipos.
' $
– Lenguaje de programación de alto nivel similar >> !mkdir A:\nombre directorio
a Fortran, C, Pascal o Basic, pero más fácil de >> cd A:\nombre directorio
aprender.
& %

• Existen versiones del programa MATLAB desde


pequeños PC’s hasta superordenadores.
1 INTRODUCCIÓN 3 2 PRIMEROS PASOS 4

1.3 Reglas Generales en MATLAB 2 Primeros pasos


2.1 Operaciones Básicas

• MATLAB distingue entre mayúsculas y minúsculas: + adición


exp log log10
- sustracción
>> min(2,3) sin cos tan
* multiplicación
asin acos atan
NO es lo mismo que: ^ potenciación
abs sqrt sign
\ división izquierda
>> MIN(2,3) % error round floor ceil
/ división derecha
• Los espacios en blanco SÍ tienen significado para
matlab =⇒ separan distintos elementos en una matriz; Ejemplos
' $
>> 12
>> 10e-12 >> 2 + 3 >> 2 * 2
ans = ans =
no es lo mismo que: 5 4
>> 1 2 % error
>> 10 e-12 % error >> 2/6 >> 2\6
ans = ans =
• Los PARÉNTESIS ( ) y los CORCHETES [ ] 0.3333 3
tienen significados distintos.
• Las Flechas: ↑ y ↓ permiten recuperar mandatos. >> 3*(log10(14.7) - 4/6)/atan(2.3)
ans =
• Las Flechas: ← y → permiten corregir errores. 1.2940
• Para obtener AYUDA en el entorno de MATLAB se
utiliza el comando help: >> 1+2i >> abs(4+3j)
ans = ans =
>> help help 1.0000+2.0000i 5
>> help for & %
>> help plot
2 PRIMEROS PASOS 5 2 PRIMEROS PASOS 6

El comando flops 2.2 Formato de salida: Comando format

• El comando flops cuenta el número de operaciones


en coma flotante realizadas. Podemos cambiar la manera en que los resultados
• La instrucción flops(0) pone a cero dicho contador. numéricos son presentados usando el comando format.
• Sumas y restas cuentan un flop en aritmética real ' $

y dos flops en aritmética compleja.


>> pi >> format long
• Multiplicaciones y divisiones cuentan un flop en
ans = >> pi
aritmética real y seis flops en aritmética compleja.
3.1416 ans =
• Las funciones elementales cuentan un flop para 3.14159265358979
argumentos reales y más para complejos (depende de
la función). >> format short e >> format long e
>> pi >> pi
' $
ans = ans =
>> flops(0) 3.1416e+00 3.141592643589793e+00

>> sin(pi/6)*exp(3.5) >> flops >> format bank >> format


ans = ans = >> pi >> pi
16.5577 4 ans = ans =
3.14 3.1416
& %
>> (1+2i)*(1-2i) >> flops
ans = ans = 2.3 El punto y coma ; en la lı́nea de comandos

&
5 10 %

En la lı́nea de comandos se utiliza el punto y coma ;


al final de una instrucción para que MATLAB no imprima
en pantalla el resultado correspondiente. Esto NO quiere
decir que la operación no se haya ejecutado.
2 PRIMEROS PASOS 7 3 GRABAR Y LEER DATOS EN FICHEROS 8

2.4 Constantes y Variables 3 Grabar y Leer Datos en Ficheros

Reglas • La instrucción
• Podemos definir constantes y variables mediante save fname1 x y z
nombres.
• El nombre consiste en una letra seguida de otras le- graba las variables x, y y z a un fichero (binario) de nombre
tras, dı́gitos o subrayados, hasta un máximo de 31 fname1.mat (archivos mat o MAT-files).
caracteres en total. • La instrucción
• MATLAB distigue entre MAYÚSCULAS y load fname2 a b
minúsculas.
recupera las variables a y b de un fichero (binario) de nom-
• Las variables se pueden borrar con clear nombre. bre fname2.mat. En fname2.mat podrı́a haber almace-
nadas más variables aparte de a y b.
Ejemplos
' $ • También es posible grabar y recuperar datos a y desde
ficheros ASCII: opción -ascii de los comandos load y
>> a = 2; A = 3; save.
>> alfa = 30; conf = pi/180;
Ejemplo
' $
>> sin(conf*alfa+A*a) >> x = 0:pi/5:2*pi;
ans = >> y = sin(x.^2);
0.2381 >> t = [ x’ y’ ];
>> save io.mat t
>> ans^2 >> clear t
ans = >> x = t(:,1);
0.0567 ??? Undefined function or variable ’t’.
& %
>> load io
Si no asignamos un nombre a una expresión se crea au- >> x = t(:,1);
tomáticamente la variable ans con la que se puede hacer >> y = t(:,2);
operaciones posteriores. >> plot(x,y)
& %
3 GRABAR Y LEER DATOS EN FICHEROS 9 4 MATRICES Y VECTORES 10

El comando diary 4 Matrices y vectores

La instrucción 4.1 Introducción de matrices en la lı́nea de comandos


Columnas
diary nombre fichero
se utiliza para crear un diario de la sesión de MATLAB en

Filas
el archivo (ASCII) nombre fichero. A partir de dicha ins- Matriz: Colección de números ordena-
trucción y hasta la introducción en la lı́nea de comandos de la dos por filas y por columnas.
instrucción
diary off • Las matrices se definen mediante corchetes [ ].

todos los comandos que ejecutemos, ası́ como los resultados que • Los elementos dentro de una misma fila se separan
devuelva MATLAB (salvo los gráficos) quedarán grabados en el mediante comas o espacios en blanco.
archivo nombre fichero. Luego, podemos abrir y modificar • Para indicar el final de una fila y el comienzo de la
dicho archivo con cualquier editor de texto. siguiente se utiliza el punto y coma.
• Un vector fila de n elementos es una matriz 1×n.
• Un vector columna de n elementos es una ma-
triz n × 1.
• Un escalar es una matriz 1 × 1.
' $
>> A = [ 1 2 3; 4 5 6; 7 8 9 ]

A =
1 2 3
4 5 6
7 8 9

>> v1=[ 1, 2, 3, 4 ]

v1=
& 1 2 3 %
4 MATRICES Y VECTORES 11 4 MATRICES Y VECTORES 12

' $
4.3 Funciones para la construcción de matrices
>> v2=[ 1; 2; 3 ]
v2 = eye(n) matriz identidad de dimensión n × n
1 zeros(m,n) matriz de ceros de dimensión m × n
2 ones(m,n) matriz de unos de dimensión m × n
3 diag(v) matriz diagonal con diagonal {vk }nk=1
rand(m,n) matriz aleatoria de dimensión m × n
>> size(A) >> size(v1)
Ejemplos
ans = ans = ' $

3 3 1 4 >> a=eye(2)
a =
>> size(v2) >> length(v1) 1 0
ans = ans = 0 1
3 1 4

& %
>> b=zeros(2,5)
b =
4.2 Elementos de matrices y vectores 0 0 0 0 0
0 0 0 0 0
• Para extraer el elemento Aij de una matriz A se
escribe A(i,j). >> c=rand(2,2)
c =
• Para extraer el elemento vk de un vector v se 0.0579 0.8132
escribe v(k). 0.3529 0.0099
' $

>> A(2,3) >> v1(2) >> d=diag([-1, 1])


ans = ans = d =
6 2 -1 0
& % 0 1

& %
4 MATRICES Y VECTORES 13 4 MATRICES Y VECTORES 14

4.4 Notación de dos puntos : 4.5 Submatrices y Matrices por bloques


4.5.1 Submatrices
El operador : es uno de los más importantes en MATLAB.
Aparece en diversos contextos: • La instrucción
• Para crear una fila de elementos equidistantes:
A([i 1,i 2,...,i r],[j 1,j 2,...,j s])
>> v1= 1:10
v1 = extrae la submatriz formada por las filas i1, i2,. . .,
1 2 3 4 5 6 7 8 9 10 ir y las columnas j1, j2,. . ., js de la matriz A.
• La instrucción A([i 1,i 2,...,i r],:) extrae la
>> v2= 100:-7:50 submatriz formada por las filas i1, i2,. . ., ir de la
v2 = matriz A.
100 93 86 79 65 58 51
• La instrucción A(:,[j 1,j 2,...,j s]) extrae la
>> v3= 0:pi/4:pi submatriz formada por las columnas j1, j2,. . ., js
v3 = de la matriz A.
0 0.7854 1.5708 2.3562 3.1416 ' $

>> A = [1:2:5 ; 1:4:9 ; 1:0.1:1.2]


• Para extraer la fila i–ésima de una matriz A se A =
escribe A(i,:). 1.0000 3.0000 5.0000
• Para extraer la columna j–ésima de una matriz 1.0000 5.0000 9.0000
A se escribe A(:,j). 1.0000 1.1000 1.2000
• Para eliminar la fila (columna) i–ésima de una
>> B=A(1:2,[2 3]) >> C=A([2 1],:)
matriz A se escribe A(i,:)=[] (A(:,i)=[]).
B = C =
• Para escribir una matriz A de dimensiones m×n como 3 5 1 5 9
un vector columna de mn elementos se escribe A(:) 5 9 1 3 5
& %
4 MATRICES Y VECTORES 15 4 MATRICES Y VECTORES 16

4.5.2 Matrices por Bloques 4.6 Operaciones Matriciales y Puntuales

Operadores Matriciales Operadores Puntuales


Supongamos que tenemos una matriz A de dimensiones
+ suma + suma
m × n definida por bloques, por ejemplo,
· ¸ − resta − resta
A11 A12 ∗ multiplicación .∗ multiplicación
A= ,
A21 A22 / división derecha ./ división derecha
donde A11, A12, A21 y A22 son bloques de dimensiones \ división izquierda .\ división izquierda
p × r, p × s, q × r y q × s respectivamente, tal que ˆ potenciación .ˆ potenciación
p + q = m y r + s = n. Supongamos también que hemos ’ conjugada traspuesta .’ traspuesta
definido estos bloques en MATLAB y los hemos guardado
en las variables A11, A12, A21 y A22 respectivamente.
Entonces, podemos escribir la matriz A como
• Los operadores matriciales son los definidos en el
Álgebra Lineal.
>> A=[ A11, A12; A21, A22 ];
• Los operadores puntuales actúan elemento a el-
emento. Operan entre matrices con la misma di-
Ejemplos
' $
mensión. El resultado es otra matriz de igual
tamaño.
>> A11 = [ 1 2; 3 4]; A12 = eye(2);
Si denotamos por ◦ = { +, −, ∗, /, \, ˆ} a un operador
matricial y por .◦ = { +, −, .∗, ./, .\, .ˆ} al operador
>> A21 = [ -1 0; 0 -1]; A22=ones(2);
puntual correspondiente. Si A y B son dos matrices
cuyos elementos son aij y bij respectivamente, entonces
>> A = [ A11 A12; A21 A22 ]
los elementos de la matriz A. ◦ B son aij ◦ bij .
A =
1 2 1 0 • Las funciones intrı́nsecas de MATLAB (sin,
3 4 0 1 cos, tan, exp, log, sqrt, abs, ...) cuando
-1 0 1 1 se aplican a una matriz actúan elemento a ele-
0 -1 1 1 mento.
& %
4 MATRICES Y VECTORES 17 4 MATRICES Y VECTORES 18

4.7 Resolución de Sistemas de Ecuaciones Lineales 4.8 Otras operaciones sobre matrices

A Matriz Cuadrada n × n. (¡e Invertible!) inv(A) inversa de la matriz cuadrada A


pinv(A) pseudoinversa (Moore-Penrose) de A
x=A\b =⇒ Solución de A ∗ x = b (x y b vectores columna) det(A) determinante de la matriz cuadrada A
rank(A) rango de la matriz A
x=b/A =⇒ Solución de x ∗ A = b (x y b vectores fila) [n,m] = size(A) dimensiones de la matriz A
tril(A) parte triangular inferior de A
triu(A) parte triangular superior de A
' $
trace(A) traza de la matriz A
>> A = [ 1, 3, 0; -1, 2, 1; 2, 5, 4 ]; null(A) base ortogonal del núcleo de A
orth(A) base ortogonal de la imágen de A
>> b = [ 7; 3 ; 12 ]; [L,U,P] = lu(A) factorización LU de A: P*A = L*U
R=chol(A) factorización Cholesky de A: A = R’*R
>> x = A \ b [S,D] = eig(A) vectores/valores propios de A: A*S = S*D
x = poly(A) coeficientes del polinomio caracterı́stico
1 [U,T]=schur(A) factorización Schur de A: A = U’*T*U
2 [Q,R] = qr(A) factorización QR de A: Q*R = A
0 [U,S,V] = svd(A) SVD de A: U*S*V’= A
& %
norm(A,p) norma p=1,2 de A
norm(A,inf) norma ∞ de A
norm(A,’fro’) norma de Frobenius de A
cond(A,p) Condicionamiento en norma p de A
4 MATRICES Y VECTORES 19 4 MATRICES Y VECTORES 20

4.8.1 Operaciones de manipulación de filas y columnas Ejemplos con Vectores

' $

• Para intercambiar las filas i–ésima y j–ésima de >> a = [1 2]; b = [3 4];


una matriz A se escribe >> a+b
>> a-b
>> A([i j],:) = A([j i],:); >> a-1
>> b-2
• Para intercambiar las columnas i–ésima y >> 3*a
j–ésima de una matriz A se escribe >> a/2
>> c = a*b
??? Error using ==> *
>> A(:,[i j]) = A(:,[j i]);
Inner matrix dimensions must agree.
• Para insertar una fila vf (vector fila) entre las filas k– >> c = a.*b
ésima y (k + 1)–ésima de una matriz A m × n se escribe c =
3 8
>> d = a*b’
>> A = [ A(1:k,:); vf; A(k+1:m,:)]; d =
• Para insertar una columna vc (vector columna) 11
& %
entre las columna k–ésima y (k + 1)–ésima de una
matriz A m × n se escribe
Ejercicios
Define dos vectores filas a y b de 3 elementos.
>> A = [ A(:,1:k), vc, A(:,k+1:n)];
1. Compara a.ˆb aˆb
2. Compara a\b a/b a.\b a./b
3. Compara a*b’ b’*a a*b.’ a.’.*b.’
4 MATRICES Y VECTORES 21 5 GRÁFICOS 22

Ejemplos con Matrices 5 Gráficos


' $
5.1 Gráficos 2D
>> A = [ 1 2; 3 4]; Representación de los vectores x e y.
>> B = [ 5 6; 7 8]; ® ©
>> plot(x,y)
­ ª

>> C = A*B >> D = A.*B


C = D =
19 22 5 12 Ejemplo
43 50 21 32 ' $

>> x = -4:.01:4; y = sin(x); plot(x,y)


>> E = B.^A >> F = A.^3
D = F = 1

0.8

5 36 1 8 0.6

343 4096 27 64 0.4

0.2

>> G = [ 0 pi/6; pi/2 pi]; −0.2

−0.4

>> H = sin(G) −0.6

H = −0.8

−1

0.0000 0.5000 −4 −3 −2 −1 0 1 2 3 4

& %
1.0000 0.0000
& %

Ejercicios
Define una matriz A de 2×2 y un vector columna x de 2 Intentar:
elementos. ' $
−x2
•y=e sobre el intervalo [−1.5, 1.5]
1. Compara A.ˆ2 Aˆ2 A*x x*A • Gráfica en paramétricas: x = cos(3t) y = sen(2t)
2. Calcula sin(A) cos(x)*(A+1) &
t = [0, 2π] %

3. Compara A\x x/A


5 GRÁFICOS 23 5 GRÁFICOS 24

5.2 Gráficos 2D Múltiples 5.3 Edición de gráficos

Forma 1
' $
• Cambiar el tipo de lı́nea, color, etc:
>> x=0:.01:2*pi;y1=sin(x); # Ã

>> y2=sin(2*x);y3=sin(4*x); >> x=0:.01:2*pi; y1=sin(x);


>> plot(x,y1,x,y2,’--’,x,y3,’.’) >> y2=sin(2*x); y3=sin(4*x);
1
>> plot(x,y1,’--’,x,y2,’:’,x,y3,’+’)
" !
0.8

0.6
Ver help plot para tipos de lı́neas y colores
0.4

0.2

−0.2
• grid dibuja una retı́cula cuadrada.
−0.4

−0.6
• Escalado de la ventana gráfica:
−0.8 axis([xmin,xmax,ymin,ymax])
& % axis, congela el escalado actual.
−1
0 1 2 3 4 5 6 7

Forma2
º ·
Escribiendo axis de nuevo volvemos al autoescalado.
>>x=0:.01:2*pi;Y=[sin(x)’,sin(2*x)’,sin(4*x)’]; • Añadir tı́tulos y comentarios:
¹
>>plot(x,Y) ¸
title tı́tulo del gráfico
Opciones xlabel comentario en el eje x
• hold on permite modificar el último gráfico. ylabel comentario en el eje y
gtext texto posicionado interactivamente
• hold off desactiva este modo.
text texto posicionado mediante coordenadas
Ejemplo:
' $ • Ejemplos:
>> x=0:.01:2*pi;
>> y1=sin(x);y2=sin(2*x);y3=sin(4*x); 1. Escribir: title(’El Titulo’)
>> plot(x,y1) 2. Escribir: gtext(’La mancha’) y marcar con el ratón
>> hold on donde se desea que aparezca el comentario.
>> plot(x,y2)
>> plot(x,y3) Ejecutar help axis
&>> hold off %
5 GRÁFICOS 25 6 PROGRAMACIÓN 26

5.4 Gráficos 3D 6 Programación


• meshgrid(xx,yy) crea una retı́cula a partir de los vec-
MATLAB permite ejecutar ficheros de instrucciones
tores xx e yy
llamados m-files.
• mesh(xx,yy,z) representa la función z(xx,yy) sobre la nombre.m
retı́cula.
Ejemplo
2 −y 2
Dibujar z = e−x en el dominio [−2, 2] × [−2, 2]: 6.1 Reglas Generales

Forma 1 • Los ficheros deben ser formato ASCII.


NUNCA formato Word, WordPerfect, Write, etc.
' $
>> xx = -2:.1:2; • MATLAB debe conocer el directorio de trabajo
>> yy = xx; (donde están los ficheros). Para ello utilizar el comando:
>> [x,y] = meshgrid(xx,yy);
>> z = exp(-x.^2 - y.^2); >> cd nombre directorio
& %
>> mesh(z)

Forma 2 • El sı́mbolo porcentaje % se utiliza para comentarios.


Es importante comentar los ficheros indicando su
# Ã
>> [x,y] = meshgrid(-2:.1:2, -2:.1:2); misión.
>> z = exp(-x.^2 - y.^2);
" !
>> mesh(z)
6.2 Tipos de m-files

Consultar la ayuda para otras funciones gráficas como:


• Archivos de Instrucciones
plot3, mesh, y surf.
• Archivos de Funciones
6 PROGRAMACIÓN 27 6 PROGRAMACIÓN 28
6.2.2 Archivos de funciones
6.2.1 Archivos de instrucciones
• Estos ficheros crean nuevas funciones definidas
• Secuencia de instrucciones dentro de un m-file. por el usuario.
¨ ¥
• Para ejecutar uno llamado nombre.m : § >> nombre ¦. • Una vez creadas, pueden utilizarse como una función
intrı́nseca de MATLAB.
• Son muy útiles, ya que permiten depurar y reutilizar
sentencias fácilmente. Reglas y Consejos
• Las lı́neas
®
de comentario % serán mostradas
©
al escribir:
>> help nombre fichero ª
­
• Fichero ASCII con extensión .m (m-file).

Ejemplo : Fichero figura.m • Empezar siempre con comentarios (%).


' $ • La primera palabra después de los comentarios debe ser:
% Fichero ejemplo de m-files function
% Tipo Instrucciones • El nombre de la función debe ser el mismo que el nom-
% Genera la figura de 5.2 bre del fichero sin extensión .m

x=0:.01:2*pi;y1=sin(x); • Los parámetros de entrada deben ser los argumen-


tos de la función, encerrados entre paréntesis ().
y2=sin(2*x);y3=sin(4*x); • Los parámetros de salida van delante del nombre
de la función.
plot(x,y1,x,y2,’--’,x,y3,’.’)
• Se pueden poner lı́neas en blanco en cualquier sitio.
xlabel(’X’); ylabel(’Y’) • Las variables definidas dentro del fichero son locales,
title(’Grafico multiple’) es decir, sólo valen dentro de la función, fuera no exis-
& % ten.
® ©
>> figura ª
­ • Los nombres de los parámetros de entrada y salida
son variables mudas, es decir, su nombre puede ser
cualquiera.
6 PROGRAMACIÓN 29 6 PROGRAMACIÓN 30

Ejemplo 1 6.3 Estructuras de Control del Flujo del Programa


' $
% Fichero: rand10.m Permiten cambiar el orden de ejecución secuencial de
% rand10(m,n) produce una matriz m x n las sentencias (una detrás de otra) en un programa.
% de numeros aleatorios enteros entre 0 y 9
6.3.1 Bucles for

function a = rand10(m,n)
a = floor(10*rand(m,n)); Repite un conjunto de instrucciones un determinado
& % número de veces.
for i= vector fila de ı́ndices
Llamada instrucciones(i)
® ©
>> matriz=rand10(3,4) end
­ ª

' $

x =[]; for i = 1:n, x(i)=i^2, end


Ejemplo 2
' $ ó
% Fichero: sr2.m
% Funcion ejemplo de varios parametros x = [];
% de entrada y salida. for i = 1:n
% Las dos entradas x e y son dos numeros. x(i) = i^2;
% Las dos salidas s y r son la suma y la resta end
% de sus cuadrados respectivamente & %

% [s,r]=sr2(x,y) Bucles Anidados

function [out1,out2] = sr2(in1,in2) for i = 1:m


out1=in1.^2+in2.^2; for j = 1:n
out2=in1.^1-in2.^2;
& % H(i, j) = 1/(i+j-1);
end
Llamada end
® ©

­
>> [s,r]=sr2(3,4) ª
6 PROGRAMACIÓN 31 6 PROGRAMACIÓN 32

6.3.2 Sentencia if 6.4 Operadores Lógicos y Operadores Relacionales

Las instrucciones se ejecutarán sólo si la relación es • Operadores Relacionales


cierta
if relación < menor que > mayor que
instrucciones <= menor o igual que >= mayor o igual que
end == igual ~= no igual.
• Operadores Lógicos

Expresiones más Complicadas & y | o ~ no


• Se utilizan con for, if y while.
if n < 0
paridad = 0; • Se pueden utilizar con escalares o matrices.
elseif rem(n,2) == 0 Cuando se utilizan matrices, el operador actúa com-
paridad = 2; ponente a componente.
' $
else >> A =rand10(3,5)
paridad = 1; A =
end 1 6 7 2 0
8 8 9 4 4
6.3.3 Sentencia while
5 3 1 6 1
Ejecuta unas instrucciones mientras la relación sea
cierta. >> B= A < 5*ones(3,5)
B =
while relación
1 0 0 1 1
instrucciones
0 0 0 1 1
end
0 1 1 0 1

>> p= sum(B(:))/length(A(:))
p =
&
0.5333 %
6 PROGRAMACIÓN 33 7 BIBLIOGRAFÍA 34

Programa Ejemplo 7 Bibliografı́a

' $
• D. Hanselman and B. Littefield, The Student edition of
function [P,nops] = mult(A,B) MATLAB: version 4, Prentice-Hall, 1995.
• A. Biran and M. Breiner, Matlab for Engineers, Addison-
% [P,nops] = mult(A,B) calcula el producto de
Wesley, 1995.
% matrices P = A*B, con A y B de dimensiones
% adecuadas (si no, se obtiene un mensaje de • Eva Pärt-Enander, Anders Sjöberg, Bo Melin and Pernil-
% error) y el numero de operaciones en coma la Isaksson, The Matlab Handbook, Addison-Wesley, 1996.
% flotante ’nops’ realizadas

[mA,nA] = size(A);
[mB,nB] = size(B);

if nA~=mB
disp(’Matrices de dimensiones inadecuadas’)
else
P = zeros(mA,nB);
flops(0);
for i=1:mA
for j=1:nB
for k=1:nA
P(i,j) = P(i,j) + A(i,k)*B(k,j);
end
end
end

nops = flops;
& %

También podría gustarte