Sei sulla pagina 1di 8

Sistema de Comunicaciones IIE-348 Fernando Huenupn Q.

Ayuda Comandos MATLAB




Plot: Comando para graficar. Se puede llamar de la siguiente forma

plot(x,y)

donde:

x= vector de datos que corresponde al eje x
y= vector de datos que corresponde al eje y

x e y deben tener el mismo tamao, la grfica que genera la funcin plot es una
representacin punto a punto de de x e y, es decir, si x=[x
1
,x
2
,..,x
N
] e
y=[y
1
,y
2
,..,y
N
], con N el tamao del vector de datos, se grafican N puntos
ubicados en (x
1
,y
1
),(x
2
,y
2
),,(x
N
,y
N
)

si se desea graficar dos o mas curvas, se puede utilizar El comando plot de la
siguiente forma:

plot(x
(1)
,y
(1)
,x
(2)
,y
(2)
, x
(3)
,y
(3)
,)

donde x
(1)
,y
(1)
son vectores de datos de largo N y x
(2)
,y
(2)
son vectores de largo
M, etc.

Ejemplo:

T=3;
w0=2*pi*1/T;
t=0:0.01:T %% genera un vector que comienza en 0 y termina en T, con
un paso de 0.01
f_t=cos(w0*t);
plot(t,f_t) %% Grafica t con f_t
xlabel('Tiempo (s)') %%% Etiqueta eje x
ylabel('Amplitud')%%% Etiqueta eje y

con lo cual se obtiene la siguiente figura:

Figura 1: Ejemplo de grafica con el comando plot
0 0.5 1 1.5 2 2.5 3
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Tiempo (s)
A
m
p
l
i
t
u
d
Sistema de Comunicaciones IIE-348 Fernando Huenupn Q.

Figura 2: secuencia de caracteres para generar smbolos en los script de Matlab
Sistema de Comunicaciones IIE-348 Fernando Huenupn Q.
Comandos tiles para complementar la funcin Plot:

Axis: Escala los ejes de la grfica, se llama como

axis([xmin xmax ymin ymax])

xlabel o ylabel: comando para escribir una cadena de texto (string) en el eje x e y,
respectivamente, se puede llamar de la siguiente forma:

xlabel(texto)

title: Comando para escribir una cadena de texto en el ttulo de una figura, se llama de la
siguiente forma:

title(texto)

Figure: crea un nuevo objeto grfico. Se obtiene una nueva ventana sobre la cual se
puede generar una nueva grfica.

subplot: Divide la ventana grfica. Con el comando subplot se divide la ventana en una
matriz de N
F
xN
C
, donde N
F
es el numero de filas y N
C
es el numero de columnas. La
divisin se realiza de la siguiente forma:

subplot(N
f
,N
c
,P);

donde P es la ventana donde se va a generar un grfica

Ejemplo:

T=3;
w0=2*pi*1/T;
t=0:0.01:T %% genera un vector que comienza en 0 y termina en T, con un paso de 0.01
f_t=cos(w0*t);f_t2=sin(w0*t);f_t3=tan(w0*t);
figure;
subplot(3,1,1); %% Se divide la ventana en 3 filas y 1 columana, se apunta a la primera
division para graficar
plot(t,f_t);xlabel('Tiempo (s)');ylabel('Amplitud');
subplot(3,1,2);%% se apunta a la segunda division de la ventana para graficar
plot(t,f_t2);xlabel('Tiempo (s)');ylabel('Amplitud');
subplot(3,1,3);%% Se apunta a la tercera division de la ventana para graficar
plot(t,f_t3);xlabel('Tiempo (s)');ylabel('Amplitud');
axis([0 T -5 5])

Figura 3: Ejemplo de divisin de una ventana con el comando subplot
0 0.5 1 1.5 2 2.5 3
-1
0
1
Tiempo (s)
A
m
p
li
t
u
d
0 0.5 1 1.5 2 2.5 3
-1
0
1
Tiempo (s)
A
m
p
l
it
u
d
0 0.5 1 1.5 2 2.5 3
-5
0
5
Tiempo (s)
A
m
p
li
t
u
d
Sistema de Comunicaciones IIE-348 Fernando Huenupn Q.

linspace: genera un vector linealmente espaciado. Se puede llamar de la siguiente forma:

y = linspace(a,b,n)

donde:

a = valor de inicio del vector
b = valor final del vector.
n = nmero de muestras entre a y b

stem: comando para graficar un secuencia discreta de datos. Rutina similar a plot sin
embargo genera un grafico discreto de lneas verticales. Se puede llamar de la siguiente
forma:

stem(X,Y)

x e y deben tener el mismo tamao, la grfica que genera la funcin stem es una
representacin punto a punto de de x e y, es decir, si x=[x
1
,x
2
,..,x
N
] e
y=[y
1
,y
2
,..,y
N
], con N el tamao del vector de datos, se grafican N puntos
ubicados en (x
1
,y
1
),(x
2
,y
2
),,(x
N
,y
N
)

Ejemplo:

t=0:10;
f_t=exp(-t);
stem(t,f_t,'fill','red');


Figura 4: Ejemplo de grfico con el comando stem










0 1 2 3 4 5 6 7 8 9 10
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 0.5 1 1.5
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
tiempo
a
m
p
litu
d
-1 -0.8 -0.6 -0.4 -0. 2 0 0.2 0. 4 0.6 0.8 1
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
tiempo (s)
-5 -4 -3 -2 -1 0 1 2 3 4 5
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
tiempo(s)
Funciones para generar seales:

Seales peridicas Seales Aperiodicas
- Sawtooth: diente de sierra - tripuls: Funcin triangular
- Square: seal cuadrada - rectpuls : Funcin Pulso
- Pulstran: tren de pulsos basados en muestras de una
funcin continua como tripuls, gaupuls, etc.
- gauspuls : pulso gausiano
- sinc: funcin sampling



Ejemplos funciones peridicas:

Diente de sierra (sawtooth)

fs = 10000;
t = 0:1/fs:1.5;
x1 = sawtooth(2*pi*2*t);
plot(t,x1)



Tren de pulsos (square)

fs = 10000;
t = 0:1/fs:1.5;
tau=50;
x1 = square (2*pi*2*t,50);
plot(t,x1)

Ejemplo funciones aperidicas :

Seal triangular (tripuls)

fs = 10000;
t = -1:1/fs:1;
x1 = tripuls(t,0.3);
Plot(t,x1)



Seal sampling (sinc)

fs = 1000;
t = -5:1/fs:5;
tau=50;
x1 = sinc (t);
plot(t,x1)









0 0.5 1 1.5
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
tiempo (s)
A
m
p
litu
d
Sistema de Comunicaciones IIE-348 Fernando Huenupn Q.
Pulstran: genera un tren de pulsos de funciones definidas en Matlab o de vectores de
puntos generados manualmente.

y = pulstran(t,d,'func')

donde:

'func' funciones predefinidas de matlab, stas pueden ser:
'gauspuls', para generar una tren de pulsos Gaussianos
'rectpuls', para generar un tren de pulsos aperiodicos
'tripuls', para generar un tren de pulsos triangular

Ejemplo:

t = 0:320;
d = (0:9)'*32;
y = pulstran(t,d,'tripuls',30);
figure; plot(t,y)

Figura 5: tren de pulsos triangulares generados con la funcin pulstran

0 50 100 150 200 250 300 350
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Sistema de Comunicaciones IIE-348 Fernando Huenupn Q.
Comandos utiles para procesamiento digital de seales

wavread: Comando para leer archivos wav. Se llama de la siguiente manera:

[Data,Fs,bit]=wavread(path_wav);

Donde:
Path_wav = ruta del archivo .wav Data = datos o muestras del archivo wav
Fs = Frecuencia de muestreo.en Hz bit = cantidad de bits por segundos

resample: cambia la frecuencia de muestreo de una seal por otra. Se puede llamar de la
siguiente forma:

y = resample(x,p,q)

Donde:
x : seal en el tiempo a remuestrear. q: seal original de muestreo
p: nueva frecuencia de muestreo y: seal remuestreada

FFT: Transformada rpida de Fourier. Se llama de la siguiente manera:

Y=fft(Datos,Nfft);

Donde:
Datos = Seal en el tiempo
Nfft = numero de puntos de la FFT.

Butter: Comando para disear un filtro IIR butterworth. Se puede llamar de varias
formas:

[b,a] = butter(n,Wn,'ftype')
[z,p,k] = butter(n,Wn,'ftype')

Donde :

n = orden del filtro [b,a] = coeficientes del filtro.
Wn = Frecuencia de corte del filtro, valor normalizado entre
0 y 1 en relacin a la frec. De muestreo. Ej. si se quiere
disear un filtro de frec. de corte de 1Khz y la frecuencia
de muestres es de 4Khz, Wn debe ser igual a .
[z,p,k]= ceros, polos y ganancia del filtro.
ftype = Tipo del filtro low, high, stop.

Los coeficientes del filtro b,a corresponden a la representacin de la funcin de
transferencia de la siguiente forma:


1
1
( ) (1) (2) ... ( 1)
( )
( ) (1) (2) ... ( 1)
n
m
B z b b z b n z
H z
A z a a z a m z





(1)

Filter : Comando para filtrar una seal dado los coeficientes del filtro. Se puede llamar
de la siguiente forma:

[y,zf] = filter(b,a,X)

Donde:
b,a: Son los coeficientes del filtro Y : Seal filtrada
X : Seal en el tiempo zf : delay del filtro

Sistema de Comunicaciones IIE-348 Fernando Huenupn Q.
freqz : Respuesta en frecuencia dado los coeficientes de un filtro digital. Si b,a son los
coeficientes del filtro segn (1), la funcin se llama como:

[h,w] = freqz(b,a,L);


donde
h = vector de la respuesta en frecuencia. h es de largo L y puede ser real o complejo.
Nota: si se desea estimar la magnitud en decibeles de la respuesta en frecuencia se debe
realizar lo siguiente:

Hw = 10*log10(h.*conj(h));

w= vector con la respuesta angular en frecuencia del filtro
L = nmero de puntos (muestreo) de los vectores de salidas