Matlab Tutorial
Matlab Tutorial
Matlab Tutorial
CONTENIDO
CAP 1. ENTORNO DE MATLAB
CAP 2. MANEJO DE ARREGLOS
CAP 3. LGEBRA MATRICIAL
CAP 4. POLINOMIOS. RACES DE FUNCIONES
CAP 5. GRFICOS BIDIMENSIONALES (2-D)
CAP 6. GRFICOS TRIDIMENSIONALES (3-D)
CAP 7. PROGRAMACIN EN MATLAB
1
Matlab
1. ENTRAR EN MATLAB
Si aparece el icono de MATLAB como acceso directo en la pantalla inicial (escritorio)
es suficiente pulsar DOBLE CLICK sobre el ratn. En otro caso, ser necesario buscarlo
a partir del men de inicio.
Una vez iniciado MATLAB, nos encontramos con la pantalla de la figura, donde se
observan los diferentes mens y ventanas. El trabajo inicial se realiza en la ventana de
comandos Command Window.
2. AMBIENTE MATLAB
EL REA DE TRABAJO de MatLab esta bsicamente constituida por:
2
Matlab
rea de memoria de trabajo del Matlab, en la cual se hallan almacenadas todas las
variables definidas interactivamente.
Las variables se visualizan en esta ventana y si desea visualizar su contenido basta
pulsar doble click sobre la variable deseada.
Esta barra interacta segn se encuentre en una ventana o en otra, por ejemplo si
actualmente esta en la ventana [Workspace], la barra del men principal se vera as
LA BARRA DE HERRAMIENTAS
3
Matlab
4
Matlab
5
Matlab
6
Matlab
7
Matlab
EJERCICIOS DESARROLLADOS
ENTORNO DE MATLAB
1. Listar los archivos del directorio actual.
>> dir
. fb555.m jose.zip
.. fbef.asv mefloli.asv
L1.M fbef.m mefloli.m
L2.M fbef22222.asv meflolimejor.m
LOLI fbef22222.m metnum
LOLI.asv fbefmejor.m metnum2
MATLAB fbf.m monografias3.doc
Ondaseno.mdl integ2.m sbef111.m
algo.m integ3.m timestwo.asv
e.m integ4.m timestwo.m
fb.m integc2.m vsfunc.m
fb333.m integc3.m
fb444.m integc4.m
8
Matlab
>> dir
. .. license.txt
7. Copiar el archivo license.txt asignando el nombre borrar.txt
>> copyfile('license.txt', 'borrar.txt')
8. Borrar todos los archivos que comiencen con b y tengan extensin txt.
>> delete b*.txt
EJERCICIOS PROPUESTOS
1. Qu muestra la ventana ?.
6. Duplicar los archivos de la carpeta COLOR que comiencen con m y tengan extensin
m asignando a los duplicados la letra inicial p y la extensin p.
9
Matlab
DATOS NMERICOS
EJEMPLO
Digitar en la ventana de comandos:
>> u=2+3i >> v=2-3j
u= v=
2.0000 + 3.0000i 2.0000 - 3.0000i
DATOS LGICOS
Los datos tipo lgico representado por Verdadero y Falso son manejados con los
nmeros 1 y 0 respectivamente.
EJEMPLO
Digitar en la ventana de comandos:
>> 7 * 10 > 40 >> P = (5 * 7 ~= 35)
ans = P=
1 0
EJEMPLO
10
Matlab
NOTA
Matlab no requiere ningn tipo de comando para declarar variables. Sencillamente crea
la variable mediante asignacin directa de su valor. As si asigna a la variable un nmero
ser variable numrica, si le asigna una cadena ser variable alfanumrica.
VECTORES
Su sintaxis es la siguiente:
vector=[a, b, c, d, . . . m] Define un vector fila, cuyos elementos son los
valores a, b, c, d, m.
vector=[a; b; c; d; . . . m] Define un vector columna, cuyos elementos son los
valores a, b, c, d, m.
En resumen, las comas separan elementos de un vector (en vez de comas tambin se
pueden usar espacios en blanco), mientras que el punto y coma separa las filas.
11
Matlab
ORDENAMIENTO
>> V=[6 7 2 8 9]
V=
6 7 2 8 9
>> W=sort(V)
W=
2 6 7 8 9
>> min(V)
ans =
2
MATRICES
Para generar matrices tenemos que introducir vectores fila de la misma cantidad de
componentes, fila por fila. Se usa punto y coma para separar las filas. MATLAB indica
un error cuando las filas tienen diferente nmero de elementos.
1 2 3 4 0 2 1 4
A 5 6 7 8 , B 5 0 1 0
9 10 11 12 2 0 3 7
13
Matlab
Ms operaciones clsicas:
>> C=A' % matriz traspuesta >> E=[1 2;3 4]
C= E=
1 5 9 1 2
2 6 10 3 4
3 7 11
4 8 12 >> E^3 %potencia matricial=E*E*E
ans =
>> %producto de matrices 37 54
>> P=A*C 81 118
P=
30 70 110
70 174 278
110 278 446
3. OPERACIONES A ELEMENTO
Existen en MATLAB dos tipos de operaciones aritmticas: Las operaciones aritmticas
matriciales, que se rigen por las reglas del lgebra lineal, y las operaciones aritmticas a
elemento, que se realizan elemento a elemento.
14
Matlab
Sea el vector
>> V=[6 7 2 8 9];
Para obtener su tercera componente Para obtener su 1ra, 4ta y ltima componente
>> V(3) >> V([1, 4, 5])
ans = ans =
2 6 8 9
Tabla 2
SELECCIN DE LOS ELEMENTOS DE UNA MATRIZ A
Se hace de acuerdo a la siguiente sintaxis:
A(m,n) Devuelve el elemento (m,n) de la matriz A (fila m y columna n).
A([m, n],[p, q]) Devuelve la submatriz de A formada por la interseccin de las filas n-
sima y m-sima y las columnas p-sima y q-sima.
15
Matlab
Sea la matriz
>> A=[1:4; 5:8; 9:12]
A=
1 2 3 4
5 6 7 8
9 10 11 12
>> B=[3,6,10,12;2,16,30,31;4,-2,3,96;5,32,96,97;2,1,3,4];
>> M=B(2:4,2:3)
M=
16
Matlab
16 30
-2 3
32 96
5. MATRICES ESPECIALES
Tipos especiales de matrices
Funcin Operacin Funcin Operacin
tril(A) Parte triangular inferior de la triu(A) Parte triangular superior de la
matriz A matriz A
eye(n) Crea la matriz identidad de nxn eye(m,n) Idem orden mxn
zeros(n) Crea la matriz nula de nxn zeros(m,n) Idem de orden mxn
ones(n) Crea la matriz de unos de nxn ones(m,n) Idem de orden mxn
rand(n) Crea una matriz aleatoria rand(m,n) Idem de orden mxn
uniforme de nxn randn(m,n) Idem de orden mxn
randn(n) Crea una matriz aleatoria normal diag(v) Matriz diagonal con los
de nxn elementos de v
diag(A) Extraer la diagonal de la matriz A diag(v,k) Matriz diagonal con los
diag(A,k)Extraer la k-sima diagonal de la elementos de v en la k-sima
matriz A. diagonal
k = 0 es la diagonal principal,
k > 0 es encima de la diagonal
principal y k < 0 es debajo de la
diagonal principal.
EJEMPLOS
MATRIZ COMANDO SALIDA
NULA >> zeros(2)
>> zeros(2,3)
UNOS >> ones(2)
>> ones(2,3)
IDENTIDAD >> I=eye(3) I=
1 0 0
0 1 0
0 0 1
ALEATORIA >> rand(3) ans =
0.2028 0.2722 0.7468
0.1987 0.1988 0.4451
0.6038 0.0153 0.9318
DIAGONAL >> A=[1:4; 5:8; 9:12] D=
A= 1
1 2 3 4 6
5 6 7 8 11
9 10 11 12
>> D=diag(A)
DIAGONAL >> I=diag(2:4) I=
17
Matlab
2 0 0
0 3 0
0 0 4
LA MATRIZ >> I=diag(ones(3,1)) I=
IDENTIDAD 1 0 0
GENERADA CON LA 0 1 0
DIAGONAL 0 0 1
MS MATRICES ESPECIALES:
18
Matlab
20
Matlab
EJERCICIOS DESARROLLADOS
MANEJANDO MATRICES
21
Matlab
DESARROLLO
2 1 3
2. Ingrese las matrices A 4 6 y B = matriz aleatoria de 3x3. Construya C a
0.4 7.1 0
partir de A y B: C = [A A ; A.^3 B]
>> A=[2 -1 3;4 pi 6;0.4 7.1 0]
A=
2.0000 -1.0000 3.0000
4.0000 3.1416 6.0000
0.4000 7.1000 0
>> B=rand(3)
B=
0.9501 0.4860 0.4565
0.2311 0.8913 0.0185
0.6068 0.7621 0.8214
>> C=[A A;A.^3 B]
C=
2.0000 -1.0000 3.0000 2.0000 -1.0000 3.0000
4.0000 3.1416 6.0000 4.0000 3.1416 6.0000
0.4000 7.1000 0 0.4000 7.1000 0
8.0000 -1.0000 27.0000 0.9501 0.4860 0.4565
64.0000 31.0063 216.0000 0.2311 0.8913 0.0185
0.0640 357.9110 0 0.6068 0.7621 0.8214
>> size(C)
ans =
6 6
23
Matlab
>> b(1) = [ ]
B=
1.0000
4.2000
b) Qu accin hace? >> A(:)'
Me devuelve todos los elementos de la matriz A como una sola fila, por orden
consecutiva de cada columna.
>> A(:)'
ans =
8 3 4 1 5 9 6 7 2
c) Qu accin hace? >> A(2) Me devuelve el segundo componente de la Matriz A.
>> A(2)
ans =
3
d) Qu accin hace? >> A(1) = [ ] Elimina el primer elemento de la matriz A.
>> A(1) = [ ]
A=
3 4 1 5 9 6 7 2
6. Luego de realizar los comandos, Qu informacin tiene E?
>> M = 'MATHTYPE'; N='QUESTION';
>> M = M(2:5);N = N(2:5);
>> E = [M' N']'
>> M = 'MATHTYPE'; N='QUESTION';
>> M = M(2:5);N = N(2:5);
>> E = [M' N']'
E=
ATHT
UEST
Explicacin: Cuando hago esto >> M = M(2:5);N = N(2:5); estoy definiendo tanto en
M como en N. Luego tomo solo los elementos de la posicin 2 hasta la 5 en M e igual
en N. Luego Defino E para que me devuelva a M y N como columna, tomando solo los
elementos ya definidos M = 'MATHTYPE'; N='QUESTION'
A=
2.0000 3.0000 -7.0000
2.0000 1.0000 -1.0000
1.0000 0.1000 1.0000
>> diag(A)
ans =
2
1
1
>>% la antidiagonal
>> diag(fliplr(A))
ans =
-7
1
1
8. Extraer los elementos de la parte triangular superior de A.
>> triu(A)
ans =
2 3 -7
0 1 -1
0 0 1
9. Crear la matriz mgica de M de 5x5 y usar la funcin del Matlab para hallar el valor
de la suma de los elementos de la diagonal.
>> M=magic(5) >>%suma de elementos de la diagonal
M= >> trace(M)
17 24 1 8 15 ans =
23 5 7 14 16 65
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
25
Matlab
EJERCICIOS PROPUESTOS
26
Matlab
OPERACIONES DE LA MATRIZ
Hemos visto ya el operador ' (traspuesto) para hallar la traspuesta de una matriz
traspuesta de un vector, tambin las operaciones con matrices.
1 2 3 1 1 1
Pero ntese que si C= , D= y x 1 1 1 entonces:
4 5 6 2 2 2
1 1 2
1 2 3 1 2 3
a) Estn bien definidos C*x'= 1 , C*D' = 1 2 .
4 5 6 1 4 5 6 1 2
1
b) Estn bien definidos x*x' = 1 1 1 1 (producto interno que es equivalente a la
1
1
operacin a elemento x.*x) y el x'*x = 1 1 1 1 (producto externo).
1
c) Sin embargo C*x y C*D no estn bien definidos.
Divisin izquierda:
x = A\B y tambin x=linsolve(A, B) soluciona A * x = B
Divisin derecha:
x = B/A soluciona x * A = B
27
Matlab
EJEMPLO
2x1 3x 2 4x 3 3
Resolver x x 2 x3 0.5
1
4x 7x 14x 3
1 2 2
OPERACIONES FILA
1ra) Escalamiento
2da) Intercambio
3ra) Reemplazo
28
Matlab
OPERACIONES COLUMNA
Sea B la siguiente matriz
>> B=[0 2 1 4; 5 0 1 0; 2 0 8 6]
B=
0 2 1 4
5 0 1 0
2 0 8 6
1ra) Multiplicacin de una columna por un escalar
>> B(:,2)=0.5*B(:,2) %0.5xColumna2 Columna2
B=
0 1 1 4
5 0 1 0
2 0 8 6
2da) Intercambio de columnas
>> aux = B(:,1); B(:,1)=B(:,2); B(:,2)=aux %Columna1 Columna2
B=
1 0 1 4
0 5 1 0
0 2 8 6
3ra) Adicionar a una columna otra columna por un escalar
>> B(:,4)=B(:,4)-4*B(:,1) %Columna4 4xColumna1 Columna4
B=
1 0 1 0
0 5 1 0
0 2 8 6
29
Matlab
pivote 6 2 2 412
m21 2 12 8
12
6 10 34
6
m31 63 12 3 13 9 3 27
m41 66 1 6 4 1 18 38
F2 2F1 F2
F3 1 F1 F3
2
F4 F1 F4
6 2 2 4 12
pivote 0 4 2 2 10
m32 124 3 0 12 8 1 21
m42 24 12 0 2 3 14 26
1
Los multiplicadores son en esta ocasin 3 y y el sistema de ecuaciones se reduce a:
2
F3 3F2 F3
F4 1 F2 F4
2
4
Tercer paso: El ltimo paso consiste en multiplicar la tercera ecuacin por 2y
2
restarla a la cuarta. El sistema resultante resulta ser:
30
Matlab
F4 2F3 F4
31
Matlab
FORMA DE CHOLESKI
Si A es definida positiva y simtrica entonces la factorizacin Lower Upper tambin se
puede realizar de la forma de Choleski que ser:
A = R * R
Siendo R = matriz triangular superior.
EJEMPLO
Factorizar:
2 3 4
A 1 1 1 por Gauss Doolittle, y
4 7 14
32
Matlab
U= P= 0 1 2
4.0000 -7.0000 14.0000 0 0 1 0 0 1
0 6.5000 -11.0000 1 0 0
0 0 -1.2308 0 1 0
Ntese que la matriz de pascal B es una matriz simtrica y definida positiva, por lo cual
la factorizacin de la forma de Choleski se ha llevado con xito.
4. FACTORIZACIN ORTOGONAL
Cuando A es rectangular, los factores de A se pueden hallar por ortogonalizacin.
[Q,R] = qr(A) produce una matriz triangular superior R de la misma dimensin de A y
una matriz ortogonal Q tal que A = Q*R.
[Q,R,P] = qr(A) produce una matriz de permutacin P, una matriz triangular superior R de
la misma dimensin de A y una matriz ortogonal Q tal que A*P = Q*R.
EJEMPLO
Factorizar ortogonalmente:
2 3 4 1 2 3 1
A 1 1 1 y B = 2 1 2 4 .
4 7 14 0 2 3 1
33
Matlab
5. NORMAS MATRICIALES
EJEMPLO
Extraer la norma 1, norma euclideana y norma del mximo de la matriz A.
>> A=[2,3,-4;1,-1,1;4,-7,14] >> norm(A,2) >> norm(A,1) >> norm(A,inf)
A= ans = ans = ans =
2 3 -4 16.8014 19 25
1 -1 1
4 -7 14
34
Matlab
6. ARREGLOS MULTIDIMENSIONALES
35
Matlab
EJERCICIOS DESARROLLADOS
LGEBRA MATRICIAL
1. Hallar la norma euclideana, la norma del mximo, la norma L1, de v=[2,3, 1, 2,1,3] .
>> v=[2,3,-1,2,1,3] v=
2 3 -1 2 1 3
>> norm(v) ans =
5.2915
>> norm(v,inf) ans =
3
>> norm(v,1) ans =
12
8.2563
>> norm(A,inf) ans =
12
>> norm(A,'fro') ans =
9.0554
>> cond(A) ans =
7.5751
3. Resuelva el Sistema lineal Ax = b, siendo A=[2,3, 7;2,1, 1;1, 2,3] , b=[1: 3]' .
>> A=[2,3,-7;2,1,-1;1,2,3] A=
2 3 -7
2 1 -1
1 2 3
>> b=[1:3]' b=
1
2
3
>> x=A\b x=
0.9063
0.5313
0.3438
>> [L,U,P]=lu(A) L=
36
Matlab
1.0000 0 0
1.0000 1.0000 0
0.5000 -0.2500 1.0000
U=
2 3 -7
0 -2 6
0 0 8
P=
1 0 0
0 1 0
0 0 1
>> [Q,U]=qr(A) Q=
-0.6667 0.4576 -0.5883
-0.6667 -0.7191 0.1961
-0.3333 0.5230 0.7845
U=
-3.0000 -3.3333 4.3333
0 1.6997 -0.9152
0 0 6.2757
37
Matlab
EJERCICIOS PROPUESTOS
2x1 3x 2 4x 3 3
1. Resolver el sistema lineal x 2x 2 x3 0
1
x 7x 2 14x 3 2
1
x 1 x 2 3x 4 4
2x x x x 1
1 2 3 4
2. Resolver el sistema lineal
13x x 2 x 3 2 x 4 3
x 1 2x 2 3x 3 x 4 4
3. Resolver los sistemas A x = b y B x = b utilizando:
1 2 0 1 1 3 2 1/ 2
2 4 1 1 2 6 1 0
A B
1 5 0 0 0 6 2 1
1 1 5 3 0 2
5 2
1 1 1
0 2 0
Siendo b ==> b 1 b2 b3
1 3 2
0 4 3
1
1 1 1 1
1 3 5 3 7
4. Factorice A 1 3 6 1 1 por Gauss Doolitle y tambin ortogonalmente.
1 4 1 2 3
0 2 3 4 5
5. Haga operaciones elementales filas a la matriz A con tal de convertir toda la 1ra
columna y debajo del primer elemento de A en ceros.
38
Matlab
1. POLINOMIOS
EJEMPLO
El polinomio p( x) x 3 4 x 2 10 en Matlab ser
>> p=[1 4 0 -10]
p=
1 4 0 -10
EVALUACIN DE POLINOMIOS
polyval(p, x) evala el polinomio p (que es un vector de longitud n+1 cuyos elementos
son los coeficientes del polinomio) en x.
EJEMPLO
El polinomio p( x) x 3 4 x 2 10 lo evaluamos en distintos x.
>> y=polyval(p,1) >> x=1:0.25:2
y= x=
-5 1.0000 1.2500 1.5000 1.7500 2.0000
PRODUCTO DE POLINOMIOS
conv(p,d) Multiplicacin de los polinomios p y d
DIVISIN DE POLINOMIOS
[Q,R] = deconv(p,d) Divisin de polinomios p y d, obtenindose el cociente Q y
residuo R.
EJEMPLO
Sean los polinomios p( x) x 3 4 x 2 10 y d ( x) x 2 2 se tiene
>> p=[1,4,0,-10];d=[1,0,-2]; >> [Q,R]=deconv(p,d) %division de p(x) por d(x)
>> m=conv(p,d) %producto de p(x) por d(x) Q=
m= 1 4
1 4 -2 -18 0 20 R=
0 0 2 -2
39
Matlab
FRACCIONES PARCIALES
A( x)
[R,P,Q] = residue(A,B) Descomposicin en fracciones parciales de , siendo
B( x)
A( x) R(1) R(2) R(n)
... Q( x)
B( x) x P(1) x P(2) x P ( n)
EJEMPLO
Descomponer en fracciones parciales
f ( x) = 4 x 2 x 3x2 2 =
3 2
a b c d
x ( x 1) x 1 x 1
2
x x2
Solucin:
A( x) 4 x3 x2 3x 2 , B( x) x2 ( x 1)2 x4 2 x3 x2 , luego en Matlab se tiene:
>> A=[4,-1,-3,- P=
2];B=[1,2,1,0,0]; -1 Entonces la expansin en fracciones parciales
>> [R,P,Q]=residue(A,B) -1 ser:
R= 0
3 0 4 x3 x 2 3x 2 3 4 1 2
-4 Q= 2
x ( x 1)
2 2
x 1 x 1 2
x x
1 []
-2
DERIVADAS DE POLINOMIOS
polyder(p) Es la derivada del polinomio p.
EJEMPLO
2. AUTOVALORES Y AUTOVECTORES
40
Matlab
EJEMPLO
2 3 4
Sea A 1 1 1
4 7 14
3. RACES DE POLINOMIOS
41
Matlab
4. RACES DE FUNCIONES
fzero Extrae las races de funciones lineales y no lineales, con el nico requisito de que
introduzca un valor inicial.
>> fzero('sin(x)-cos(x)',0)
ans =
0.7854
>> fzero('sin(2*x)-2*cos(x)+x^2-3*x-6',3)
ans =
3.9113
42
Matlab
EJERCICIOS DESARROLLADOS
>> p1=[2,0,-1,7] p1 =
2 0 -1 7
>> x = 1:0.3:4 x=
1 1.3 1.6 1.9 2.2 2.5 2.8 3.1 3.4 3.7 4
>> polyval(p1,x) ans =
Columns 1 through 5
8.0000 10.0940 13.5920 18.8180 26.0960
Columns 6 through 10
35.7500 48.1040 63.4820 82.2080 104.6060
Column 11
131.0000
p3
8. Hallar la descomposicin en fracciones parciales de
p1
>>[R,P,Q] = residue(p3,p1)
43
Matlab
EJERCICIOS PROPUESTOS
4
7. Hallar el desarrollo del trinomio p(x) = x3 - ix + 2 usando comandos del Matlab.
44
Matlab
ANATOMIA DE UN GRAFICO
- Modelo matemtico de la curva. Para esto se tiene que tener la ley o modelo
matemtico que describe el fenmeno, es decir
Modelo
Por una ley o modelo matemtico
45
Matlab
- Datos discretos de la curva. Para esto se tiene que tener datos de los pares ordenados
(X,Y), es decir
Datos
X = Pre imgenes
Y= Imgenes
plot(X) Representa los puntos (k, Xk). Si X es una matriz, hace lo mismo para cada
columna de la matriz. Si X es un vector complejo, representa Real(X) frente a
Imag(X).
EJEMPLO
>> x=[7,9,3,1,5,20,5]
x=
7 9 3 1 5 20 5
>> plot(x)
46
Matlab
EJEMPLO
Graficar f ( x) x 4 x 2 sen( x) en el intervalo [0, 5]
Solucin
>> x=0:0.2:5;
>> y=sqrt(x)+4*x.^2.*sin(x);
>> plot(x,y)
EJEMPLO
Graficar f ( x) e x xsen( x2 ) 2 en el intervalo [ - 3 , 3] con trazo de color rojo
etiquetas cuadradas y lnea punteada.
Solucin
>> x=-3:0.4:3;
>> y=exp(x)-x.*sin(x.^2)+2;
>> plot(x,y,'rs:')
47
Matlab
title(texto) Aade el texto como ttulo del grfico en la parte superior del mismo en
grficos 2-D y 3-D
xlabel(texto) Sita el texto al lado del eje x en grfico 2-D y 3-D
ylabel(texto) Sita el texto al lado del eje y en grficos 2-D y 3-D
zlabel(texto) Sita el texto al lado de eje z en un grfico 3-D
text(x,y,texto) Sita el texto en el punto (x,y) dentro del grfico 2-D
text(x,y,z,texto) Sita el texto en el punto (x,y,z) en el grfico 3-D
gtext(texto) Permite situar el texto en un punto seleccionado con el ratn dentro de un
grfico 2-D
LEYENDAS
Colocacin
legend(string1,string2,string3, ...) Crea las leyendas de los grficos correspondientes.
Localizacin
legend(...,'location',loc) Adiciona las leyendas en una ubicacin especfica con respecto a
los ejes. Esta ubicacin loc es de 1x4 posiciones y
combinaciones de acuerdo a:
'North' Dentro del cuadro grafico y arriba.
'South' Dentro y abajo.
'East' Dentro y a la derecha.
'West' Dentro y a la izquierda.
'NorthEast' Dentro y arriba a la derecha (default)
'NorthWest Dentro y arriba a la izquierda
'SouthEast' Dentro y abajo a la derecha
'SouthWest' Dentro y abajo a la izquierda
'NorthOutside' Fuera del cuadro grafico y arriba
'SouthOutside' Fuera y abajo
'EastOutside' Fuera y a la derecha
'WestOutside' Fuera y a la izquierda
'NorthEastOutside' Fuera y arriba a la derecha
'NorthWestOutside' Fuera y arriba a la izquierda
'SouthEastOutside' Fuera y abajo a la derecha
'SouthWestOutside' Fuera y abajo a la izquierda
'Best' Espacio no usado dentro del cuadro grafico
'BestOutside' Espacio no usado fuera del cuadro grafico
EJEMPLO
Graficar en el intervalo [ - 3 , 3] y1 xsen( x 2 ) 2 , y 2 x 4sen( x) , y3=x+0.3[x]
colocando titulo, descripcin de ejes y leyendas.
Solucin:
48
Matlab
>> x=-3:0.4:3;
>> y1=-x.*sin(x.^2)+2;
>> y2=abs(x)+4*sin(x);
>> y3=x+0.3*floor(x);
>> plot(x,y1,x,y2,x,y3);
>> title('Grfico de tres funciones');
>> xlabel('eje x');ylabel('eje y');
>> legend('-x*sen(x)', '|x|+4*sen(x)',
'x+0.3[x]')
Estos comandos permiten manipular los ejes de un grfico, la colocacin del mismo
dentro de la pantalla, su apariencia, su presentacin desde distintos puntos de vista, etc.
axis([xmin xmax ymin ymax]) Sita los valores mximo y mnimo para los ejes X e Y en el
grfico corriente.
axis (auto) Sita los ejes en la escala automtica por defecto (la dada por xmin=min(x),
xmax=max(x) e y libre).
axis (axis) Congela el escalado de ejes en los lmites corrientes, de tal forma que al situar
otro grfico sobre los mismo ejes (con hold en on), la escala no cambie.
V=axis Da el vector V de 4 elementos, conteniendo la escala de grfico corriente.
axis(ij) Sita coordenadas con el origen en la parte superior izquierda del grfico.
axis(square) Convierte el rectngulo de graficado en un cuadrado, con lo que las
figuras se abomban.
axis(equal) Sita el mismo factor de escala para ambos ejes.
axis (normal) Elimina las opciones square y equal.
axis(off) Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el ttulo del
grfico y los textos situados en l con text y gtext.
axis(on) Coloca de nuevo las etiquetas, marcas y rejillas de los ejes.
49
Matlab
EJEMPLO
Graficar f ( x) x x 2 sen( x) y g(x)=senx+[x2] en el intervalo [0, 5] dentro de una
region rectangular 2,7 30,30
Solucin
>> x=0:0.2:5;
>> y1=sqrt(x)+x.^2.*sin(x);
>> plot(x,y1)
>> hold on %superposicin
>> y2=sin(x)+floor(x.^2);
>> plot(x,y2)
>> axis([-2 7 -30 30])
>> grid %mallado
EJEMPLO
Para crear 2x3 = 6 subventanas y colocar el puntero en la posicin 4, se procede en
Matlab como:
>>subplot(2,3,4)
50
Matlab
>> x=0:pi/40:2*pi;plot(x,sin(x))
FUNCIN FPLOT
fplot('fun',limits) Plotea 'fun' entre limites [xmin xmax] o limites [xmin xmax ymin
ymax]. 'fun' es el nombre de una funcin M-file o una cadena con
variable x tal como 'sin(x)', 'diric(x,10)' o '[sin(x),cos(x),exp(x)]'.
fplot('fun',limits,S) Plotea 'fun' con las opciones definidas en S.
fplot('fun',limits,tol) Plotea 'fun' con el error relativo con tolerancia tol (por defecto
es 2*10-3).
fplot('fun',limits,tol,S) Plotea 'fun' con tolerancia tol y con las opciones def. en S.
fplot('fun',limits,n) Con n 1. Plotea 'fun' con un mnimo n 1 de puntos. El mximo
tamao de paso esta restringido por xmax-xmin .
n
[X,Y] = fplot('fun',limits) Retorna las abscisas y ordenadas para 'fun' en X e Y. No
hace la grfica.
EJEMPLO
Graficar f ( x) xsen( x) 2 en el intervalo [0, 5].
>> fplot('-x.*sin(x)+2',[0 5])
EJEMPLO
Graficar f ( x) xsen( x), g ( x) cos x x, h( x) x 2 3x 2 en el intervalo [0, 5].
51
Matlab
EJEMPLO
>> x=0:0.2:5;
>> semilogy(x,10.^x)
52
Matlab
EJEMPLO
Graficar
a) La rosa de 4 ptalos horizontal. b) La funcin polar r = 1 2*cos()
>> a=0:pi/40:2*pi; >> polar(a,1-2*cos(a))
>> polar(a,3*cos(2*a))
EJEMPLO
Graficar la rosa de 7 ptalos horizontal.
>> b=0:pi/100:2*pi;
>> polar(b,3*cos(7*b))
53
Matlab
. GRFICOS ESTADSTICOS
HISTOGRAMAS
bar(Y) Dibuja el grfico de barras relativo al vector Y
bar(X,Y) Dibuja el grfico de barrar relativo al vector Y cuyos elementos son
especificados a travs del vector X
EJEMPLO
>> y=[2 7 4 6 19 2];
>> bar(y)
EJEMPLO
>> x=[2 5 7 8 9 12];
>> y=[2 7 4 6 19 2];
>> bar(x,y)
54
Matlab
EJEMPLO
>> y=[2 1 3 2 1 2 3 1 2 3 2 1 2 3 4 5 5 3];
>> hist(y)
errorbar(x,y,e) Realiza el grfico del vector x contra el vector y con los errores
especificados en el vector e. Pasando por cada punto (xi,yi)
stem(Y) Dibuja el grfico de racimo relativo al vector Y. Cada punto del vector Y
es unido al eje x por una lnea vertical
stem(X,Y) Dibuja el grfico de racimo relativo al vector Y cuyos elementos son
especificados a travs del vector X.
pie(X) Realiza el grfico de sectores relativo al vector de frecuencias X.
pie(X,Y) Realiza el grfico de sectores relativo al vector de frecuencias X
desplazando hacia fuera los sectores en los que Yi 0
EJEMPLO
>> x=[1,4,0.5,2.5,2]; pie(x)
5. GRFICOS DE RELACIONES
ezplot(f) Plotea f sobre el dominio por defecto -2 < x < 2 .
ezplot(f, [a,b]) Plotea f sobre a < x < b
ezplot(f, [xmin,xmax,ymin,ymax]) Plotea f sobre xmin< x <xmax, ymin< y <ymax.
ezplot(x,y) Plotea en coordenadas paramtricas la curva plana
x= x(t), y= y(t) sobre el dominio por defecto
-2 < x < 2 .
ezplot(x,y, [tmin,tmax]) Plotea x = x(t) , y = y(t) over tmin < t < tmax.
Donde f puede ser una funcin estandar f = f(x) una funcin implicita f = f(x,y) = 0.
55
Matlab
EJEMPLOS
56
Matlab
EJEMPLOS
Grficos con dominio por defecto
>>ezpolar('cos(5*t)') >>ezpolar('1 + 2*sin(t/2)') >>ezpolar('1 - 2*sin(3*t)')
57
Matlab
5. IMAGENES
F = imread(filename) asigna el contenido del archive imagen a la variable matricial F.
Soporta los archivos *.jpeg, *.tiff, *.gif, *.png, *.hdf, *.ico, *.bmp, etc
image(F) visualiza la matriz C como una imagen en una ventana de figura.
>>F=imread('pcblack.bmp');image(F);
>>axis off %desactiva los ejes
EJERCICIOS RESUELTOS
1. Graficar el polinomio p1 = 2x3 x 7 en el intervalo [10 , 10].
2. Graficar la funcin xsen(x2) en el intervalo [ - 2 , 2].
3. Graficar las funciones 3sen(x) y e-0.2 x sobre un mismo grfico, para
x=0:0.1:4. Usar zoom y gtext para nombrar uno de los puntos de
interseccin de dichas funciones.
Solucin:
1. Graficar el polinomio p1 = 2x3 x 7 en el intervalo [10 , 10].
>>p1=[2,0,-1,7]
>>x=-10:0.5:10;y=polyval(p1,x);
>>plot(x,y)
58
Matlab
59
Matlab
>>x=0:0.1:4;
>>plot(x,3*sin(pi*x))
>>hold on
>>plot(x,exp(-0.2*x))
EJERCICIOS PROPUESTOS
1. Crear el archivo tipo texto datos.txt con los datos
1.0 7.5
2.5 4.0
3.2 5.0
3.5 5.5
2.0 6.3
7.8 6.2
8.1 6.0
9.7 5.0
10.3 3.0
2. Graficar usando este archivo la 1ra columna versus la 2da columna a travs
de una poligonal lineal, use textread para leer los datos de este archivo.
3. Grafique:
a. x2 y2 3
b. x + y = 10
5. Use subplot para dividir la ventana en 1x2 para luego graficar en ellas las
siguientes curvas paramtricas (R R2).
x1 sen(t) x sen(t)
,t [0,2] 1 ,t [0,2]
y1 sen(2t) y1 cos(t)
60
Matlab
1. CURVAS 3D
plot3(X,Y,Z) grfica la terna X, Y, Z dndonos as una curva en el espacio.
plot3(X,Y,Z,S) grfica la terna X, Y, Z dndonos as una curva en el espacio con
las caractersticas S igual que plot.
ezplot3(x,y,z) Grfica en coordenadas paramtricas x = x(t), y = y(t), z = z(t)
sobre el dominio por defecto 0 < t < 2 .
ezplot3(x,y,z ,[tmin,tmax]) Grfica x=x(t), y=y(t), z=z(t) sobre tmin < t < tmax.
EJEMPLO
>> x=0:0.8:8,y=x.^2,z=sqrt(x)
x=
0 0.8000 1.6000 2.4000 3.2000 4.0000 4.8000 5.6000 6.4000 7.2000 8.0000
y=
0 0.6400 2.5600 5.7600 10.2400 16.0000 23.0400 31.3600 40.9600 51.8400 64.0000
z=
0 0.8944 1.2649 1.5492 1.7889 2.0000 2.1909 2.3664 2.5298 2.6833 2.8284
>> plot3(x,y,z)
>> grid
EJEMPLO
>> ezplot3('cos(t)', 't * sin(t)', 'sqrt(t)', [0,6*pi])
61
Matlab
Explicacin:
62
Matlab
EJEMPLO
Solucin:
>> xa=0:0.5:2,ya=0:0.4:2
xa =
0 0.5000 1.0000 1.5000 2.0000
ya =
0 0.4000 0.8000 1.2000 1.6000 2.0000
>> [x,y]=meshgrid(xa,ya)
x=
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
0 0.5000 1.0000 1.5000 2.0000
y=
0 0 0 0 0
0.4000 0.4000 0.4000 0.4000 0.4000
0.8000 0.8000 0.8000 0.8000 0.8000
1.2000 1.2000 1.2000 1.2000 1.2000
1.6000 1.6000 1.6000 1.6000 1.6000
2.0000 2.0000 2.0000 2.0000 2.0000
63
Matlab
3. SUPERFICIES
Un grfico de malla tridimensional viene definido por una funcin z = f(x,y), de tal
forma que los puntos de la superficie se representan sobre una rejilla, resultado de
levantar los valores de z dados por f(x,y) sobre los correspondientes puntos del plano
(x,y). El aspecto de un grfico de malla es como una red de pesca, con los puntos de la
superficie sobre los nudos de la red. Realmente, es un grfico de superficie cuyo grafo
tiene forma de red.
El primer paso para representar una funcin de dos variables z = f(x,y) mediante su
grfico de superficie, es utilizar el comando meshgrid, que bsicamente define la matriz
de puntos (X,Y) sobre los cuales se evala la funcin de dos variables para hacer su
presentacin grfica.
Para representar un grfico de malla, se utiliza el comando mesh y sus variantes, cuya
sintaxis es la siguiente:
mesh(X,Y,Z) Representa el grfico de malla de la funcin z=f(x,y), dibujando las lneas
de la rejilla que componen la malla.
meshz(X,Y,Z) Representa el grfico de malla de la funcin z=f(x,y) con una especie de
cortina o teln en la parte inferior
waterfall(X,Y,Z) Representa el grfico de cascada de la funcin z=f(x,y).
surf(X,Y,Z) Representa el grfico de superficie de la funcin z=f(x,y)
surfl(X,Y,Z) Representa el grfico de superficie de la funcin z=f(x,y).
EJEMPLO
Graficar el paraboloide z x 2 y 2 en el dominio [ -5, 5 ]x[ -5, 5 ]
64
Matlab
>> [x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
>> z=x.^2+y.^2;
>> surf(x,y,z)
EJEMPLO
Graficar usando mesh, surf, contour y contour3 z x 2 y 2 en el dominio [-5, 5]x[-5, 5]
Solucin:
>> [x,y]=meshgrid(-5:0.25:5,-5:0.25:5);
>> z=x.^2 y.^2;
>> subplot(2,2,1);
>> mesh(x,y,z)
>> subplot(2,2,2);
>> surf(x,y,z)
>> subplot(2,2,3);
>> contour(x,y,z);
>> subplot(2,2,4);
>> contour3(x,y,z);
peaks es la funcin de 2 variables de presentacin del Matlab, para graficarla use mesh, surf,
pcolor, contour, etc.
z = peaks; [x,y,z] = peaks;
z = peaks(n); [x,y,z] = peaks(n);
z = peaks(v); [x,y,z] = peaks(v);
z = peaks(x,y);
EJEMPLO
65
Matlab
EJEMPLO
>> z=peaks(20); mesh(z); shading flat; colormap(hot)
4. COORDENADAS CILNDRICAS
Graficar el paraboloide z x 2 y 2 en el dominio rectangular [ -5, 5 ]x[ -5, 5 ] es una
situacin donde no estn tan claras las propiedades geomtricas del paraboloide, en
realidad en este caso es ms recomendable graficar usando un dominio circular que por
ejemplo podra ser un circulo de radio 5 centrado en el origen de coordenadas. Surge la
pregunta natural, cmo hacemos un mallado en el dominio circular?, el cual nos servir
para levantar el paraboloide. La respuesta es sencilla: Solo hay que usar el cambio de
coordenadas cilndricas a cartesianas.
COORDENADAS CILNDRICAS
x r cos(u )
y rsen(u ) , u [, ], r [r1, r2 ]
z z
EJEMPLO
Graficar el paraboloide z x 2 y 2 en el dominio circular de radio 5 y centrado en el
origen de coordenadas.
66
Matlab
>> [r,u]=meshgrid(0:0.25:5,0:pi/20:2*pi);
>> x=r.*cos(u);
>> y=r.*sin(u);
>> z=x.^2+y.^2;
>> surf(x,y,z)
5. COORDENADAS ESFRICAS
COORDENADAS ESFRICAS
x rsen(v)cos(u )
y rsen(v) sen(u ), u [1 , 2 ], v 1 , 2
z r cos(v)
EJEMPLO
Graficar parte del hemisferio superior
indicado con radio = 5.
67
Matlab
6. COORDENADAS PARAMTRICAS
COORDENADAS PARAMTRICAS EN SUPERFICIES
x x(u, v)
y y (u, v), u [u1 , u2 ], v v1 , v2
z z (u, v)
x x(t )
y y (t ), t [t1 , t2 ]
z z (t )
68
Matlab
EJEMPLO
>> cylinder(3,50) >> sphere >>ellipsoid(0,0,0,10,5,2)
EJERCICIOS DESARROLLADOS
1. Grafique usando mesh, surf, contour y contour3, z1 x 2 2 y 2
>> [x,y]=meshgrid(-3:0.2:3,-3:0.2:3);
>> mesh(x,y,x.^2-2*y.^2)
>> surf(x,y,x.^2-2*y.^2)
>> contour(x,y,x.^2-2*y.^2)
>> contour3(x,y,x.^2-2*y.^2)
69
Matlab
>> [x,y]=meshgrid(-3:0.2:3,-3:0.2:3);
>> z=floor(sin(x))+cos(y);
>> surf(x,y,z)
70
Matlab
71
Matlab
EJERCICIOS PROPUESTOS
2xy
1. Grafique usando mesh, surf, contour y contour3 z3 . Para x = 0.25:0.25:5,
x y2
2
y= 0.25:0.25:5
2. Grafique x y z 2 sen(), 0 : / 20 : 2
3. Use subplot para dividir la ventana en 1x2 para luego graficar en cada una de ellas las
siguientes curvas paramtricas (R R3).
x sen(t )
i. y sen(2t ) , t [0, 2]
z 2t
x sen(t )
b) y cos(t ) , t [0, 2]
z cos(t )
4. Grafique el Toroide
x cos(t )(4 cos(v))
y sen(t )(4 cos(v)), t [0, 2], v 0, 2
z sen(v)
72
Matlab
Las condiciones se construyen con operadores relacionales y lgicos, los cuales son:
2. PROGRAMAR EN MATLAB
Al igual que en los lenguajes de alto nivel, MATLAB permite crear programas utilizando
programacin estructurada. Para ello cuenta con condicionales, bucles y funciones.
Asimismo utiliza muchos de los recursos de la programacin orientada a objetos.
Pero MATLAB slo puede ejecutar funciones (archivos- m) que estn en sus libreras
o en el directorio actual; por ello es necesario cambiar al directorio donde salvamos
nuestro archivo antes de poder ejecutarlo. Para ver en que directorio estamos se
emplea la orden pwd. Mientras que para cambiar de directorio de trabajo se usa
cd, por ejemplo para cambiar al directorio mio basta poner cd C:\mio. Tambin es
73
Matlab
posible realizar el cambio mediante la opcin Set Path del men File, pulsando
Browser.
SCRIPTS
Un script se define mediante un archivo- m, el cual esta formado por un conjunto de
sentencias pero no tiene la cualidad de ser una funcin como y = sin(x) que posee
argumentos de salida.
FUNCIONES
Una funcin se define mediante un archivo- m, cuyo nombre coincide con el de la
funcin. La primera lnea ejecutable debe tener la palabra function. Su sintaxis es
function argumentos_salida= nombre_funcin (argumentos_entrada)
seguida de las instrucciones necesarias. Cuando hay ms de un argumento de salida,
stos deben ir entre corchetes y separados por comas. Por ejemplo:
IMPLEMENTACIN DE UN PROGRAMA
Calcule el valor de la hipotenusa de un tringulo rectngulo a partir de sus dos catetos.
a) Cree un Script.
b) Cree una Funcin.
Solucin:
a) SCRIPT.
Crear el m-archivo
Desde el men File, seleccionamos New, y vamos a crear un nuevo archivo
eligiendo la opcin m-file, luego digitamos el programa como sigue:
74
Matlab
b) FUNCIN.
Crear el m-archivo
En resumen:
PROGRAMAS EN MATLAB
Archivos
nombre.m
Script Funcin
Para implementar la ayuda en lnea se usan las primeras lneas del fichero para
comentarios (inicindolas con '%'), explicando cmo debe usarse la funcin y sus
argumentos (tanto de entrada como de salida). As, dicha definicin ser visible mediante
la instruccin help nomfuncion.
EJEMPLO
Construyo el programa que calcule el permetro del tringulo, implementando tambin
su ayuda.
76
Matlab
if condicin
Instrucciones que deben ejecutarse si la condicin es
verdadera
else
Instrucciones a ejecutar si la condicin es falsa
end
77
Matlab
if condicin
Instrucciones que deben ejecutarse
end
LA FUNCIN error.
Muestra mensajes de error.
error('message') Muestra un mensaje de error y finaliza el programa.
error('message',a1,a2, ...) Muestra un mensaje de error conteniendo formatos similar
al printf del c++ o al fprintf del Matlab y finaliza el programa.
EJEMPLO
EJEMPLO
78
Matlab
Solucin:
Creacin de la funcin.
EJEMPLO
El siguiente programa analiza si son iguales o diferentes las matrices, vectores o
nmeros.
Ejecucin:
>> A=[1 2;3 4],B=[5 6;7 8]
A=
1 2
3 4
B=
5 6
7 8
>> compara(A,B)
ans =
distintas
EJEMPLO
El siguiente programa analiza el tipo de tringulo que se tiene, dados sus tres lados, de
acuerdo con el siguiente algoritmo
a
b
79
Matlab
Creacin de la funcin.
Desde el men File, seleccionamos New, y vamos a crear un nuevo archivo
eligiendo la opcin m-file, luego digitamos el programa como sigue:
function r=triangulo(a,b,c);
if nargin ~= 3
error('Nmero de argumentos incorrecto, debe ser 3 datos');
end
x=sort([a b c]);
if ~isempty(find(x<0))
error('Valores inconsistentes de algn lado');
end
if (x(3)>x(1)+x(2))
error('No forman un triangulo');
elseif (x(3)==x(1)+x(2))
r='Triangulo Llano';
else
if (x(1)==x(2) & x(2)==x(3))
r='Triangulo Equilatero';
return;
elseif (x(1)==x(2) | x(2)==x(3))
r='Triangulo Isosceles';
else
r='Triangulo Escaleno';
end
if (hipotenusa(x(1),x(2))==x(3))
r=[r,' rectangulo'];
end
end
80
Matlab
81
Matlab
SENTENCIA switch
Ntese que los conjuntos se delimitan con llaves y los elementos de este se separan por
comas tal como a, b, c,... , si el conjunto solo tiene un elemento no necesita colocrsele
llaves.
EJEMPLO
Creando la funcin
82
Matlab
NOTA
Una variante donde es posible entrar notas decimales y que el programa lo redondee y
por ejemplo si Ud. Introduce 10.5 dara de resultado Aprobado Regular, seria con el
siguiente cdigo:
function [cond,tipo] = reporte(n);
if nargin ~= 1, error('Numero de argumentos incorrecto') ,end
if (n<0 | n>20), error('Nota incorrecta, debe ser de 0 .. 20') ,end
cond='Aprobado';
tipo='Malo';
n=round(n); %cdigo que redondea la nota
switch n
case {0,1,2,3,4,5,6,7,8,9,10}
cond='Desaprobado';
case {11,12,13}
tipo='Regular';
case {14,15,16}
tipo='Bueno';
case {17,18,19,20}
tipo='Excelente';
end
As si se ejecuta en la ventana de comandos, se tendr:
>> [c,t]=reporte(10.5) >>[c,t]=reporte(13.7)
c= c=
Aprobado Aprobado
t= t=
Regular Bueno
83
Matlab
La sentencia try catch end permite gestionar los errores que se producen en
tiempo de ejecucin. Su sintaxis es:
try
Instrucciones1
catch
Instrucciones2
end
EJEMPLO
Programa que adivina la edad.
84
Matlab
SISTEMAS DE NUMERACIN
Matlab permite trabajar con sistemas de numeracin de base cualquiera, siempre y
cuando se disponga del Toolbox extendido de matemticas simblica. Adems, permite
expresar los nmeros en las diferentes bases. Las funciones de trabajo con sistemas de
numeracin en diferentes bases que implementa Matlab son las siguientes:
dec2bin Convierte en nmero decimal especificado a base 2 (binaria)
dec2hex Convierte el nmero decimal especificado a base 16 (hexadecimal)
dec2base Convierte el nmero decimal especificado a la base indicada
bin2dec Convierte el nmero binario especificado a base decimal
hex2dec Convierte el nmero hexadecimal especificado a base decimal
base2dec Convierte el nmero de la base especificada a base decimal
EJEMPLO
FORMATO REPRESENTACIN
"formato largo" de 3 sqrt(3);format long; ans
"formato racional" de 3 format rat; ans
"con 10 cifras decimales" de 3 vpa(ans,10)
"con 100 cifras decimales" de vpa 'pi' 100
"con 20 cifras decimales" de digits(20); vpa '173/13'
"Representacin binaria" de 1234 dec2bin(1234)
"Representacin en base 10" de un valor en base 16 base2dec(BF34A,16)
EJEMPLO
85
Matlab
VARIABLES ESPECIALES
En Matlab existen variables de uso comn, cuyo valor viene ya preasignado.
pi 3.1415926535897932385 NaN Indeterminacin (Not a Number, por ejemplo 0/0)
ij Unidad imaginaria ( 1 ) realmin El menor nmero real positivo utilizable
inf Infinito, por ejemplo 1/0 realmax El mayor nmero real positivo utilizable
eps Menor valor positivo que ans Variable creada automticamente para representar
sumado a la unidad tiene el ltimo resultado procesado que no se ha
representacin diferente a 1. asignado a ninguna variable.
Indica la distancia desde 1.0 al
siguiente nmero en coma
flotante.
6. BUCLES
86
Matlab
EJEMPLO
Calcular con for la suma M = 1(4)(2) + 2(5)(4) + 3(6)(6) + . . .+ 20(23)(40).
Solucin:
20
Expresndolo a travs del smbolo de sumatoria M k (k 3)(2k )
k 1
EJEMPLO
87
Matlab
Solucin:
C:\matlab7\work\ploteos.m
x1=[0:0.1:5]'; % 51 elementos
x2=[-2.5:0.1:2.5]'; % 51 elementos
x3=[-pi:pi/25:pi]'; % 51 elementos
A=[x1 x2 x3];
f=1;
for k=A
figure(f);
plot(k,sin(k));
f=f+1;
end
>> ploteos
88
Matlab
EJEMPLO
Implemente la funcin elevapol(p,n) la cual eleve el polinomio p al exponente n.
C:\matlab7\work\elevapol.m
function y=elevapol(p,n);
%funcin elevapol(p,n) la cual eleva el polinomio 'p' al exponente 'n'
pro=1;
i=1;
while i<=n
pro=conv(pro,p);
i=i+1;
end
y=pro;
Ejecucin:
Si queremos elevar x 1 al exponente 4, ejecutamos en la ventana de comandos
89
Matlab
BREAK Y CONTINUE
La instruccin continue pasa el control a la iteracin siguiente en el bucle for o while es
decir ignora las instrucciones que siguen al continue en el cuerpo del bucle.
La instruccin break finaliza la ejecucin del bucle for o while y luego el programa
sigue fuera del bucle. Hay muchos usos para la instruccin break, uno de los bastante
usados es para salir de un bucle infinito, como por ejemplo
while (1)
..
Bucle if (condicion)
infinito break;
end Salida del
bucle
end
while (condicin)
..
Bucle if (condicion)
infinito continue; Hasta el
end final
end
EJEMPLO
Crear una matriz aleatoria de tamao aleatorio y dar la suma de sus columnas.
Se crea la funcin de suma aleatoria [A,suma]=srandom. Se graba como: srandom.m
function [A,s]=srandom;
n=1;A=[ ];s=sum(A);
while (1)
90
Matlab
if (s>4)
break;
end
A=rand(n);
s=sum(A);
n=n+1;
end
7. SUBFUNCIONES
Las funciones definidas mediante m archivos pueden contener cdigo para ms de una
funcin. La funcin en el m archivo se denomina funcin primaria, que es
precisamente la funcin que invoca el m archivo. Pero adicionalmente pueden haber
subfunciones colgando de la funcin primaria y que slo son visibles para dicha funcin
primaria o para otra subfuncin dentro del mismo m archivo. Cada subfuncin
comienza con su propia lnea de definicin de funcin.
function A=funprincipal(a,b,);
function M1=subfun1(x1,y1,);
function M2=subfun2(x2,y2,);
.
:
function Mn=subfunn(xn,yn,);
91
Matlab
EJEMPLO
Implementacin del programa que calcula el promedio de una coleccin de datos, es
decir:
[1] Media Aritmtica
[2] Media Geomtrica
[3] Media Armnica
C:\MATLAB7\WORK\medias.m
function r=medias(x);
n=length(x); %tamao del vector
if ~isempty(find(x<0)) %validacin de datos
error('No puede haber datos negativos');
end
disp(' PROMEDIOS ');
disp(' ========== ');
disp('[1] Media Aritmtica ');
disp('[2] Media Geomtrica ');
disp('[3] Media Armnica ');
disp('[4] Salir ');
op = input('Ingrese opcion ==> ');
switch (op)
case 1
disp('La Media Aritmtica es:');
r=ma(x,n);
case 2
disp('La Media Geomtrica es:');
r=mg(x,n);
case 3
disp('La Media Armnica es:');
r=mh(x,n);
case 4
r='Fin';return;
end
function rr=ma(x,n);
rr=sum(x)/n;
function rr=mg(x,n);
rr=prod(x)^(1/n);
function rr=mh(x,n);
rr=n/sum(1./x);
Ejecucin:
>> x=[4,7,10,13] >> x=[2 -1 3 4]
92
Matlab
x= x=
4 7 10 13 2 -1 3 4
>> medias(x) >> medias(x)
PROMEDIOS ??? Error using ==> medias
========= No puede haber datos negativos
[1] Media Aritmtica
[2] Media Geomtrica
[3] Media Armnica
[4] Salir
Ingrese opcion:2
La Media Geomtrica es:
ans =
7.7674
EJEMPLO
>> N=14;nom='Carola';fprintf('El promedio de %s es de %d',nom,N)
El promedio de Carola es de 14
>> N=14;fprintf('%d en el sistema octal es %o',N,N)
14 en el sistema octal es 16
>> ape='Hermenegildo';nom='Bush';fprintf('mi apellido es %s\nmi nombre es %s',ape,nom)
mi apellido es Hermenegildo
mi nombre es Bush
>> fprintf('La tercera parte de 22 es %0.2f',22/3)
La tercera parte de 22 es 7.33
>> fprintf('La tercera parte de 22 es %10.2f',22/3)
93
Matlab
EJEMPLO
Imprimir 10 nmeros aleatorios y sus cuadrados.
94
Matlab
EJERCICIOS
1. Sea A una matriz de mxn y B una matriz de pxq. Implemente la funcin bloque(A,B)
la cual genere la matriz bloque diagonal (m+p)x(n+q).
2. Crear la funcin (programa) r = mmedad(n) que al ingresar la edad de la persona n,
determine si es 1=mayor de edad o 0=menor de edad sin usar el comando if. Por
ejemplo cuando ejecute en la ventana de comandos:
>>r = mmedad(17)
debe dar:
r=
0
3. Escribir una funcin (programa) para calcular el mayor y menor lado de un tringulo
sin usar la sentencia if.
4. Implemente la funcin polysum(p,q) la cual sume los dos polinomios.
5. Implemente la funcin antidiag(A) la cual extraiga la antidiagonal de la matriz A.
Dicha funcin deber mostrar un mensaje de error en caso que la matriz A no sea
cuadrada.
6. Implemente la funcin sgeo(x, n) para calcular la suma de los primeros n trminos de
1
la serie 1 x x 2 x3 ... . Validar para que solo acepte valores de x tal que
1 x
x 1 .
7. Implemente una funcin aitken(n) que genere n trminos de la sucesin definida por
( xn 1 xn )2
yn xn
xn 2 2 xn 1 xn
95