Graficación en MATLAB y generación de secuencias discretas

Anuncio
UNIVERSIDAD TECNOLÓGICA DE PEREIRA
Programa de Tecnología Eléctrica
Matlab Introducción
Taller No.2
Programación TE243
Segundo semestre de 2014
Ing: José Norbey Sánchez
Grupo:
2. Gráficos en dos y tres dimensiones:
2.1 Gráficos en dos dimensiones:
MATLAB dispone de cuatro funciones básicas para crear gráficos 2-D. Estas funciones se
diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y de
ordenadas. Estas cuatro funciones son las siguientes:
plot()
loglog()
semilogx()
semilogy()
crea un gráfico a partir de vectores y/o columnas de matrices, con escalas
lineales sobre ambos ejes.
ídem con escala logarítmica en ambos ejes.
ídem con escala lineal en el eje de ordenadas y logarítmica en el eje de abscisas.
ídem con escala lineal en el eje de abscisas y logarítmica en el eje de ordenadas.
En lo sucesivo se hará referencia casi exclusiva a la primera de estas funciones (plot). Las demás
se pueden utilizar de un modo similar. Existen además otras funciones orientadas a añadir
títulos al gráfico, a cada uno de los ejes, a dibujar una cuadrícula auxiliar, a introducir texto, etc.
Estas funciones son las siguientes:
title('título')
añade un título al dibujo.
xlabel('tal')
añade una etiqueta al eje de abscisas. Con xlabel off desaparece.
ylabel('cual') añade una etiqueta al eje de ordenadas. Con ylabel off desaparece
text(x,y,'texto')
introduce 'texto' en el lugar especificado por las coordenadas x e y. Si x e y
son: vectores, el texto se repite por cada par de elementos. Si texto es
también un vector de cadenas de texto de la misma dimensión, cada
elemento se escribe en las coordenadas correspondientes.
gtext('texto')
introduce texto con ayuda del ratón: el cursor cambia de forma y se
espera un clic para introducir el texto en esa posición.
legend()
define rótulos para las distintas líneas o ejes utilizados en la figura. Para
más detalle, consultar el Help grid activa la inclusión de una cuadrícula en
el dibujo. Con grid off desaparece la cuadrícula.
1
Ejemplo: Generar una señal sinusoidal de amplitud unitaria.
t=0:pi/100:2*pi;
seno=sin(t);
plot(t,seno)
Ejemplo: También se graficar punteando dos vectores m y t que tengan la misma dimensión:
t=[-5 -4.5 -3 -2 0 1 1.5 4 4.5 5];
m=[20 10 12 4 15 18 3 20 4 7];
Si se desea graficar m contra t, se digita:
plot(t,m)
Si queremos cambiar color o delineado de la curva escribimos plot(t,m,’r’) para color rojo, otros
colores como y(amarillo), g(verde), w(blanco) y k(negro); si se digita plot(t,m,’r--’), aparece la
curva punteada, otras formas .,+,*,o,:, etc. También se puede colocar etiquetas a la curva con
los comandos: xlabel(‘t(segundos)’) y ylabel(‘m(amperios)’), se adiciona el texto entre comillas
simples a los ejes x y y respectivamente como se muestra en la siguiente figura.
Ejemplo: graficar la función anterior y colocarle etiquetas
t=[-5 -4.5 -3 -2 0 1 1.5 4 4.5 5];
m=[20 10 12 4 15 18 3 20 4 7];
2
plot(t,m)
xlabel('t(segundos)')
ylabel('m(amperios)')
Mediante el comando gtext(‘Curva ilustrativa’) se puede adicionar el texto entre comillas
(siempre con la figura abierta) donde se posicione el cursor y se haga el correspondiente clik. En
este caso se desplegará en la curva. Si se desea concentrar la atención en una determinada zona
de la curva se puede utilizar el comando axis([-4 -2 8 14]) donde los dos primeros elementos del
vector son las coordenadas horizontales y los dos últimos las coordenada verticales. Ver figura.
Ejemplo: ampliar los ejes en ([-4 -2 8 14]) y escribir en la gráfica “curva ilustrativa”
t=[-5 -4.5 -3 -2 0 1 1.5 4 4.5 5];
m=[20 10 12 4 15 18 3 20 4 7];
plot(t,m)
xlabel('t(segundos)')
ylabel('m(amperios)')
gtext('Curva Ilustrativa')
axis([-4 -2 8 14])
3
Se pueden hacer lecturas directamente de la curva mediante el comando ginput, ejemplo como
tomar dos lecturas de la curva: [x,y]=ginput(2)
t=[-5 -4.5 -3 -2 0 1 1.5 4 4.5 5];
m=[20 10 12 4 15 18 3 20 4 7];
plot(t,m)
xlabel('t(segundos)')
ylabel('m(amperios)')
[x,y]=ginput(2)
x=
0.0115
1.0945
y=
14.8684
15.9737
grid on
Para la ubicación de los puntos se puede habilitar convenientemente un reticulado mediante la
instrucción grid on como aparece en la siguiente figura. Si se quiere deshabilitar se digita grid
off.
En caso de necesitarse dibujar un gráfico adicional sobre la misma gráfica anterior se usa el
comando hold on. Por ejemplo para superponer dos funciones:
Ejemplo: generar dos vectores de 9 datos, graficar y luego superponerle una función seno
clc
t=[-2 -1 0 1 2 3 4 5 6];
m=[1.3 -1.3 1.1 -1.2 0 -0.9 1.2 1.6 1];
plot(t,m)
4
A la gráfica anterior le superponemos una función seno con hold on.
hold on;
t=0:pi/100:2*pi;
seno=sin(t);
plot(t,seno)
El comando hold of deshabilita lo asociado.
Las dos gráficas anteriores podrían mostrarse en dos subgráficas una debajo de la otra y
separadas por fila, pertenecientes a una misma ventana, usando el comando subplot(m,n,p), se
genera una matriz de m filas y n columnas, y p genera los ejes de cada gráfica.
Ejemplo: generar las dos gráficas anteriores por fila en una misma ventana
5
clc
t=[-2 -1 0 1 2 3 4 5 6];
m=[1.3 -1.3 1.1 -1.2 0 -0.9 1.2 1.6 1];
subplot(2,1,1)
plot(t,m)
xlabel('t(segundos)')
ylabel('m(tensión)')
t=0:pi/100:2*pi;
subplot(2,1,2)
seno=sin(t);
plot(t,seno)
xlabel('t(segundos)')
ylabel('m(amperios)')
Los comandos axis, xlabel, ylabel etc., se digitan después del respectivo plot para colocar
etiquetas. Usando el comando subplot(m,n,p), donde se genera una matriz de m filas y n
columnas, y p genera los ejes de cada gráfica.
Ejemplo: generar las dos gráficas anteriores por columna en una misma ventana
clc
t=[-2 -1 0 1 2 3 4 5 6];
m=[1.3 -1.3 1.1 -1.2 0 -0.9 1.2 1.6 1];
subplot(1,2,1)
plot(t,m)
xlabel('t(segundos)')
ylabel('m(tensión)')
t=0:pi/100:2*pi;
subplot(1,2,2)
6
seno=sin(t);
plot(t,seno)
xlabel('t(segundos)')
ylabel('m(amperios)')
2.2 Gráficos en tres dimensiones:
Para construir gráficos en tres dimensiones primero se construye la superficie que representa la
magnitud de una función de dos variables; las dos variables se representan en el plano
horizontal y el valor de la función como una altura sobre dicho plano. La superficie se forma al
unir las pequeñas rejillas implementadas alrededor de cada punto. Los comandos utilizados
para graficar superficies son: mesh, meshz, meshc, surf, surfc. A través de algunos ejemplos se
ilustrará la operación de los comandos y de otras utilidades adicionales. El comando más
utilizado de los anteriores es meshgrid y genera x e y matrices para gráficas en tres
dimensiones.
Ejemplo: construir un plano en tres dimensiones con meshgrid y surf
clc
x=-5:0.5:5;
y=x;
[x1,y1]=meshgrid(x,y);
z1=0*x1;
surf(z1)
7
Si deseamos agregar otro plano al mismo grafico en tres dimensiones, escribimos lo siguiente:
Ejemplo: construir dos planos en tres dimensiones con surf y mesh
clc
x=-5:0.5:5;
y=x;
[x1,y1]=meshgrid(x,y);
z1=0*x1;
surf(z1)
hold on
z2=0*x1+10;
mesh(z2)
8
En la figura anterior, se observa la diferencia entre mesh y surf. El comando surf presenta
dificultades cuando el número de puntos es grande; se pueden apreciar los problemas
repitiendo el proceso anterior con un incremento para x1 de 0.1 en lugar del 0.5 utilizado, por lo
que se recomienda utilizar preferentemente mesh. Se aprecia también que se está graficando
contra el índice, para graficar directamente contra los ejes especificados debe digitarse lo
siguiente:
Ejemplo: construir tres planos en tres dimensiones con surf, mesh y mostrar los ejes
especificados
clc
x=-5:0.5:5;
y=x;
[x1,y1]=meshgrid(x,y);
z1=0*x1;
surf(x,y,z1)
hold on
mesh(x,y,z2)
mesh(x,y,z2+10)
En la gráfica se observa adicionalmente todos los ejes especificados axis([-5 5 -5 5 0 30])
Ejemplo: generar un plano en tres dimensiones y curvar su altura
clc
x=-5:.5:5;
y=x;
[x1,y1]=meshgrid(x,y);
z4=1./(x1.^2+1);
mesh(x,y,z4)
9
Otra forma de generar gráficos en tres dimensiones es con la función plot3(x,y,z), donde se
tienen los vectores x, y y z, entonces para generar la gráfica solo es necesario teclear el punto de
coordenadas cartesianas y luego los enlaza por segmentos para generarlo en 3-D.
Ejemplo: generar una gráfica tridimensional de una helicoidal con plot3.
clc
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
axis square;
grid on
El comando axis permite fijar los límites de los ejes en una gráfica y la opción square fija las
coordenadas iguales en los tres ejes. En la figura se muestra la gráfica resultante.
10
TALLER No.2 PARA RESOLVER EN MATLAB
Realizar los siguientes ejercicios:
En dos dimensiones
1) Graficar una función diente de sierra y superponerle una función coseno
2) Obtener 4 gráficas en un mismo display por filas y luego por columnas de:
- una función seno
- una función coseno
- una función constante
- pendiente positiva
En tres dimensiones
1) Graficar 5 planos en tres dimensiones
2) Dibujar la función sen(r)/r (siendo r=sqrt(x2+y2)+eps; para evitar dividir por 0 se suma al
denominador el número pequeño casi cero (eps), hacerlo con mesh y límites entre
x=-8:0.5:8; y=x siendo la altura es la función sen(r)/r
3) Con el comando plot3, graficar una función seno, una función coseno y una función
constante
4) De acuerdo a 3) Cómo se grafica un óvalo en tres dimensiones
11
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)
12
Descargar