Beruflich Dokumente
Kultur Dokumente
Los scripts son simplemente los archivos que contienen una secuencia de
instrucciones de MATLAB.
Las funciones hacen uso de sus propias variables locales y aceptan argumentos de
entrada.
g ; b12_g
Nombre valido: algo123.m; g.m;; archivo de calculo.m
Editor Matlab
rea de trabajo
log( ax bx c) sin( ax bx c)
2 2
f
4x cos(( x 2) * (ax bx c)
2 2
Modificar el script, (tomando de base el anterior), de tal forma que las variables de
evaluacin
l i estn
contenidos
id en una matriz,
i es ddecir:
i A
A=[x,a,b,c];
[ b ]
Ejercicio 2
x=-2
x= 2*pi:
pi:.1:2
1:2*pi;
pi;
y=sin(x)-cos(sqrt(2)*x);
plot(x,y,'r','linewidth',2)
axis tight
grid on
xlabel('eje
xlabel( eje x')
x)
ylabel('eje y')
title('Grafica de y=sin(x)-cos(sqrt(2)*x)','FontSize',14)
5x + 2ry + rz = 2
3x + 6y + (2r - 1)z = 3
2x + (r - 1)y + 3rz = 5
>> r=10;
>> solucion
Caractersticas generales de las funciones de MATLAB
El concepto de funcin en MATLAB es semejante al de C y al de otros lenguajes de
programacin, aunque con algunas diferencias importantes. Al igual que en C, una
funcin tiene nombre, valor de retorno y argumentos.
function (y,w)
(y w) = fact(x,z)
fact(x z)
input argument
output function name
arg ment
argument
Cuando se crea un archivo .m, que se utilizara como funcin, en la primera
lnea debe llevar siempre el nombre de la funcin, la sintaxis de la primer lnea es
Ejemplo:
[m,n] = size(x);
Operaciones
if m == n
Subfunciones
Las variables contenidas en el cuerpo de la funcin son variables
locales
locales.
Dentro del mismo archivo se puede crear una subfuncin.
subfuncin.
Se
S genera dentro
d t deld l cuerpo de
d la
l funcin
f i o subfuncin.
subfuncin
bf i .
Realizar el cambio
La ecuacin resulta
E t
Entonces l funcin
la f i de
d iteracin
it i del
d l punto
t fijo
fij es es:
function [sol,f]=pfijo(x,e,D,Re)
g=1.14-2*log10(e/D+((9.35/Re)*x));
s=[x'
[ g'];
g ];
sol=s;
f=1./sqrt(g);
f=f ;
f=f';
RESOLUCIN DE ECUACIONES NO LINEALES
fzero(fun,x0):
fzero(fun x0): Encuentra una raz de la funcin f (x) = fun,
fun que debe ser
definida antes o all mismo con la instruccin inline. Esta instruccin busca
un cero de f un cerca del punto x0 especificado por el usuario, y se basa
en los mtodos de la secante
secante, biseccin e interpolacin ccuadrtica
adrtica in
inversa,
ersa
por lo que la funcin ingresada debe ser continua.
Por ejemplo:
>> x=fzero(inline(0.5*exp(x/3)-sin(x)),0)
>> x = 6.7721e-001.
>> x=fzero(inline('1.14-2*log10(0.025+3.1167e-4*x)'),0)
x fzero(inline( 1.14 2 log10(0.025 3.1167e 4 x) ),0)
Exiting fzero: aborting search for an interval containing a sign change
because complex function value encountered during search.
(Function value at -81.92 is 7.6882-2.7288i.)
Ch k ffunction
Check ti or ttry again
i with
ith a different
diff t starting
t ti value.
l
x=
NaN
RESOLUCIN DE ECUACIONES NO LINEALES LINEALES
roots(p): Encuentra todas las races de un polinomio p, tanto reales como
complejas.
l j P
Para usarla
l es necesarioi ttener en cuenta
t que en MATLAB,
MATLAB un
polinomio se representa por medio de un vector de coeficientes.
Como vemos coincide con lo que esperbamos: Las races complejas siempre
vienen por pares conjugados y hay al menos una raz real.
RESOLUCIN DE ECUACIONES NO LINEALES LINEALES
A [an ,a
A=[a an-1,,a
a3 ,a
a2 ,a1 ,a
a0];
]
>>a=[1 0 3 0 -2 1];
>>r=roots(a) ;
Funciones para clculos con polinomios
l (A)
poly(A) li
polinomioi caracterstico
i d de lla matrizi A
roots(pol) races del polinomio pol
p y (p )
polyval(pol,x) evaluacin del p polinomio p pol ppara el valor de x. Si x es un vector,
pol se evala para cada elemento de x
polyvalm(pol,A) evaluacin del polinomio pol de la matriz A
conv(p1 p2)
conv(p1,p2) producto de convolucin de dos polinomios p1 y p2
[c,r]=deconv(p,q) divisin del polinomio p por el polinomio q. En c se devuelve el
cociente y en r el resto de la divisin
residue(p1 p2) descompone el cociente entre p1 y p2 en suma de fracciones
residue(p1,p2)
simples (ver >>help residue)
polyder(pol) calcula la derivada de un polinomio
polyder(p1,p2) calcula la derivada de producto de polinomios
polyfit(x,y,n) calcula los coeficientes de un polinomio p(x) de grado n que se
ajusta a los datos p(x(i)) ~= y(i),
interp1(xp,yp,x) calcula el valor interpolado para la abscisa x a partir de un
conjunto de puntos dado por los vectores xp e yp.
interp1(xp,yp,x,'m')
interp1(xp,yp,x, m ) como la anterior, pero permitiendo especificar tambin el
mtodo de interpolacin. La cadena de caracteres m admite los
valores 'nearest', 'linear', 'spline', 'pchip', 'cubic' y 'v5cubic'.
FUNCIONES DE FACTORIZACIN Y/O DESCOMPOSICIN MATRICIAL
Normas de matrices:
MATLAB puede realizar diversas operaciones sobre l, como por ejemplo evaluarlo
para un determinado valor de x (funcin polyval()) y calcular las races (funcin
roots())
Evaluacin del polinomio
Races de la ecuacin
>> polyval(pol,1)
>> pol=[1 0 -8 6 -10]; ans =
>> roots(pol); -11
>> polyval(pol,0)
ans =
ans =
-3.2800
-10
2.6748
>> polyval(pol,[0
polyval(pol [0 1 5])
0.3026 + 1.0238i
ans =
0.3026 - 1.0238i
-10 -11 445
Ejemplo de algunas funciones
para clculos con polinomios
Derivadas de polinomios utilizando la funcin
polyder(pol)
>> polyder(pol)
ans =
4 0 -16 6
polyfit(x,y,n)
Por ejemplo, ajustar la funcin de error, erf (x), por un polinomio en x.
Este es un proyecto arriesgado porque erf (x) es una funcin acotada, mientras
que los polinomios son ilimitados, por lo que el ajuste podra no ser muy buena.
>> f = polyval(p,x);
0 0 0.0004 -0.0004
0.1000 0.1125 0.1119 0.0006
0 2000
0.2000 0
0.2227
2227 0
0.2223
2223 0
0.0004
0004 2
0.3000 0.3286 0.3287 -0.0001
0.4000 0.4284 0.4288 -0.0004
0 5000
0.5000 0
0.5205
5205 0
0.5209
5209 -0
0.0004
0004 15
1.5
Por ejemplo: Considerar dos vectores que representan el censo de los aos 1900 a
1990 y la correspondiente poblacin de Estados Unidos en millones de personas.
t = 1900:10:1990;
p = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505
249.633];
Utilizar la funcin interp1, para interpolar entre los datos del censo, para estimar la
poblacin en 1975
Ax = b
donde x y b son vectores columna, y A una matriz cuadrada invertible.
x = inv(A)*b
x = A\b
As pues, el operador divisin-izquierda por una matriz (barra invertida \) equivale
a pre-multiplicar por la inversa de esa matriz
OPERADORES PARA LA RESOLUCIN DE
SISTEMAS DE ECUACIONES LINEALES
A=[1
[ 2;; 1 0;; 0 1],
], b=[2
[ 0 0]'
]
x=A\b, resto=A*x-b A=[5
A [5 1 1;
1 1 4 1;
1 1 1 3]
3],
x= b=[5 4 3]
0.3333 x=A\b,
x A\b, resto
resto=A*x-b
Axb
0.6667
matriz de coeficientes Singular
Si A es singular y Ax
Ax= b tiene una solucin, entonces se puede encontrar una
solucin particular que no es nica, escribiendo
PINV Pseudoinverse. X = PINV(A) produces a
matrix
t i X off the
th same dimensions
di i as A' so th
thatt
P = pinv(A)*b
pinv(A)*b A*X*A = A, X*A*X = X and A*X and X*A are
Hermitian
p
Se ha visto la especialidad j
de MATLAB: trabajar con vectores y
matrices.
MATLAB puede
d tambin
t bi trabajar
t b j con otros
t ti
tipos d datos:
de d t
>> st1=strcat(C:\Documents
t1 t t(C \D t and
d
Settings\personal\Mis documentos\ ');
Hipermatrices (arrays de ms de dos dimensiones)
>> AA(:,:,1)=[1
AA(: : 1)=[1 2 3; 4 5 6]
>>AA =
123
456
>> AA(:,:,2)=[2 3 4; 5 6 7]
>>AA(:,:,1)
(,, )=
123
456
>>AA(:,:,2)
>>AA(: : 2) =
234
567
FUNCIONES QUE TRABAJAN CON HIPERMATRICES
Algunas
g funciones de MATLAB parap generar
g matrices admiten ms de dos
subndices y pueden ser utilizadas para generar hipermatrices.
>> BB
BB= =randn(2,3,2)
randn(2,3,2)
BB(:
BB(:,:,1)
BB (: : 1) =
(:,:,1)
-0.4326 0.1253 -1.1465
-1.6656 0.2877 1.1909
BB(:,:,2)
BB (:,:,2) =
1.1892 0.3273 -0.1867
-0.0376 0.1746 0.7258
>> A=
A=zeros
zeros(2,3);
(2,3); B=
B=ones
ones(2,3);
(2,3);
>> cat(1,A,B)
>> cat(2,A,B)
cat(2 A B)
>> cat(3,A,B)
FUNCIONES QUE TRABAJAN CON HIPERMATRICES
Las siguientes
g funciones de MATLAB se pueden
p emplear
p tambin con
hipermatrices
1. Todas las funciones de MATLAB que operan sobre escalares (sin(), cos(), etc.) se
aplican
li sobre
b hipermatrices
hi ti elemento
l t a elemento
l t
2. Las funciones que operan sobre vectores (sum(), max(), etc.) se aplican a matrices e
hipermatrices segn la primera dimensin, resultando un array de menor dimensin
3 Las funciones matriciales propias del lgebra Lineal (det (),
3. inv() etc.)
() inv(), etc ) no se pueden
aplicar a hipermatrices. Para poderlas aplicar hay que extraer primero las matrices
correspondientes (por ejemplo, con el operador dos puntos (:).
Estructuras
Una estructura (struct) es una agrupacin de datos de tipo diferente
bajo un mismo nombre.
nombre
Estos datos se llaman miembros (members) o campos (fields).
Una estructura es un nuevo tipo de dato, del que luego se pueden
crear muchas variables (objetos o instances).
Por ejemplo, la estructura alumno puede contener los campos
nombre (una cadena de caracteres) y carnet (un nmero).
CREACIN DE ESTRUCTURAS
Una posible forma de hacerlo es crear uno a uno los distintos campos,
campos
como en el ejemplo siguiente
>> alu.nombre='Miguel'
g
alu =
nombre: 'Miguel'
>> al
alu.carnet=75482
carnet=75482
alu =
nombre: 'Miguel'
carnet: 75482
>> alu
Estructuras
Tambin ppuede crearse la estructura ppor medio de la funcin st
struct()
uct()
>> al = struct('nombre', 'Ignacio', 'carnet', 76589)
al =
nombre:
b 'I'Ignacio'
i '
carnet: 76589
Los nombres de los campos se pasan a la funcin struct() entre apstrofos ((')),
seguidos del valor que se les quiere dar. Este valor puede ser la cadena
vaca ('') o la matriz vaca ([ ]).
>> vc(1)={[1
vc(1)={[1 2 3]}
vc =
[1x3 double
double]]
>> vc(2)={'mi
vc(2)={'mi nombre'}
vc =
[1x3 double
double]] 'mi nombre'
>> vc(3)={rand(3,3)}
vc(3)={rand(3,3)}
vc =
[1x3 double
double]] 'mi nombre' [3x3 double
double]]
Matrices dispersas (sparse)
Las matrices dispersas o sparse son matrices de un gran tamao con la mayor
parte de sus elementos cero.
Operar sobre este tipo de matrices con los mtodos convencionales lleva a
obtener
bt tiempos d
ti de clculo
l l prohibitivos.
hibiti Por esta
P t razn
se han
h d desarrollado
ll d
tcnicas especiales para este tipo de matrices.
>> A=[1,
A=[1 00, 0
0, -1,
-1 0; 0
0, 2
2, 0,
0 0,
0 1; 0
0, 0
0, 1
1, 1
1, 0; 0
0, 2
2, 0
0, 1,
1 0; -3,
-3 00, 0,
0 0,
0 2]
A=
1 0 0 -1 0
020 01
001 10
020 10
-3 0 0 0 2
>> S
S=sparse(A)
(A)
S=
(1,1) 1 (5,1) -3
(2,2) 2 (4,2) 2
(3,3) 1 (1,4) -1
(3 4) 1
(3,4) (4 4)
(4,4) 1
(2,5) 1 (5,5) 2
FUNCIONES PARA CREAR MATRICES DISPERSAS
Las siguientes
g funciones permiten crear matrices dispersas.Se recomienda ver
el Help de MATLAB para tener una informacin ms detallada.
Matlab
M tl b permite
it crear grficos
fi de
d varios
i tipos,
ti que se utilizan
tili para:
visualizar el contenido de las variables
crear imgenes/pelculas/VR/GIS
generar interfaces de usuario
Tipos de Grficos (1D, 2D)
Tipos de Grficos (>=3D)
GRFICOS BIDIMENSIONALES
L grficos
Los fi 2 Dd
2-D de MATLAB estn t ffundamentalmente
d t l t orientados
i t d a lla
representacin grfica de vectores (y matrices).
Ya se ha dicho q g
que el elemento bsico de los grficos bidimensionales es el
vector.
La funcin
L f i plot(),
l t() en sus diversas
di variantes,
i t no hace
h otra
t cosa que dibujar
dib j
vectores.
Su sintaxis es la siguiente:
plot (Y)
plot (X1,Y1,...)
plot (X1,Y1,LineSpec,...)
plot (...,'PropertyName',PropertyValue,...)
plot (axes_handle,...)
(axes handle,...)
h = plot(...)
hlines = plot('v6',...)
Ejemplos de la FUNCIN PLOT
>> x [1 3 2 4 5 3]
x=[1
x=
132453
>> plot(x)
>> x=0:pi/25:6
x=0:pi/25:6*pi;
pi;
>> y=sin(x); z=cos(x);
>> plot(x,y,x,z)
Ejemplos de la FUNCIN PLOT
>>plot( W)
>>plot(x,W);
>>plot(W,x);
El conjunto
j bsico de argumentos
g de esta funcin es una tripleta formada por
dos vectores y una cadena de 1, 2 3 caracteres que indica el color y el tipo de
lnea o de marker
Sintaxis:
plot(x,y,'-.rs', 'LineWidth',4, 'MarkerEdgeColor','k', 'MarkerFaceColor''g',...
'MarkerSize',10)
Ejemplos de grficos
Ejemplo1:
Ej l 1
>> x=0:pi/100:4*pi; 1
0.4
0.8
j p
Ejemplo2: 0.2
0.6
>> x=0:pi/100:4*pi; 0
0.4
1
-0.2
0.2
>> y=sin(x).*cos(x/3); z=sin(x).*cos(x/2); 0.8
1
-0.4
0
>> plot(x,y,x,z)
plot(x y x z) 0.8
0.6
-0.6
-0.2
0.6
0.4
-0.8
-0.4
0.4
Ejemplo3: 0.2
-1
-0.6
0.20 2 4 6 8 10 12 14
0
>> x=0:pi/100:4*pi; -0.80
-0.2
>> A=[sin(x);sin(x/2);sin(x/3);sin(x/4)]; -1
-0.2
-0.4
0 2 4 6 8 10 12 14
-0.4
>> p
plot(x,A)
( , ) -0
-0.6
0 66
-0.6
-0.8
-0.8
Ejemplo4: -1
-1
00 22 44 66 8 8 10 10 12 12 14 14
>> p
plot(x,y,r*)
( ,y, )
>>plot(x,y,'-.rh', 'MarkerEdgeColor','k', 'MarkerFaceColor''g)
Ejemplos de grficas de funciones
y 25 x 2
x y 25
2 2
x r cos(
cos(tetha
tetha)
y rsen (tetha
(tetha)
y x 3x x
4 2
x ((2,2)
AADIR LNEAS A UN GRFICO YA EXISTENTE
Ejemplo:
>> xx=0:pi/100:4*pi;
0:pi/100:4*pi;
>> y=sin(x).*cos(x/3); z=sin(x).*cos(x/2);
>> plot(x,y)
>> hold on
>> plot(x,z)
>> hold off
COMANDO SUBPLOT
Una ventana
U t grfica
fi se puede
d dividir
di idi en m particiones
ti i h i
horizontales
t l y n verticales,
ti l
con objeto de representar mltiples grficos en ella.
Cada una de estas subventanas tiene sus propios ejes, aunque otras
propiedades son comunes a toda la figura.
donde
d d m y n son ell nmero
d subdivisiones
de bdi i i en filas
fil y columnas,
l e i es la
l
subdivisin que se convierte en activa
Ejemplo:
>>x=0:pi/25:pi;
>>y=sin(x); z=cos(x); w=exp(-x*.1).*y; v=y.*z;
>> subplot(2,2,1), plot(x,y)
>> subplot(2,2,2), plot(x,z)
>> subplot(2,2,3),
(2 2 3) plot(x,w)
( )
>> subplot(2,2,4), plot(x,v)
CONTROL DE LOS EJES: FUNCIN AXIS()
d bsico
El comando b i es ell comando
d axis. P defecto,
i Por d f t MATLAB ajustaj t la
l escalal de
d
cada uno de los ejes de modo que vare entre el mnimo y el mximo valor de los
vectores a representar .
Es posible
E ibl ttambin
bi ttener un control
t l preciso
i sobre
b llas marcas y llos rtulos
t l que
aparecen en los ejes, como por ejemplo en la forma siguiente:
Obsrvese
Ob cmo
llas propiedades
i d d se establecen
t bl sobre
b llos ejes
j actuales,
t l a llos que
se accede con la funcin gca (get current axis).
Manipulacin de grficos
Existen diversas funciones para la manipulacin de grficos:
La funcin close cierra la figura activa, mientras que close(n) cierra la ventana
o figura nmero n.
>> x=[
x=[--4*pi:pi/20:4*pi];
>> plot(x,sin(x),'r',x,cos(x),'g')
>> title('Funcin
titl ('F i seno(x)( ) -en rojo
rojo-
j - y funcin
f i coseno(x)( ) -en verde-
verde
d -')
>> xlabel('ngulo en radianes'), figure(gcf)
>> ylabel(
ylabel('valor
valor de la funcin trigonomtrica
trigonomtrica')), figure(gcf)
>> axis([-
axis([-12,12,-
12,12,-1.5,1.5]), figure(gcf)
>> axis('equal'), figure(gcf)
>> axis('normal'), figure(gcf)
>> axis('square'), figure(gcf)
>> axis('off'),
i (' ff') figure(gcf)
fi ( f)
>> axis('on'), figure(gcf)
>> axis(
axis('on')
on ), grid
grid, figure(gcf)
La funcin figure tambin admite que se fijen algunas de sus propiedades, como por
ejemplo
eje p o la
a posicin
pos c y e
el ta
tamao
a o co
con que apa
aparecer
ece e
en la
a pa
pantalla.
ta a
Por ejemplo, el comando: figure('position',[left,botton, width,height])
Otras funciones grficas 2-D
bar() crea diagramas de barras
barh() diagramas de barras horizontales
bar3() diagramas de barras con aspecto 3-D
bar3h() diagramas de barras horizontales con aspecto 3-D3D
pie() grficos con forma de tarta
pie3() grficos con forma de tarta y aspecto 3-D
area()() similar
i il plot(),
l t() pero rellenando
ll d en ordenadas
d d d de 0 a y
stairs() funcin anloga a bar() sin lneas internas
errorbar() representa sobre una grfica mediante barras valores de
errores compass() dibuja los elementos de un vector complejo
como un conjunto de vectores partiendo de un origen comn
feather()() dibuja
j los elementos de un vector complejo j como un conjunto
j
de vectores partiendo de orgenes uniformemente espaciados
sobre el eje de abscisas hist() dibuja histogramas de un vector
rose() histograma de ngulos (en radianes)
quiver() dibujo de campos vectoriales como conjunto de vectores
>> x=[rand(1
x=[rand(1,100)*10];
100)*10];
>> plot(x)
>> bar(x)
>> stairs(
stairs(x))
>> hist(x)
( )
>> hist(x,20)
>> alfa=(rand(1,20)-0.5)*2*pi;
lf ( d(1 20) 0 5)*2* i
>> rose(alfa)
( )
FUNCIN FPLOT
vectores Si se quiere dibujar una
La funcin plot vista anteriormente dibuja vectores.
funcin, antes de ser pasada a plot debe ser convertida en un vector de
valores.
La funcin fplot admite como argumento un nombre de funcin o un
nombre de fichero *.m en el cual est definida una funcin de usuario.
La funcin puede ser escalar (un nico resultado por cada valor de x) o
vectorial La forma general de esta funcin es la siguiente:
vectorial.
fplot('funcion', limites, 'cadena', tol)
function y = mifunc(x)
y(:,1)=200*sin(x)./x;
y(: 2)=x
y(:,2) x.^2;
2;
>> ezplot(f);
donde f es el nombre o mejor el handle de una funcin. Tambin puede ser una
funcin inline. Por defecto la funcin se dibuja en el intervalo [2 x
2].
] Si se desea dibujar
j f en un intervalo diferente,, se puede
p escribir:
>> ezplot(f,[a,b]);
Se realiza mediante la funcin ginput, que permite introducir las coordenadas del
punto sobre el que est el cursor, al clicar (o al pulsar una tecla). Algunas
formas de utilizar esta funcin son las siguientes:
[x,y] = ginput lee un nmero indefinido de puntos cada vez que se clica o se
pulsa una tecla cualquiera hasta que se termina pulsando la tecla
intro
[x,y] = ginput(n) lee las coordenadas de n puntos
[x,y,bot] = ginput igual que el anterior, pero devuelve tambin un vector de
enteros bot con el cdigo ASCII de la tecla pulsada o el nmero del
botn del ratn (1, 2, ...) con el que se ha clicado
clf, [x,y]=ginput(4);
>> figure(gcf)
figure(gcf), plot(x
plot(x,y,
y 'w')
w ), pause(5)
pause(5), fill(x
fill(x,y,
y 'r')
r)
Graficas con vectores
Grficos de lnea
Sintaxis: plot3(x1 y1 z1 s1 x2 y2 z2 s2 x3 y3 z3 s3 )
plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3,s3,...),
plot3(X1,Y1,Z1,LineSpec,...)
plot3(...,'PropertyName',PropertyValue
plot3(...,'PropertyName',PropertyValue,...)
,...)
h = plot3(...)
EJEMPLO
>> fi=[0:pi/20:6*pi];
fi=[0:pi/20:6*pi];
>> plot3(cos
plot3(cos(fi),sin(fi),
(fi),sin(fi),fi,'r
fi,'r'),
'), grid on;
on; axis square
EJEMPLO
Crear el siguiente grfico en un rango de (-
(-3 a 3) para la variables x e y
z 3 (1 x).^2
z=3*(1-x) 2.*exp(-x
exp( x.^2-(y+1)
2 (y 1).^2)-10*(x/5-x
2) 10 (x/5 x.^3-y
3 y.^5)
5).*
exp(-x.^2-y.^2)-(1/3).*exp(-(x+1).^2-y.^2);
>> plot3(x,y,z)
>> plot3(x,y,z),
plot3(x y z) grid on; axis square
[x,y]
y = meshgrid(-3:.5:3,-3:.5:3);
g ( )
>> z=3*(1-x).^2.*exp(-x.^2-(y+1).^2)-10*(x/5-x.^3-
y.^5).*exp(-x.^2-y.^2)-(1/3).*exp(-(x+1).^2-y.^2);
^5) * ( ^2 ^2) (1/3) * ( ( +1) ^2 ^2)
>> plot3(x,y,z,
plot3(x y z 'g')
g ), grid on; axis square
10
-5
5
-10
4
2 4
0 2
0
-2
-2
-4 -4
Funcin Meshgrid
Genera una matriz (arreglo) xy para plot3 (curvas en tres dimensiones)
Sintaxis:
[X,Y]
X,Y] = meshgrid(
meshgrid(x,y).
x,y). Transforma el dominio especificado por los vectores x e y
en una matriz XY, que se puede utilizar para evaluar las funciones de dos
variables
i bl y grficos
fi d
de malla/superficie
ll / fi i tridimensional.
idi i l
Las filas de la matriz de salida X son copias del vector x; columnas de la matriz Y
d salida
de lid son copias
i d dell vector
t y.
[X,Y]
X,Y] = meshgrid(x)
meshgrid(x)
[X,Y,Z]
X,Y,Z] = meshgrid(
meshgrid(x,y,z).
x,y,z). Produce un arreglo tridimensional que se utiliza para
evaluar funciones de tres variables y crear grficos volumtricos tridimensionales.
[[x,y]
y] = meshgrid(-3:3,-3:3)
g ( )
GRFICOS TRIDIMENSIONALES
G fi
Grficos d malla
de ll y de
d superficie
fi i
Matlab define una superficie por las coordenadas z de los puntos que estan por
encima de los puntos de una regilla rectangular en el plano xy.
xy
El primer paso para generar una grafica de malla de una funcion de dos variables
z=f(x,y);
f( ) es engendrar
d matrices
ti x e y formadas
f d respectivamente
ti t por filas
fil y
columnas repetidas. Matlab proporciona la funcion meshgrid para este
objetico.
[X,Y]=meshgrid(x,y);
( )
Las funciones p
para crear las g
graficas de malla y superficie
p en 3D son:
mesh(X,Y,Z)
mesh( X,Y,Z) Crea una malla en 3D
surf(X
surf(X,Y,Z,C
surf( X
X,Y,Z,C)
Y Z C)
C) Crea una superficie facetada (coloreada en su superficie)
>>[x,y] = meshgrid(-3:.5:3,-3:.5:3);
>> z=3*(1-x).^2.*exp(-x.^2-(y+1).^2)-10*(x/5-x.^3-y.^5).*exp(-
x ^2 y ^2) (1/3) *exp( (x+1) ^2 y ^2);
x.^2-y.^2)-(1/3).*exp(-(x+1).^2-y.^2);
10
10
5
5
0 0
-5 -5
-10 -10
4 4
2 3 2 3
2 2
0 1 0 1
0 0
-2 -1 -2 -1
-2 -2
-4 -3 -4 -3
>> surfc(x,y,z)
10
-5
-10
4
2 3
2
0 1
0
-2 -1
-2
-4 -3
Funciones mesh
mesh,, meshc
meshc,, meshz
Sintaxis:
mesh(X,Y,Z)
mesh( X,Y,Z)
mesh(Z)
mesh (Z)
mesh(...,C)
meshh(...,C)
( C)
mesh(...,'
mesh (...,'PropertyName',PropertyValue
PropertyName',PropertyValue,...),...)
mesh((axes_handles
mesh axes_handles,...)
,...)
meshc((...)
meshc(...)
meshc ( )
meshz(...)
meshz (...)
h = mesh(...)
mesh(...)
hsurface = mesh
mesh('v6'
mesh(('v6'
( v6 ,...)) hsurface = meshc
meshc('v6'
meshc( (('v6'
v6 ,...),
)
>>[x,y] = meshgrid(-3:.5:3,-3:.5:3);
>> z=3
z=3*(1
(1-x).^2.
x) ^2 *exp(
exp(-x.^2-(y+1).^2)-10
x ^2 (y+1) ^2) 10*(x/5
(x/5-x.^3-y.^5).
x ^3 y ^5) *exp(
exp(-
x.^2-y.^2)-(1/3).*exp(-(x+1).^2-y.^2);
>> mesh(x,y,z);
h( )
>> meshc(x,y,z);
>> meshz(x,y,z)
Ejemplos
>>close
>> l all
ll
>>u=-8:0.5:8; v=u;
>>[U,V]=meshgrid(u,v);
>>R=sqrt(U.^2+V.^2)+eps;
>>W=sin(R)./R;
>>mesh(W)
>>figure (2)
surf(W)
>>surf(W)
>>figure (1)
meshc(W)
>>meshc(W)
x y z 25
2 2 2
z xe x 2
y2
GRFICOS TRIDIMENSIONALES
DIBUJO DE LNEAS DE CONTORNO: FUNCIONES CONTOUR Y CONTOUR3
contour(Z, val) siendo val un vector de valores para las isolneas dibujar
contour(u,v,W,20) se utilizan u y v para dar valores a los ejes coordenadas
contour(Z,20,'r--') se puede especificar el tipo de lnea
contourf(Z val)
contourf(Z, anloga a contour(),
contour() pero rellenando el espacio entre
lneas
>> contour(
contour(x,y,z)
x,y,z);
Funcin contour3
Sintaxis:
contour3(Z)
contour3(Z,n
contour3( (Z,n)
, )
contour3(Z,v
contour3( Z,v))
contour3(X,Y,Z
contour3( X,Y,Z))
contour3(X,Y,Z,n
contour3((X,Y,Z,n))
contour3(X,Y,Z,v
contour3( X,Y,Z,v))
contour3(...,LineSpec
contour3(..., LineSpec))
contour3(axes_handle
contour3( axes_handle,...)
,...)
[C,h
C,h]] = contour3(...)
Ejemplo
>> contour3(x,y,z);
[x,y]
y = meshgrid([-2:.25:2]);
g ( )
Z = x.*exp(-x.^2-y.^2);
contour3(X,Y,Z,30)
grid off
view(-15,25)
colormap cool
Utilizacin del color en grficos 3-D
MAPAS DE COLORES
Un mapa de colores se define como una matriz de tres columnas, cada una de las
cuales contiene un valor entre 0 y 1, que representa la intensidad de uno de los
colores fundamentales: R (red o rojo), G (green o verde) y B (blue o azul).
La longitud por defecto de los mapas de colores de MATLAB es 64, es decir, cada
mapa
p de color contiene 64 colores.
>> colormap
colormap(
p(hot
hot(128))
((128))
))
>> pcolor([1:129;1:129]')
pcolor([1:129;1:129]')
donde la funcin pcolor permite visualizar por medio de colores la magnitud de los
elementos de una matriz (en realidad representa colores de celdas, para lo que
necesita que la matriz tenga una fila y columna ms de las necesarias; sa es la
razn de que en el ejemplo anterior a la funcin pcolor se le pasen 129 filas y 2
columnas).
DIBUJO DE SUPERFICIES FACETEADAS
shading flat determina sombreado con color constante para cada polgono. Este
sombreado se llama plano o flat
flat..
shading interp establece que el sombreado se calcular por interpolacin de
colores entre los vrtices de cada faceta. Se llama tambin
sombreado
b d de d G Gouraud d
shading faceted consiste en sombreado constante con lneas negras
superpuestas.. Esta es la opcin por defecto
superpuestas
>>Shading flat
>>Shading
>>shading
>> shading interp
>>shading
>> shading faceted
OTRAS FUNCIONES GRFICAS 3D
Las siguientes funciones se derivan directamente de las anteriores, pero
aaden algn pequeo detalle y/o funcionalidad:
surfc combinacin de surf surf,, y contour en z=0
trisurf similar a surf
surf,, dibuja una superficie 3- 3-D a partir de los valores de
una funcin
f i en una malla de ttringulos.
ll d i l
meshz mesh con plano de referencia en el valor mnimo y una especie de
cortina en los bordes del dominio de la funcin
trimesh similar a mesh
mesh,, dibuja una superficie 3- 3-D a partir de los valores de
una funcin en una malla de tringulos.
surfl para controlar la iluminacin determinando la posicin e intensidad
de un foco de luz.
light crea un foco de luz en los ejes actuales capaz de actuar sobre
superficies
p 3
3--D. Se le deben p pasar como argumentos
g el color, el
estilo (luz local o en el infinito) y la posicin. Son muy importantes
las propiedades de los objetos iluminados patch y surface surface;;
consultarlas por medio del Help cuando se vayan a utilizar.
colorbar aade el mapa de colores activo a la figura, redimensionando los
ejes para hacerle un lugar. Se puede colocar horizontal o
verticalmente.
sphere
cylinder
Uso de la funcin Light
>>h = surf(
surf(peaks
peaks);
);
>>set(h,'FaceLighting','phong','FaceColor','interp
>>set((h,'FaceLighting','phong','FaceColor','interp',...
, g g,p g, , p',...
,
'AmbientStrength',0.5)
>>light('Position',[1 0 0],'Style','infinite
0],'Style','infinite');
');
Otras alternativas
lighting flat
lighting gouraud
lighting phong
lighting none
Colormaps
p
Incrustar colormaps en los grficos
>>colorbar
Ejemplo:
hold on
[x,y,z,v
x
x,y,z,v]
y z v]
v] = flow; slice(x,y,z,v,xmax
hx = slice( (x,y,z,v,xmax,[
,y, , , ,[ ],[ ]);
xmin = min(x(:)); set(hx,'FaceColor','interp','EdgeColo
set( hx,'FaceColor','interp','EdgeColo
r','none')
r','none ')
ymin = min(y(:));
zmin = min(z(:));
hy = slice(
slice(x,y,z,v
x,y,z,v,[],
,[],ymax
ymax,[]);
,[]);
set(hy,'FaceColor','interp','EdgeColor
set( hy,'FaceColor','interp','EdgeColor
xmax = max(x(:));
','none')
','none ')
ymax = max(y(:));
zmax = max(z(:));
hz = slice(
slice(x,y,z,v
x,y,z,v,[],[],
,[],[],zmin
zmin);
);
hslice
s ce = su
surf((linspace(xmin,xmax,100),
surf(linspace
space(((xmin,xmax,100),
space , a , 00), set(hz,'FaceColor','interp','EdgeColo
set( hz,'FaceColor','interp','EdgeColo
linspace(ymin,ymax,100),
linspace (ymin,ymax,100), zeros(100)); r','none')
r','none ')
rotate(
rotate(hslice
(hslice,[
,[--1,0,0],-
,[ 1,0,0],
, , ],-45)) daspect([1,1,1])
daspect([1,1,1])
xd = get(hslice,'XData
get(hslice,'XData'); '); axis tight
yd = get(hslice,'YData
get(hslice,'YData'); '); box on
zd = g
get((hslice,'ZData');
get(hslice,'ZData
, ');
); view(--38.5,16)
view(
delete(hslice
delete( hslice)) camzoom(1.4)
camzoom (1.4)
camproj perspective
h = slice
slice((x,y,z,v,xd,yd,zd
x,y,z,v,xd,yd,zd);
); lightangle(
lightangle
g g (-45,45)
, )
set(h,'FaceColor','interp
set( h,'FaceColor','interp',', ''EdgeColor','none
EdgeColor','none',
', colormap (jet(24))
'DiffuseStrength',.8) set(gcf,'Renderer','zbuffer
set( gcf,'Renderer','zbuffer')
')
Diferentes cajas de herramientas (toolboxes)
Grficos
plottools
disttool
dfittool