Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1. Objetivo y contenido
En esta práctica pretendemos revisar parte de la materia del tema 2 de la asignatu-
ra desde la perspectiva de un entorno de cálculo numérico y simulación por ordenador:
matlab. El objetivo fundamental es familiarizarse con la definición, manipulación y repre-
sentación de señales en matlab.
Este documento proporciona un guión que incluye todas las órdenes necesarias para
ir siguiendo los apartados de la práctica. Con objeto de centrarnos en la materia de la
asignatura y de que la clase sea más amena, hemos optado por no dedicar apartados
especı́ficos a explicar el entorno ni el lenguaje de programación matlab, sino por explicar
los conceptos y funciones necesarios sobre la marcha.
En primer lugar, tras una toma de contacto básica con el entorno, mostraremos un
ejemplo que resume los aspectos de la asignatura que se van a tratar en esta práctica. Este
primer ejemplo es una aproximación intuitiva al uso de matlab, con la que pretendemos
dar una idea general de las posibilidades del entorno.
A lo largo de la práctica se irán detallando los puntos que se presentan brevemente en
el ejemplo inicial: definición de y operación con señales, representación gráfica, análisis de
Fourier y manipulación de señales en los dominios del tiempo y la frecuencia.
3. Señales en matlab
Siendo rigurosos, el procedimiento seguido en el apartado anterior no es adecuado para
el análisis de señales analógicas; es más, en general matlab no permite analizar señales
analógicas1 . Esto se debe a que la forma natural de representar una señal en matlab es
1
Salvo que se usen bloques funcionales o toolboxes especı́ficos.
definir una secuencia finita de valores mediante un vector fila. Ası́, por ejemplo, podemos
definir la secuencia de instantes de tiempo equidistantes (intervalo 1 ms) entre 0 y 0.25,
que en el ejemplo visto es la base de tiempos de la señal. Y, del mismo modo, en el
ejemplo 2, definimos una señal sinusoide como una secuencia de valores.
Se puede acceder a los elementos de los vectores usando la notación del ejemplo 3.
Nótese que t(1) representa un instante de tiempo, mientras que g(1) representa el valor
que toma la señal g en ese instante.
Por tanto, siendo estrictos, en matlab toda señal es discreta en tiempo, mientras que en
amplitud puede ser discreta (cuantizada) o continua (aunque limitada por la precisión de
los tipos numéricos). No obstante, si los intervalos temporales entre valores son suficiente-
mente pequeños y el rango temporal en que se define la señal es suficientemente amplio, la
secuencia de valores empleada para representar la señal y las operaciones realizadas para
su análisis proporcionan una buena aproximación a los resultados teóricos.
En el caso más simple y frecuente, los valores se toman en instantes equiespaciados,
intervalo que no debe confundirse con el periodo de muestreo. De momento, ignoraremos
el efecto de la discretización de señales (utilizaremos intervalos de tiempo suficientemente
pequeños, de modo que los efectos sean despreciables). Asimismo, la amplitud de las
señales está sometida a una discretización que, dada la precisión de los tipos numéricos
empleados en matlab, podemos ignorar.
Representar la señal sinusoide anterior para diferentes intervalos de la base
de tiempos t.
Pensar si es posible y cómo se puede definir en matlab una señal pertene-
ciente a las siguientes categorı́as:
Pensar cómo se definirı́an otros tipos de señales, por ejemplo impulso, rec-
tángulo, triangular, exponencial, cuadrada, etc.
¿Es posible definir en matlab señales de los siguientes tipos?
Periódicas / no periódicas
Deterministas / aleatorias
Continuas / discretas
Analógicas / digitales
Energı́a / potencia
4. Análisis de Fourier
Utilizando operaciones sobre vectores, se pueden calcular fácilmente los coeficientes de
Fourier correspondientes a una señal. En el ejemplo 8, se definen el vector n, que contiene
los ı́ndices de los coeficientes, y el vector cn, que contiene los coeficientes.
Mediante abs y angle obtenemos la magnitud y la fase del espectro de la señal. Nótese
que la amplitud de la transformada obtenida mediante fft queda multiplicada por n
respecto a la definición vista en las clases de teorı́a, siendo n el número de elementos del
vector utilizado para representar la señal original2 .
2
Ojo: si el número de elementos del vector dado como transformada se restringe a un número menor
que la longitud del vector original, la amplitud queda dividida por el mismo valor
De manera análoga, podemos obtener las partes real e imaginaria de cualquiera de las
señales y transformadas (ver el ejemplo 10).
X=fftshift(fft(x));
G=fftshift(fft(g));
f = base_tiempo_frec(t);
subplot(211)
grid;
plot(f,abs(X));
subplot(212)
plot(f,abs(G));
subplot(311)
plot(t,g)
subplot(312)
plot(t,g_escalon)
subplot(313)
plot(t,g_conv(1:length(g)))
trabajar con matlab. No obstante, aunque en principio matlab no se diseñó para realizar
operaciones simbólicas, sı́ es posible definir y manipular señales (y funciones en general)
de manera simbólica, si disponemos del “Toolbox” para cálculo simbólico. Ası́, como en el
ejemplo 15, podemos definir una función seno o una δ de Dirac, y calcular la transformada
de Fourier de manera simbólica.
Ejemplo 15 ficom pr1 0015 fourier simbolico.m
% Análisis de Fourier con cálculo simbólico
syms t % crear variable simbólica
g = sin(2*pi*t)
G = fourier(g) % Transformada de Fourier
plot(g) % ¡error!
ezplot(g)
ginv = ifourier(G) % Transformada inversa
g2 = dirac(t)
G2 = fourier(g2)
% Se~
nal Heaviside/escalon
g3 = heaviside(t)
% Suma de series
syms k
symsum(1/k^2,1,10)
symsum(1/k^2,1,Inf)
6. Notas
Matlab suele incluir programas de demostración de los “Toolboxes” disponibles. Por
ejemplo, se puede probar una demo sobre la transformada de Fourier discreta me-
diante la orden sigdemo1.
Dentro de la ventana de órdenes, se puede obtener ayuda sobre cualquier elemento
de matlab mediante la orden help. Entre otras, se dispone de la orden help help,
que proporciona una explicación básica de cómo utilizar help. Del mismo modo, se
puede usar la orden doc para consultar la documentación sobre cualquier tema.
Para poner tı́tulos y manipular las gráficas, además de la interfaz gráfica, se dispone
de las siguientes órdenes, entre otras muchas:
title(’Tı́tulo de la gráfica’)
xlabel(’Tı́tulo eje horizontal’)
ylabel(’Tı́tulo eje vertical’)
set(gca,’XTick’,-pi:pi/2:pi) % colocar marcas en el eje x
hold % acumular gráficas sobre la misma ventana
grid % trazar rejilla interna
help plot % ayuda especı́fica sobre plot y funciones similares
doc plot % documentación sobre plot
7. Referencias
[1] Introduction to Matlab and Octave.
http://ccrma.stanford.edu/˜jos/matlab/matlab.pdf. Descripción de la historia y las carac-
terı́sticas generales del lenguaje matlab y en particular de los entornos Matlab y Octave.
[2] MATLAB Tutorial.
http://www.ece.gatech.edu/users/bonnie/book/TUTORIAL/tutorial.html. De los auto-
res del libro Fundamentals of Signals and Systems Using Matlab. Muy buena introducción
al uso de matlab para análisis de señales y sistemas en comunicaciones.
[3] Documentation for MathWorks Products, Release 14.
http://www.mathworks.com/access/helpdesk/help/helpdesk.shtml
[4] GNU Octave Repository Categorical Index.
http://octave.sourceforge.net/index/index.html
[5] http://www.gts.tsc.uvigo.es/ssd/. Prácticas de la asignatura Señales y Sistemas
Discretos, impartida por el Departamento de Teorı́a de la Señal y Comunicaciones de la
Universidad de Vigo.
[6] FFTW: A library for computing the discrete Fourier Transform. http://www.fftw.org.
[7] Fundamentals of Signals and Systems Using the Web and MATLAB: Online Demos.
http://users.ece.gatech.edu/˜bonnie/book/applets.html
[8] Numerical Mathematics Consortium (www.nmconsortium.org). Iniciativa de estan-
darización de algoritmos y lenguajes numéricos.
[9] V.K. Ingle y J.G. Proakis. Digital Signal Processing Using MATLAB V.4. PWS
Publishing Company. 1997. ISBN: 0-534–93805-1.