You are on page 1of 25

1

Introduccin a Matlab
Fundamentos y aplicaciones en el
estudio e investigacin de
tecnologas de telecomunicaciones
1 Matlab es una marca registrada de The
MathWorks, Inc.

Contenido

Generalidades de Matlab
Manejo de matrices y vectores
Generacin de Grficos
Funciones y Programacin
Procesamiento bsico de seales
Simulacin grfica mediante Simulink
Estudio de casos

12/15/15

Jos Luis Muoz Meza

Grficos 2D y 3D
Carga de datos

Tipos de archivos cargados mediante load

MAT: variables de Matlab almacenadas usando save


TXT: archivo de texto
CSV,: archivo con campos separados por >>
comas
clear
DAT: Texto formateado
>> load datos
>> datos
DLM: Texto delimitado
TAB: Texto separado por tabulaciones
datos =
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000

1.0000
1.4142
1.7321
2.0000
2.2361
2.4495
2.6458
2.8284
3.0000
3.1623

1.0000
4.0000
9.0000
16.0000
25.0000
36.0000
49.0000
64.0000
81.0000
100.0000

Grficos 2D y 3D
Carga de datos

Tipos de archivos cargados mediante xlsread


Hojas de clculo en Excel (XLS)

>> datos = xlsread('numeros.xlsx')


datos =
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000

1.0000
1.4142
1.7321
2.0000
2.2361
2.4495
2.6458
2.8284
3.0000
3.1623

1.0000
4.0000
9.0000
16.0000
25.0000
36.0000
49.0000
64.0000
81.0000
100.0000

Grficos 2D y 3D
Carga de datos

Tipos de archivos cargados mediante wavread


Archivos de sonido en formato WAV

>> sonido=wavread('tiza2.wav');
>> wavplay(sonido, 44100)
>> sound(sonido, 44100)
>>

Grficos 2D y 3D
Carga de datos

Tipos de archivos cargados mediante imread

Archivos de imgenes en formato JPEG, BMP,>>etc.


imagen=imread('Tucan.jpg');
>> image(imagen)

100
200
300
400
500
600
700
100

200

300

400

500

600

700

800

900

1000

Grficos 2D y 3D
Funciones grficas 2D y 3D elementales

2D: plot() crea un grfico a partir de vectores con escalas lineales sobre
ambos ejes,
>> plot(X,Y,opcin) (opcin: permite elegir color y trazo de la curva)
hold on: permite pintar ms grficos en la misma figura
se desactiva con hold off)
grid: Activa una cuadrcula en el dibujo.
Escribiendo de nuevo grid se desactiva.

2D: loglog() escala logartmica en ambos ejes,

semilogx(): escala lineal en el eje de ordenadas y logartmica en el eje de abscisas,


semilogy(): escala lineal en abscisas y logartmica en ordenadas

Ejemplo: main_dibujos.m, y ver en Demos: Graphics

Grficos 2D y 3D
main_dibujos
.m
clear
x=linspace(0,2*pi,100);
y=sin(x);
figure(1)
plot(x,y,'ro')
hold on
y2=2.*sin(x).*cos(x);
plot(x,y2,'m','Linewidth',2)
hold of
grid %pone la cuadricula de fondo
grid %quita la cuadricula de fondo
axis([0 2*pi -1 1])
set(gca,'XTick',0:pi/2:2*pi)
set(gca,'XTicklabel',{'0','p/2','p','3p/2','2p'})
%Cambiar la fuente de los ejes a Symbol
axis of %quita los ejes
axis on % los vuelve a poner
xlabel('x=angulo en radianes'),ylabel('y')
legend('sin(x)','sin(2x)')
title('y=sin(x), y=sin(2x)')

figure(2)
subplot(2,3,1)
plot(x,y,'g+')
subplot(2,3,2)
plot(x,y,'r--')
subplot(2,3,3)
plot(x,y,'co')
subplot(2,3,4)
plot(x,y,'k')
subplot(2,3,5)
plot(x,y,'bs')
subplot(2,3,6)
plot(x,y,'m:')
figure(3)
t=linspace(0,2*pi,100)
%pinta una circunferencia rellena de color
rojo
fill(cos(t),sin(t),'r')
figure(4)
t=linspace(0,6*pi,100);
plot3(sin(t),cos(t),t,'Linewidth',4)

Grficos 2D y 3D
Funciones grficas 2D y 3D elementales

2D: subplot(n,m,k) subdivide una ventana grfica se puede en


m particiones horizontales y n verticales y k es la subdivisin
que se activa.

2D: polar(ngulo,radio) para pintar en polares

2D: fill(x,y,opcin) dibuja una curva cerrada y la rellena


del color que se indique en opcin

3D: plot3 es anloga a su homloga bidimensional plot.

plot3(X,Y,Z, opcin)

Grficos 2D y 3D
Eleccin de la escala de los ejes

axis([x0 x1 y0 y1]) (2D), axis([x0 x1 y0 y1 z0 z1]) (3D)

axis auto: devuelve la escala a la de defecto

axis off: desactiva los etiquetados de los ejes desapareciendo los ejes,
sus etiquetas y la malla, axis on: lo activa de nuevo

axis equal: los mismos factores de escala para los dos ejes

axis square: cierra con un cuadrado la regin delimitada por los ejes de
coordenadas actuales.

Para elegir las etiquetas que aparecen en los ejes:


set(gca, XTick,-pi:pi/2,pi) %gca : get current axis
set(gca, XTicklabel,({-pi,-pi/2,0,pi/2,pi})

Grficos 2D y 3D
1

Modificacin de informacin de figuras

0.8

Nombre de la figura
f=figure
set(f, name, Figura principal, numbertitleof)

Modificacin de tipos de letras


set(gca, 'FontName',Tipo de Letra)

Opciones de color y trazo de grficos

y yellow . punto
m magenta o crculo
c cyan x cruz
r red + suma
g green - solido
b blue * estrella
w white : punteado
k blacK -- a trazos
s cuadrado

0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

10

12

plot(t,sin(t),'b:')

14

16

18

20

Grficos 2D y 3D
Funciones para aadir ttulos a la grfica

title('ttulo') aade un ttulo al dibujo. Para incluir en el texto el valor

de una variable numrica es preciso transformarla mediante :

int2str(n) convierte el valor de la variable entera n en carcter


num2str(x) convierte el valor de la variable real o compleja x en
carcter. Ejemplo: title(num2str(x))

xlabel(texto) aade una etiqueta al eje de abscisas. Con


xlabel off desaparece. Lo mismo ylabel(texto) o
zlabel(texto)

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.
gtext('texto') introduce texto con ayuda del ratn.

Grficos 2D y 3D

Funciones de Matlab para grficos 2D y 3D

Imprimir grficos: Print (botn File en ventana grfica)

Guardar grficos: Save (botn File en ventana grfica): Se


crea un fichero .fig que podr volver a editarse y modificarse

Exportar grficos: Export (botn File en ventana grfica)

figure(n): Llamar una nueva figura o referirnos a una figura


ya hecha

close all borra todas las figuras, close(figure(n)) una


en concreto

Ejercicio I
Representar las funciones:
y1= sin(3 x)/ex
y2=cos(3 x)/ex
con x variando entre 0 y 3 ,obteniendo una nica figura de la forma:

Grficos 2D y 3D
Representacin grfica de superficies

Creacin de una malla a partir de vectores [X, Y]=meshgrid(x,y)


Grfica de la malla construida sobre la superficie Z(X,Y): mesh(X,Y,Z),
meshc(X,Y,Z) (dibuja adems lneas de nivel en el plano z=0)
Grfica de la superficie Z(X,Y): surf(X,Y,Z), surfc(X,Y,Z)
pcolor(Z) dibuja proyeccin con sombras de color sobre el plano (la
gama de colores est en consonancia con las variaciones de Z)
contour(X,Y,Z,v) y contour3(X,Y,Z,v) generan las lneas de nivel
de una superficie para los valores dados en v. Para etiquetar las lneas,
primero cs=contour(Z) (para saber los valores del contorno) y luego
clabel(cs) o directamente clabel(cs,v)

Ejemplo: main_dibujo_superficie.m y ver en Demos: Graphics

Grficos 2D y 3D
main_dibujo_superfi
cie.m
clear
x=linspace(-3,3,15);
y=linspace(-3,3,10);
[X,Y]=meshgrid(x,y); %x varia por columnas, y varia por
filas
Z=X.^2+Y.^2;
figure(1)
surf(X,Y,Z,gradient(Z))
view(70,15)
figure(2)
subplot(2,2,1)
surf(X,Y,Z,gradient(Z))
subplot(2,2,2)
surf(X,Y,Z,gradient(Z))
shading flat
subplot(2,2,3)
surf(X,Y,Z,gradient(Z))
shading interp

subplot(2,2,4)
surf(X,Y,Z,gradient(Z))
shading faceted %(por defecto)
%title(num2str(Z(1,1)))
figure(3)
mesh(X,Y,Z);
xlabel('x'),ylabel('y'),zlabel('z')
figure(4)
pcolor(Z)
xlabel('x'),ylabel('y'),zlabel('z')
figure(5)
v=[1,2.5,4,8,9]
cs=contour(X,Y,Z,v)
clabel(cs)

Grficos 2D y 3D
Representacin grfica de superficies
Diferentes formas de representar los polgonos coloreados:
shading flat: sombrea con color constante para cada polgono.
shading interp: sombrea calculado por interpolacin de colores
entre los vrtices de cada polgono
shading faceted: sombreado constante con lneas negras
superpuestas (opcin por defecto)

hidden off (desactiva la desaparicin de lneas escondidas), hidden


on (lo activa)

Manipulacin de grficos
view(azimut, elev), view([xd,yd,zd])
rotate(h,d,a) o rotate(h,d,a,o), h es el objeto, d es un vector
que indica la direccin, a un ngulo y o el origen de rotacin
En ventana grfica: View (camera toolbar)

Grficos 2D y 3D
x=linspace(-3,3,15);
y=linspace(-3,3,10);
[X,Y]=meshgrid(x,y);
% x varia por columnas, y varia % por filas
20
Z=X.^2+Y.^2;
figure(1)
surf(X,Y,Z,gradient(Z))
view(70,15)

15

10

0
-5
0
5

-3

-2

-1

Grficos 2D y 3D
figure(2)
subplot(2,2,1)
surf(X,Y,Z,gradient(Z))
subplot(2,2,2)
surf(X,Y,Z,gradient(Z))
shading flat
subplot(2,2,3)
surf(X,Y,Z,gradient(Z))
shading interp
subplot(2,2,4)
surf(X,Y,Z,gradient(Z))
shading faceted %(por defecto)
%title(num2str(Z(1,1)))

20

20

10

10

0
5

0
5

-5 -5

20

20

10

10

0
5

0
5

-5 -5

-5 -5

-5 -5

Grficos 2D y 3D
10

figure(3)
mesh(X,Y,Z);
xlabel('x'),ylabel('y'),zlabel('z')

9
8
7
6

figure(4)
pcolor(Z)
xlabel('x'),ylabel('y'),zlabel('z')

5
4
3
2
1

20

8
x

10

15
10
5
9

0
4
2
0
-2
y

-4

-4

-2
x

figure(5)
v=[1,2.5,4,8,9]
cs=contour(X,Y,Z,v)
clabel(cs)

-1

2.5
8

-2

-3
-3

-2

-1

12

14

Grficos 2D y 3D
Transformacin de coordenadas

[ang,rad]=cart2pol(x,y), de cartesianas a polares


[ang,rad,z]=cart2pol(x,y,z), de cartesianas a cilindricas

[x,y]=pol2cart(ang,rad), de polares a cartesianas


[x,y,z]=pol2cart(ang,rad,z), de cilindricas a
cartesianas

[angx,angz,rad]=cart2sph(x,y,z), de cartesianas a
esfericas
[x,y,z]=aph2cart(angx,angz,rad), de esfericas a
cartesianas

Grficos 2D y 3D
Transformacin de coordenadas

[ang,rad]=cart2pol(x,y), de cartesianas a polares


>> t=0:0.01:2*pi;
>>
x=cos(t).*cos(2*t).*sin(2*
t);
>>
y=sin(t).*cos(2*t).*sin(2*t
Cartesiano
0.5 );
>> plot(x,y),
0.4 title('Cartesiano')

>> [tetha,
rho]=cart2pol(x,y);
>> polar(tetha, rho),
title('Polar') Polar
90
120

0.4

0.3

60

0.3

150

0.2

0.5

30

0.2
0.1

0.1
0

180

-0.1
-0.2

210

-0.3
-0.4
-0.5
-0.5

330

240
-0.4

-0.3

-0.2

-0.1

0.1

0.2

0.3

0.4

0.5

300
270

Grficos 2D y 3D
Transformacin de coordenadas

[x,y]=pol2cart(ang,rad), de polares a cartesianas


>> r=linspace(0,2);
>> theta = linspace(0,
10*pi);
>> [x, y]
=pol2cart(theta,r);
>> z=x+i*y;
>> plot(z),
title('Cartesiano')

Cartesiano

2
1.5

>> [tetha,
rho]=cart2pol(x,y);
>> polar(tetha, rho),
title('Polar')

1
0.5
0
-0.5
-1
-1.5
-2
-2

-1.5

-1

-0.5

0.5

1.5

Grficos 2D y 3D
Creacin de pelculas

Una pelcula se compone de varias imgenes (frames)

getframe se emplea para guardar todas esas imgenes. Devuelve un vector


columna con la informacin necesaria para reproducir la imagen que se
acaba de representar, por ejemplo con la funcin plot. Esos vectores se
almacenan en una matriz M.

movie(M,n,fps) representa n veces la pelcula almacenada en M a una


velocidad de fps imgenes por segundo
x=0:0.01:2*pi;
for j=1:10
plot(x,sin(j*x)/2)
M(j)=getframe;
end
movie(M,4,6)

Grficos 2D y 3D
Creacin de pelculas
% initializar vectores (x and y) y ejes
nx=40;
x=linspace(-2,2,nx);
y=exp(-8*x.*x);
plot(x,y);
lim=axis;
% nframes = numero de frames en la pelicula
nframes=40;
M=moviein(nframes);
% Nota: se puede ahorrar memoria usando
% imagenes mas reducidas
% y los comandos para get y set el tamano son...
%get(gca,'Position')
%set(gca,'Position',[0.13
0.11
0.5
0.6]);
% loop to produce frames of the movie (frames
stored in matrix M)
dt=2/nframes;

for it=1:nframes
z=x-sin(2*pi*it*dt);
y=exp(-8*z.*z);
plot(x,y)
axis(lim)
drawnow;
M(:,it)=getframe;
end;
% various commands to show movie
movie(M);
movie(M,3);

You might also like