Está en la página 1de 18

PRACTICA N°2

CADENAS DE CARACTERES.
En MATLAB podemos asignar a una variable una secuencia de letras, por ejemplo, ``hola''. Para ello simplemente hay que
escribir el texto entre apóstrofes.
>> h='hola'
h=
    hola
>> h
ans= hola
El comando whos nos informa que h ha sido almacenado como un vector. Al ser un vector podemos extraer, por ejemplo, su
cuarta componente.
>> h(4)
ans = a
El comando num2str pasa una variable numérica a una cadena de carácteres.
>> a=7.895
a= 7.8950
>> s=num2str(a)
s= 7.895

Ejercicios:
1. Cuánto vale s(3) en el ejemplo?
2. Consulta la ayuda de la instrucción setstr. >Que se obtiene con las expresiones setstr(65), setstr(1) y setstr(126)?
3. Comprueba como actúan las funciones habituales sobre cadenas de caracteres mediante, por ejemplo, sin('quepasa') y
log('quepasa').

VECTORES Y MATRICES.
>> A=[3 1 5; 2 1 2]
>> A(1,3) % elemento en la posición (1,3)
ans = 5
>> B=[2,-1,4;5,2,3]
>> A+B % suma de matrices
ans = 5 0 9
735
>> C=[2 3 ; -1 3; 6 -2]
>> A+C % cuidado con las dimensiones
??? Error using ==> + Matrix dimensions must agree.
>> A+C' % dimensiones correctas para sumar
ans = 5 0 11
540
>> D = [1 -1; 5 -4; 1 6]
>> 3*D
ans = 3 -3
15 -12
3 18
>> A*D % funciona el producto de matrices
ans = 13 23
9 6
>> A*B % de nuevo las dimensiones...
??? Error using ==> * Inner matrix dimensions must agree.
>> A=[1 6;-8 1];
>> B=[-2 3;-4 2];
>> A*B % producto matricial
ans = -26 15
12 -22
>> A.*B % producto elemento a elemento
ans = -2 18
32 2
>> A./B % dividimos elemento a elemento
ans = -0.5000 2.0000
2.0000 0.5000
>> A.^2
ans =
1 36
64 1
>> A^2 % al ser una matriz cuadrada es equivalente a A*A
ans =
-47 12
-16 -47
>> C=[4 1; 1 9]
>> C.^(1/2) % igual que ejecutar sqrt(C)
ans =
21
13
>> C^(1/2)
ans =
1.9899 0.2007
0.2007 2.9933

En el caso de vectores o matrices, estas funciones actúan sobre cada uno de los elementos.
>> a=[1,2,3];
>> sqrt(a)
ans =
1.0000 1.4142 1.7321
>> sin(3*a)
ans =
0.1411 -0.2794 0.4121
>> log(5*a)
ans =
1.6094 2.3026 2.7081
>> A=[3 1 5; 2 1 2; 1 2 0];
>> sqrt(A) % raiz cuadrada elemento a elemento
ans =
1.7321 1.0000 2.2361
1.4142 1.0000 1.4142
1.0000 1.4142 0
>> abs([1,-2,3,-5])
ans=
1235

EXPRESIONES LÓGICAS.
MATLAB es capaz de respondernos si ciertas expresiones son verdaderas o falsas. Si la comparación es cierta, MATLAB nos
responderá con un uno y si es es falsa con un cero.
>> 3<4
ans= 1
>> 4<3
ans=0

La siguiente tabla nos muestra el formato de las comparaciones que podemos realizar con MATLAB.
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== igual que
= no igual que

Para los valores lógicos hay definidas tres operaciones fundamentales que en informática reciben los nombres AND, OR y NOT:
p&q Operación AND. Si las expresiones p y q son verdaderas devuelve el valor uno y en caso contrario cero.
P|q Operación OR. Si alguna de las afirmaciones p o q son verdad devuelve uno, en caso contrario devuelve cero.

Si comparamos dos matrices del mismo orden, MATLAB nos responde con la matriz que resulta al comparar elementos con
mismos índices.
>> [1 2; 2 4] >= [1 2; 3 4]
ans=
1 1
0 1
Si comparamos una matriz con un número, el resultado es una matriz que muestra el valor lógico de la comparación de cada
elemento de la matriz con dicho número.
>> [1 2; 3 4] >= 2
ans=     
0 1
1 1
p Operación NOT. Cambia el valor lógico de p.
>> p=[1 1 0 0]; q=[1 0 1 0];
>> [p&q;p|q; p]
ans=    
1 0 0 0
1 1 1 0
0 0 1 1
>>3>2 | 1<0
ans=  1

 También existen variables lógicas que toman los valores 0 (falso) o 1 (verdadero) . Por ejemplo:
>> v =[1 2 3]
>>abs(v)>=2      % Vector lógico cuyas coordenadas valen 1 si la coordenada
                   % correspondiente de v es >= 2 y 0 si no lo es
ans =
011
>>vector=v(abs(v)>=2) % Vector formado por la coordenadas de v que
                        % verifican la desigualdad
vector =
23
>>v2=[3 2 1]
v2 =
321
>>logica=v==v2   % Asignación de un valor lógico (el doble signo igual es el 
                   % igual lógico)
logica =
010
>>logic2=v~=v2   % Distinto (~ es el operador de negación)
logic2 =
101

La instrucción any aplicada a un vector devuelve el valor uno si algún elemento del vector vale uno y cero en caso contrario. La
instrucción all aplicada a un vector devuelve el valor uno cuando todos los elementos del vector valen uno y devuelve cero en
caso contrario.
>> any([1 0 0 1])
ans=1
Nota: Esta última instrucción equivale a 1|0|0|1.
Si se aplica el comando any o all a una matriz, MATLAB devuelve un vector fila que resulta de efectuar a cada uno de los
vectores columnas la operación any o all, respectivamente.
El comando exist responde si una variable está definida en el Workspace. Notemos que el argumento de exist debe ser una
cadena con el nombre de la variable.
>> a=2; exist('a')
ans=   1

 Se puede trabajar con polinomios: basta tener en cuenta que un polinomio no es más que un vector. El orden de los
coeficientes es de mayor a menor grado, por ejemplo: 
>>p=[1 0 2 0 3]       % Polinomio x^4+2*x^2+3
p=
10203
>>q=[2 1 0]           % Polinomio 2*x^2+x
q=
210
 MATLAB tiene funciones específicas para polinomios como: 
>>polyval(p,-1)  % Evaluación del polinomio x^4+2x^2+3 en x=-1
ans =
6
>>pro=conv(p,q)  % Producto de los polinomios p y q
pro =
2142630
>>deconv(pro,p)  % Cociente entre pro y p; obviamente el resultado es q
ans =
210
>>roots(pro)     % Raíces del polinomio pro
ans =
     0
 0.6050+1.1688i
 0.6050-1.1688i
-0.6050+1.1688i
-0.6050-1.1688i
-0.5000
>>poly([i -i 1/2 pi])  % Polinomio mónico que tiene por raíces a los 
                       % números i, -i, 0.5 y pi
ans =
1.0000 -3.6416 2.5708 -3.6416 1.5708

OPERACIONES MATEMÁTICAS SIMPLES CON MATRICES Y VECTORES

Una vez introducidas las matrices en el espacio de trabajo es posible realizar operaciones elementales
entre ellas, siempre que se verifiquen las condiciones de dimensionalidad adecuadas.
A continuación mostramos las principales operaciones entre matrices.
Suma de matrices :
>> A+B
Producto de matrices :
>> A*B
Potencia n-ésima :
>> A^n
Sumar un escalar a todos los elementos de una matriz:
>> A+2
Multiplicar un escalar por los elementos de una matriz:
>> k*A
Transpuesta:
>> A’
Determinante :
>> det(A)
Inversa :
>> inv(A)
División izquierda :
>> A\ B; (similar a inv(A)*B)
División derecha:
>> B/A; (similar a B*inv(A))
Producto, elemento a elemento, de dos matrices:
>> A . * B
Cociente, elemento a elemento, de dos matrices:
>> A . / B
Potencia n-ésima de los elementos de una matriz:
>> A . ^ n
Potencia de los elementos de una matriz a los exponentes dados por otra:
>> A . ^B

Ejemplo:
Considere las siguientes matrices:

Entonces las operaciones A*B (producto matricial de A con B), A+B (suma de A mas B), 3*A
(multiplicación escalar de 3 por A) tienen los siguientes resultados:
»A*B
ans =
16 19 13
10 11 7
»A+B
??? Error using ==> +
Matrix dimensions must agree.
»3*A
ans =
12 15
6 9
Note que MATLAB “anuncia” que A+B no se puede calcular. Las operaciones A’ (transpuesto de A),
inv(A) (inversa de A), y A^3 (esto es A*A*A) tienen como resultados:
»A’
ans =
4 2
5 3
»inv(A)
ans =
1.5000 -2.5000
-1.0000 2.0000
»A^3
ans =
174 235
94 127
Si precedemos las operaciones matriciales “*”, “^” con el punto “.”, entonces estas se hacen termino a
termino. Por ejemplo A.*C y A.^2 generan:
» A.*C
ans =
-4 10
4 12
» A.^2
ans =
16 25
4 9
Cálculo de la dimensión de una matriz :
>> size(A)
Cálculo de la longitud de un vector :
>> length(V)
Valores propios o autovalores:
>> eig(A)
Vectores propios o autovectores:
>> [ V , D ]=eig(A)
Esta última instrucción da lugar a una matriz diagonal D formada por los autovalores y a una matriz V
cuyas columnas son los autovectores, de modo que se verifica V-1 X V = D.
Diagonal de una matriz :
>> diag(A)
proporciona un vector columna cuyos elementos son los de la diagonal principal de una matriz A.
Diagonal k-ésima de una matriz:
>> diag(A,k)
proporciona un vector columna formado por los elementos de la k-ésima diagonal de la matriz A (k es un
entero positivo o negativo).
Matrices diagonales :
>>diag(v)
proporciona una matriz cuadrada, diagonal, cuya diagonal principal son los elementos del vector v. Para
obtener una matriz cuadrada cuya diagonal coincida con la de determinada matriz A emplearemos la
instrucción
>> diag(diag(A))
Cuando v es un vector y k un número entero,
>> diag(v,k)
es la matriz cuadrada de orden n+abs(k) con los elementos de v en la k-ésima diagonal.
Matriz triangular inferior :
>> tril(A)
Elementos debajo de la k_ésima diagonal inferior de la matriz A :
>> tril(A,k)
Matriz triangular superior :
>> triu(A)
Elementos encima de la k_ésima diagonal superior de A :
>> triu(A,k)
Obsérvese que a partir de las operaciones elementales anteriores es posible calcular otros conjuntos
elementos más complejos de una matriz. Por ejemplo, la norma de las columnas de una matriz A puede
calcularse como
>> sqrt( sum ( A.^2 ) )

Ejemplo:
a. Dado un vector, determinar su longitud:
x = [1 2 3 4 5 6 7 ]
>> l = length(x)
l= 7
b. Dado la matriz A, cual es su tamaño
A= [1 2 3; 4 5 6]
>>y = size(A)
>>[f, c] = size(A);
y= 2 3
f= 2
c= 3

MATRICES ESPECIALES

El MATLAB es capaz de generar numerosas matrices especiales con gran facilidad, como se muestra a
continuación:
Números enteros entre 1 y 20:
>> X1=1:20
Números enteros entre 1 y 200:
>> X2=(1:200)
Números entre 1 y 5 tomados de 0.1 en 0.1:
>> X3=(1:0.1:5)
Matriz 3x4 de números aleatorios gaussianos:
>> X5=randn(3,4)
Matriz 2x10 de números aleatorios distribuidos uniformemente:
>> X6=rand(2,10)
Matriz identidad 4x4:
>> X7=eye(4)
Matriz de ceros 3x3:
>> X8=zeros(3)
Matriz de ceros de orden 3x4:
>> X9=zeros(3,4)
Matriz de unos de orden 4x4:
>> X10=ones(4)
Matriz de unos de orden 4x2:
>> X11=ones(4,2)
Igualmente, siendo A la matriz definida inicialmente, MATLAB es capaz de generar otras matrices del
tamaño de la matriz A en cualquiera de las siguientes formas:
Matriz de números aleatorios gaussianos de las dimensiones de A:
>> X11=randn(size(A))
Matriz de números aleatorios uniformes de las dimensiones de A:
>> X12=rand(size(A))
Matriz identidad de las dimensiones de A:
>> X12=eye(size(A))
Matriz de unos de las dimensiones de A:
>> X13=ones(size(A))
Matriz de ceros de las dimensiones de A:
>> X14=zeros(size(A))

Ejemplo:
Basándonos en el generador randn de números aleatorios Gaussianos N(0,1), es posible muestras
aleatorias de cualquier distribución normal. Por ejemplo, para generar números aleatorios muestreados
de una normal N( µ, σ2) bastará con realizar sucesivamente la operación µ + σ*randn, es decir,
>> mu+sigma*randn
donde mu = µ y sigma = σ

MANEJO DE SUBÍNDICES

Otra forma de asignar valores a una matriz (o un vector) es por medio de los subíndices. El menor
subíndice utilizado por MATLAB es 1. Y va añadiendo valores a medida que se requieran. Los
subíndices se escriben entre paréntesis. Por ejemplo:
A(2, 3) =1; Asigna al elemento en la fila 2, columna 3 el valor de 1.
Si se desea cambiar todo el valor de una fila o una columna, es muy sencillo hacerlo con el operador “:”
así:
A(1 , :) = [4 5 6];
Asigna a la fila 1 el vector [4, 5, 6] (cambia la fila 1 por 4, 5, 6). Así si A era una matriz de 33 de ceros,
ahora queda:
4 5 6
0 0 0
0 0 0
Dada una determinada matriz A = (aij) es posible obtener, de forma sistemática, numerosos
subconjuntos de sus elementos :
>> A(i,j) proporciona el elemento (i,j) de la matriz A.
>>A(i,:) - proporciona la fila i.
>> A(:,j) - proporciona la columna j.
Si X es un determinado vector e I un conjunto de índices, X(I) proporciona un nuevo vector que contiene
los elementos del vector X correspondientes a los índices I.
Por ejemplo, sea X=randn(1,30) y sea I=(5:2:20); X(I) proporciona los elementos de X comprendidos
entre el 5 y el 20 tomados de dos en dos.
Igualmente pueden considerarse subconjuntos de elementos de un vector X que verifiquen alguna
relación de desigualdad:
>> Y = X (X < = 1);
da lugar a un vector Y formado con los elementos menores o iguales que uno del vector X.
Si deseamos el conjunto de índices de los elementos de un vector que verifican determinada relación
acudiremos al comando:
>> I=find(X<1)
que proporciona el conjunto de índices donde la variable X toma valores menores que 1.
También es posible eliminar los elementos de un vector que cumplan determinada relación:
>> X (X < 0) = [];
hace desaparecer los elementos negativos del vector X.

Ejemplo::
1. Dado el vector X=rand(20,1), comprobar que find ( X < 2 ) = X ( X < 2 ).
2. Hallar el conjunto de índices donde X<0.
Igualmente se pueden crear variables binarias que toman los valores 0 ó 1 según sea verdadera o falsa
determinada relación.
>> Y=X<4;
Crea un vector Y que toma el valor 1 donde el correspondiente elemento de X sea menos que 4 y 0 en
caso contrario.
Por último, es posible cambiar el valor de determinados elementos de una matriz.
Si, por ejemplo, tenemos que

y hacemos
>> A(1,3)=0.5
el elemento A(1,3) de la matriz tomará el valor 0.5.
Si hacemos
>> A(:,3)=[2 3 –1]'
sustituiremos la tercera columna de la matriz A por (2 3 –1)'. Análogamente
>> A(1,:)=[1 0 1]
sustituye la primera fila de la matriz A por (1 0 1).

SOLUCIÓN DE SISTEMAS DE ECUACIONES LINEALES

Un sistema de ecuaciones lineales puede ser resuelto con MATLAB de varias formas.
Si escribimos el sistema en la forma matricial , donde A es una matriz nn y y son vectores
columna n - dimensionales, la solución puede obtenerse de dos formas alternativas:
i) Empleando la matriz inversa de A:

ii) Empleando un método más eficiente, de eliminación gaussiana, por medio de la división izquierda:

Por ejemplo, para resolver el sistema

procederemos de la forma,
>> inv ( [2 -1;1 1] ) * [1;2]
ans = 1 , 1

Si escribimos el sistema en la forma matricial , donde A es una matriz nn y y representan


ahora vectores fila n-dimensionales, la solución puede obtenerse de dos formas alternativas:
iii) Empleando la matriz inversa de A:

iv) Empleando un método más eficiente, de eliminación gaussiana, por medio de la


división derecha :

Ejemplo:
Resuelva el siguiente sistema de ecuaciones con MATLAB.:
3 x 1 +2 x 2 −4 x 3 =2
4 x 1 +3 x 2 −7 x3 =−1
−x 1 +6 x 2 +5 x 3=4
Estos sistemas tienen la forma A x = b, donde:
3 2 −4 x1 2

A = 
[ 4 3 −7
−1 6 5 ] [] []
x = 
x2
x3
b = 
Como se mencionó anteriormente x = A-1 b.
−1
4

En MATLAB se hace con dos instrucciones, y se obtiene el mismo resultado:


x = inv(a)*b
3.7838
−0.4595
x =  2.1081
x = A\b
3.7838
−0.4595
x= 2.1081
Ejemplo:
Resuelva el siguiente problema mediante la descomposición de A en LU.
−0.43 0.4 1.2 x1 30

A = 
[ 5.6 −15.6 3.2
−2.4 12.4 −2.8 ] [] []
x = 
x2
x3
b = 
10
0
1.- Se escribe la matriz A y el vector b (de la ecuación Ax = b):
2.- Obtenemos las matrices L y U, mediante:
[l,u] = lu(a)
produce:
−0.0714 −0.1250 1.0000 5.6000 −15.6000 3.2000
1.0000 0 0 0 5.7143 −1.4286
l= −0.4286 1.0000 0 u= 0 0 1.2500
3.- Se obtiene el vector "Y" sustituyendo hacia adelante en "LY = b":
y(1) = b(2); y(2) = b(3)-l(3,1)*y(1); y(3)=b(1)-l(1,1)*y(1)-l(2,1)*y(2)
produce:
10.0000
4.2857
y =  31.2500
4.- Ahora se resuelve la ecuación "U x = Y" por sustitución, de la siguiente manera:
x(3) = y(3)/u(3,3);
x(2) = (y(2)-u(2,3)*x(3))/u(2,2);
x(1) = (y(2)-u(1,3)*x(3)-u(1,2)*x(2))/u(1,1)
obteniendo:
7.0000
7.0000
x =  25.0000
GRÁFICOS EN MATLAB
GRÁFICOS EN 2D

La función PLOT - Es una instrucción muy versátil y la mas indicada para dibujar graficas de funciones
y curvas en el plano. Su sintaxis básica es
>> plot(x,y)
dibuja el vector x versus el vector y. Mas en concreto une los puntos (x(i), y(i)) mediante segmentos.
Tomando un numero suficiente elevado de puntos trazamos con ello una grafica “suave”.
Al ejecutar este comando se abre una ventana, figure en el vocabulario de Matlab, con la
correspondiente salida grafica.
Si se teclea
>> plot(y)
entonces la salida grafica toma x=1:n donde n es la longitud de y. Si, por otro lado, z es un vector de
números complejos, dibuja la parte real versus la parte imaginaria. Es decir, es equivalente la orden
plot(real(z),imag(z)).
1

Ejemplo: 0.8
>> clear i 0.6
>> t=linspace(0,2*pi,9);
0.4
>> plot(exp(i*t));
0.2

El comando además acepta una serie de 0

argumentos opcionales que entre otras cosas -0.2


permiten controlar el color, colocar marcas sobre -0.4
los puntos (x(i), y(i)) y el tipo de marcas y como se
-0.6
unen estos puntos. Así, en su aspecto más
general, plot(x,y,S) dibuja x versus y, con S una -0.8

cadena de caracteres que se construye con: -1


-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1
b azul . punto -
línea ’sólida’
g verde o circulo : punteado
r rojo x equis -. punto-línea
c cian + cruz -- línea-línea
m magenta * estrella
y amarillo s cuadrado
k negro d diamante
v triangulo (down)
^ triangulo (up)
< triangulo (left)
> triangulo (right)
p pentágono
h hexágono

La primera columna especifica el color utilizado, la segunda la marca sobre cada punto y la tercera que
patrón siguen las líneas utilizadas para unir los puntos.
Por ejemplo el siguiente fichero script
x=linspace(0,4,100);
y=exp(-x).*cos(2*pi*x);
figure(1); plot(x,y,’.’)
figure(2); plot(x,y,’r-.’)
figure(3); plot(x,y,’sm--’)
figure(4); plot(x,y,’hg’)
figure(5); plot(x,y,’kv:’)
Figura 1 Figura 5
1
1
0.8
0.8
0.6
0.6
0.4
0.4

0.2
0.2

0
0

-0.2
-0.2

-0.4 -0.4

-0.6 -0.6

-0.8 -0.8
0 0.5 1 1.5 2 2.5 3 3.5 4 0 0.5 1 1.5 2 2.5 3 3.5 4

El comando figure abre una ventana grafica asignándole un numero. Si la ventana ya esta abierta, la
coloca como la ventana de salida por defecto. En particular, figure permite manejarse con varias
ventanas de forma simultanea.
Para superponer varios dibujos sobre una misma ventana podemos utilizar plot de la siguiente forma
>> plot(x,y,x2,y2,x3,y3,x4,y4);
o bien
>> plot(x,y,’r-’,x2,y2,’b:’,x3,y3,’m-.’,x4,y4,’k--’);

De esta forma se dibujan simultáneamente las curvas definidas por los vectores {{x, y}, {x2, y2}, {x3,
y3}, {x4, y4}}. Utilizar la orden hold on que activa la superposición en pantalla. Por ejemplo,
>> hold on %activamos superposición
>> plot(x,y,’r-’)
>> plot(x2,y2,’r:’)
>> plot(x3,y3,’m.-’)
>> plot(x4,y4,’k--’)
Esta opción es mas versátil dado que permite superponer graficas construidas con diferentes comandos.
La superposición se desconecta con hold off, de forma que un nuevo dibujo borrara los anteriores.
Se pueden acceder a detalles concretos del dibujo, como el tamaño y color de las marcas, la anchura de
la línea,.Las diferentes opciones llevan nombre nemotécnicos que ayudan a recordarlo3 Destacamos
entre las más importantes a color: color de la línea.

LineWidth: anchura de la línea.


MarkerEdgeColor: color del borde de las marcas
MarkerFaceColor: color de la marca
MarkerSize: tamaño de la marca
Para especificar un color, se puede utilizar uno de estos caracteres {b, g, r, c, m, y, k} o bien un vector
con tres componentes con valores entre 0 y 1 que especifica un color según el estándar RGB.

Por ejemplo
>>x=0.01:0.2:2; y=sin(x)./x;
>>plot(x,y,’o-.’,’color’,[0.2 0.4 0.6],’linewidth’,2, ’markeredgecolor’,’k’)
1

0.95

0.9

0.85

0.8

0.75

0.7

0.65

0.6

0.55

0.5
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

Ejemplos:

1. Dibujar las gráficas de las funciones


MATLAB dibuja la gráfica de una función obteniendo los valores que toma sobre un determinado
conjunto de índices. El primer paso, por lo tanto, para dibujar una gráfica es definir el conjunto de
índices. Para estas funciones trigonométricas resulta adecuado definir el siguiente conjunto de índices:
>> a = ( 1 : 200 ) ; b = a / pi ;
las funciones anteriormente señaladas pueden ahora dibujarse simplemente con
>> plot ( sin ( b) )
>> plot (b.*sin ( b) )
>> plot (sin(b). / b)
>> plot (sin(1. / b) )

2. Dibujar la gráfica del polinomio y = x3 –3x2 + 2x - 1


>> x=-10:0.1:10;
>> y=x.^3-3*x.^2+2*x-1;
>>plot(x,y);
3. Ejecuta
>> t=linspace(-2*pi, 2*pi,200);
>> y1=cos(t);
>> y2=sin(t);
>> plot(t,y1,t,y2)
4. Analice el siguiente ejemplo:
clf % borramos todo
x=linspace(0,5,100);
f=inline(’exp(-n*x).*cos(x)’); % definimos funciones (vectorizadas)
hold on % solapamiento de graficas
y=f(1/3,x);
plot(x,y,’k--’,’linewidth’,2)
y=f(1,x);
plot(x,y,’r-.’,’linewidth’,2)
y=f(3,x);
plot(x,y,’:’,’color’,[0.0,0.0,0.5],’linewidth’,2)
y=f(9,x);
plot(x,y,’-’,’color’,[0.0,0.3,0.0],’linewidth’,2)
grid on % desplegamos la red
axis([-0.5,6,-0.25,0.5]) % rango de los graficos
xlabel(’Eje OX’,’fontname’, ’Comic Sans Ms’, ’Fontsize’,12)
ylabel(’Eje OY’,’fontname’, ’Comic Sans Ms’, ’Fontsize’,12)
whitebg([.85 1 1]); % color de fondo
title(’Algunas graficas de funciones’, ’Fontsize’,16,’Fontname’,’Times new roman’)
legend(’exp(-x/3).*cos(x/3)’, ’exp(-x).*cos(x)’, ’exp(-3x)*cos(3x)’, ’exp(-9x).*cos(9x)’);

MATLAB posee una función inteligente de representación gráfica denominada fplot.m.


fplot tiene como inputs el nombre de la función en una cadena de caracteres y el rango en que se desea
pintar la función.
Por ejemplo fplot ( ' sin ' , [0 pi] ) .
Otro ejemplo más sofisticado sería.
>> f='2*exp(-x). * sin (x)';
>> fplot ( f , [0 8] )
>> title ('seno') , xlabel( 'eje x' ) , ylabel( 'eje y' )

OTRAS SALIDAS GRAFICAS

Reseñaremos otros comandos relacionados con dibujos y graficas bidimensionales de manejo similar a
plot
polar: Para dibujar curvas en polares
semilogx, semilogy: similar a plot pero utilizando, respectivamente, una escala logarítmica en el
eje OX y el eje OY.
loglog: escala logarítmica en ambos ejes
stem: dibuja puntos uniéndolos con una línea vertical al eje OX
stairs: traza una gráfica en forma de escalera
bar, barh, bar3: despliega graficas en forma de barras. Muy apropiada para representar
datos y estadísticas
area: Muestra los datos en una gráfica de forma “acumulada”. El color utilizado
se controla mediante el comando colormap, cuyo funcionamiento veremos
mas adelante.
line: Une puntos mediante líneas. Es una instrucción de bajo nivel cuyo
funcionamiento es similar a plot.
patch: una instrucción también de bajo nivel, construye polígonos, o caras en tres
dimensiones y asigna un color a la cara definida.

EL COMANDO SUBPLOT

Este comando permite la visualización de diferentes subventanas graficas (axes) en una misma ventana.
A modo de ejemplo, subplot(231) define una ventana con seis zonas para salidas graficas dispuestas en
2 × 3 (dos filas, tres columnas) y accede a la primera de ellas. La numeración es la desplegada en la
figura.
Por ejemplo, las instrucciones
x=linspace(0,2*pi,150);
subplot(321)
plot(x,sin(x),’linewidth’,2);
title(’sin(x)’,’fontsize’,14)
axis tight sin(x) cos(x) sin(2x)
subplot(322) 1 1
plot(x,cos(x),’linewidth’,2);
0.5 0.5 0.5
title(’cos(x)’,’fontsize’,14)
axis tight 0 0 0
subplot(323)
-0.5 -0.5 -0.5
plot(x,cos(2*x),’linewidth’,2);
title(’sin(2x)’,’fontsize’,14)
0 5 0 5 0 5
axis tight
subplot(324) cos(2x) sin(4x) cos(4x)
plot(x,sin(2*x),’linewidth’,2); 1

title(’cos(2x)’,’fontsize’,14) 0.5 0.5 0.5


axis tight
0 0 0
subplot(325)
plot(x,sin(4*x),’linewidth’,2); -0.5 -0.5 -0.5
title(’sin(4x)’,’fontsize’,14)
axis tight 0 5 0 5 0 5
subplot(326)
plot(x,cos(4*x),’linewidth’,2);
title(’cos(4x)’,’fontsize’,14)
axis tight

GRAFICAS EN 3D

El comando plot3
Este comando sirve, a grosso modo, para dibujar curvas en el espacio. Su manejo es muy similar a plot,
por lo que no nos detendremos demasiado en su explicación. Esta es su sintaxis
plot3(x,y,z,opciones) Una curva en espiral...
con opciones muy similares a plot. He aquí un ejemplo
sencillo
clf 30

t=linspace(0,8*pi,200); 25

plot3(t.*cos(t),t.*sin(t),t,’r-’,’linewidth’,2) 20
eje OZ

grid on % dibujamos la ’rejilla’ 15

title(’Una curva en 10

espiral...’,’fontsize’,18,’fontname’,... 5

’Comic Sans MS’,’color’,[0.675 0.000 0.000]) 0


40
xlabel(’eje OX’,’fontsize’,14) 20 40
ylabel(’eje OY’,’fontsize’,14) 0
0
20

-20
zlabel(’eje OZ’,’fontsize’,14) -40 -40
-20

eje OY eje OX
Obsérvese que los comandos relacionados con los
aspectos accesorios del dibujo (axes, title,xlabel,
grid...) funcionan exactamente igual y que aparecen algunos nuevos cuya utilidad y manejo no debería
causar sorpresa: zlabel zlim
Lo mismo se puede decir de la manipulación posterior del objeto geométrico, bien desde la línea de
comandos o desde la ventana grafica.
El comando surf
El comando surf dibuja superficies en el espacio. El formato es
surf(x,y,z)
donde x, y especifican una malla en el plano y z la altura correspondiente. El color que se da a cada
punto es por defecto igual a la altura.
Queda pendiente, no obstante, como construir una malla. Aunque se puede hacer a mano (Matlab
ofrece en su ayuda información detallada de como hacerlo), es mejor echar mano de comandos propios
de Matlab. En este caso, meshgrid. Así, si x e y son dos vectores, este comando devuelve dos vectores
que contienen la información de la malla.
La construcción de dicha malla sigue el esquema marcado por la figura.

Por ejemplo
>> x=[0 0.33 0.67 1]; y=[-1 0 1];
>> [X,Y]=meshgrid(x,y)
X=
0 0.3300 0.6700 1.0000
0 0.3300 0.6700 1.0000
0 0.3300 0.6700 1.0000
Y=
-1 -1 -1 -1
0 0 0 0
1 1 1 1
Las variables X e Y forman una malla según la sintaxis de Matlab.
Ejemplo:
Ejecute siguiente conjunto de instrucciones
>> x=linspace(-2,2,40);
>> y=linspace(-1,1,20);
>> [X,Y]=meshgrid(x,y);
>> size(X)
ans=
20 40
>> size(Y)
ans=
20 40
>> surf(X,Y,X.^2-Y.^2)

surfc y surl
Ambas son variantes de surf. La primera despliega la superficie y dibuja en el plano OXY (plano inferior)
las curvas de nivel.
La segunda es como surf pero el color que asigna a cada punto viene determinado por una punto de
iluminación exterior. El resultado es el de una superficie de un color determinado iluminado desde un
punto

mesh, meshc, meshz


Todos ellos dibujan únicamente la malla (rejilla) del dibujo. La segunda además añade las líneas de
nivel, de forma semejante a como procedía surfc.

Analice el siguiente ejemplo:


>> x=linspace(-1,1,101); y=x;
>> [X,Y]=meshgrid(x,y); 0
>> Z=-X.^2-Y.^2;
>> Z(sqrt(X.^2+Y.^2)<0.5)=NaN; -0.5

>> surf(X,Y,Z)
-1

Ejemplo: -1.5

Supongamos ahora que queremos dibujar la


superficie: -2
1
0.5 1
0 0.5
0
Esto lo hacemos con la secuencia de -0.5
-1 -1
-0.5

instrucciones:
» x=-5:.4:5;
» y=x; 25

» [X,Y]=meshgrid(x,y); 20
» Z=X.^2.*exp(-Y.^2);
» surf(X,Y,Z) 15

10

0
5
5
0
0

-5 -5
TAREA:
1. Consulta la ayuda de la instrucción diag y construye una matriz como la del ejercicio anterior usando dicha instrucción.
2. Determinar que hacen las siguientes funciones que actúan sobre vectores y matrices :
Length
mean
sum
prod
size
trace
poly
expm
3. Introduce en a, a2 dos matrices de igual tamaño. Comprueba el resultado de ejecutar
>> a+a2
>> a*a2
>> a.*a2
4. Ejecuta las instrucciones
>> 3/5
>> 3\5
y observa el resulta. ¿Tiene sentido desde el punto de vista anterior?.
5. ¿Qué hacen las instrucciones
>> a./b
>> a/b
si a y b son matrices del mismo tamaño?. Observa que sucede si se ejecuta
>> 1./a
6. Pregunta a MATLAB si π es mayor que el número е.
7. Pregunta a MATLAB qué elementos de la matriz mágica de orden 6 son múltiplos de 3. Utiliza para este ejercicio la
orden rem.
8. Compara dos cadenas de caracteres de la misma longitud, por ejemplo 'hola' y 'majo'. Explica el resultado.
9. Considera el vector x=[1 2 4 5 7 9 11]. >Qué se obtiene al escribir x(x>5)? Explica el resultado.
10. Qué elementos de la matriz magic(9) son mayores que diez y múltiplos de cinco?
11. Es lo mismo 0&1|1 que 0&(1|1)?
12. Pregunta a MATLAB si la matriz mágica de orden 20 tiene algún elemento que valga cero.
13. Define las matrices h y a mediante las instrucciones h=['hola' 33]; a=[3 'adios' 3];. Pregunta si se trata de una cadena o
de una variable numérica. Observa el resultado que se muestra por pantalla al teclear h, a.
14. Es la matriz eye(0,7) una matriz vacía?
15. Que realizan los siguientes comandos:
isempty
isstr
isnan
finite

16. 1. Dibujar la gráfica de las funciones

en el intervalo [ 10,10].

17. Dibujar la gráfica de la función en el intervalo [-; ].


18. Dibujar conjuntamente las gráficas de las funciones y = x3 –3x2 + 2x - 1 e y = sen(x)
19. Grafica la siguiente función utilizando diferentes funciones graficas de matlab

20. Supongamos ahora que queremos dibujar la superficie:

También podría gustarte