Este documento presenta un análisis básico de señales con MATLAB. Explica cómo calcular la transformada de Fourier discreta de una señal utilizando la función fft de MATLAB. También describe los parámetros como la frecuencia de muestreo, el número de muestras y la resolución frecuencial. Finalmente, muestra un ejemplo de calcular la transformada de Fourier de una señal senoidal con ruido.
1. FACULTAD DE INGENIERÍA
UNAM
LABORATORIO DE SISTEMAS DE COMUNICACIONES
ANÁLISIS BÁSICO DE SEÑALES CON MATLAB
PRÁCTICA 03
Alumno: Ortiz Gómez Cristian
Grupo Laboratorio: 23
Prof: Vásquez Carbajal Dolores Alejandra M.I.
Grupo Teoría: 01
Prof: Ramos Vargas Floricel Ing.
Fecha de entrega
12/03/2016
2. Práctica 03
Análisis básico de señales con Matlab
Objetivo
El alumno conocerá los fundamentos de procesamiento de señales para la obtención de la transformada de Fourier por
medio de la transformada rápida.
Introducción
En comunicaciones, el análisis frecuencial de sistemas y señales tiene como herramienta fundamental la transformada de
Fourier continua (CFT). Las computadoras modernas permiten el uso de la transformada de Fourier discreta (DFT) para
este análisis. MATLAB ofrece las instrucciones fft(y) y ifft(y) que calculan la DFT y la IDFT respectivamente de un
vector y de N puntos o valores. En la evaluación CFT por medio de la DFT, es necesario tener algunas consideraciones. En
primer lugar, debe escogerse un intervalo finito de tiempo de observación de la señal, por ejemplo (Ti, Tf). Esto es
equivalente a observar la señal a través de una ventana de anchura T = Ti Tf , que en este caso es rectangular. En segundo
lugar, tanto la DFT como la IDFT son periódicas, con periodo fs = 1/Δt y T respectivamente. Los parámetros Δt, T, N se
seleccionan considerando lo siguiente.
• El periodo de muestreo TS = Δt = 1 = fS debe satisfacer el criterio de Nyquist fS = 1 / Δt = 1 = TS > 2B, donde B es la
máxima frecuencia en la señal por analizar. TS es el intervalo de tiempo entre muestras y se conoce también como
resolución en el tiempo. Para casos prácticos, fS debe escogerse entre 8 y 10 veces el valor de B. Nótese que
t = kTS = kΔt y que fS = N = T.
• El intervalo de tiempo T se selecciona para obtener la resolución frecuencial requerida Δf, que se determina con
Δf = 1 / T. La resolución frecuencial es la diferencia en Hz entre dos muestras o valores de la señal en el dominio
de la frecuencia.
• N es el número de muestras en el intervalo de tiempo T y se determina con N = T / Δt = T / TS. N depende de los
valores Δt y T. Si se incluye el valor inicial, el valor de N aumenta en 1. Los N puntos de la DFT dan origen a N
frecuencias en el intervalo (0, fS). La mitad de este intervalo, (0, fS/2), corresponde a las frecuencias positivas, y la
otra mitad, (fS/2, fS) a las frecuencias negativas.
• Cuando las señales son reales, la CFT tiene simetría hermitiana, que hace que el espectro de magnitud tenga
simetría par, y el de fase simetría impar. Al tomar la DFT con fft(y), es común considerar sólo las frecuencias
positivas y negativas, es necesario adicionar la instrucción fftshift(y) a la instrucción fft(y); con esto se
reordena el espectro. Por supuesto que debe corregirse también la escala de frecuencias.
• Para obtener magnitudes que correspondan con la teoría, se debe considerar un factor de ajuste: si se trata de
una señal periódica, la función fft(y) debe multiplicarse por el factor 1/N; si se trata de una señal no periódica,
la función debe multiplicarse por el factor Δt = TS = T/N.
Los valores k y n son los índices en tiempo y frecuencia, respectivamente. El siguiente ejemplo ilustra el uso de los
parámetros descritos con una de las señales fundamentales en comunicaciones.
3. Ejemplo 1 - Señal senoidal con ruido
Sea 𝑣𝑣(𝑡𝑡) = 20 cos(2𝜋𝜋 100𝑡𝑡) + 10 sin(2𝜋𝜋 50𝑡𝑡)
Su transformada de Fourier es:
𝑉𝑉(𝑓𝑓) = 10 𝛿𝛿(𝑓𝑓 − 100) + 10 𝛿𝛿(𝑓𝑓 + 100) +
5
𝑗𝑗
𝛿𝛿(𝑓𝑓 − 50) −
5
𝑗𝑗
𝛿𝛿(𝑓𝑓 + 50)
Su espectro de magnitud bilateral consiste de dos impulsos de magnitud 10 en f = -100 [Hz] y f = 100 [Hz], y de otros dos
impulsos de magnitud 5 en f = -50 [Hz] y f = 50[Hz].
• La frecuencia máxima de la señal es B = 100 [Hz], por lo que la frecuencia de muestreo adecuada es 𝑓𝑓𝑠𝑠 ≥ 2𝐵𝐵 =
10𝐵𝐵 = 1000 [𝐻𝐻𝐻𝐻]. El periodo de muestreo es TS = 1 / fS = 0.001 [s].
• Una resolución frecuencial adecuada es Δf = 1 [Hz], lo que determina que el intervalo necesario de tiempo de
observación de la señal sea T = 1/Δf = 1s.
• El número de muestras o puntos de datos es N = T/Ts = 1/0.001 = 1000. Es decir, se toman 1000 muestras o valores
de la señal. Estos 1000 valores cubrirán un intervalo de frecuencias de 1000 [Hz], lo que significa que dos valores
consecutivos tienen un diferencia de 1 [Hz] en el dominio de la frecuencia. La resolución espectral es de 1 [Hz].
Nótese que si incluimos el valor inicial cero, entonces N = 1001, es decir, el intervalo de observación es de 0 a 1
[seg], en incrementos de 1, lo que da N = 1001 valores.
• El eje de la frecuencia se construye considerando que N muestras en el dominio del tiempo en el intervalo (0, 1)s,
seconvierten en N valores de frecuencia en el intervalo (0, fs). Si se desea visualizar un espectro unilateral
(frecuencias positivas), sólo es necesario considerar el intervalo (0, fS/2) = (0, 500) [Hz].
Desarrollo del programa
1. Abra un archivo .m en la consola de MATLAB y defina las variables de frecuencia de muestreo de frecuencia de
muestreo con 1000 [Hz], tiempo inicial cero y tiempo final 1 [s]. Defina el vector tiempo y la función indicada.
Agregue ruido a la función (puede emplear la instrucción rand).
clear all
clc
Fs=1000;
T=1/Fs; %0.001s
t=0:T:1; %--vector de t--%
f1=-Fs/2:1:Fs/2;
x=20*cos(2*pi*100*t)+10*sin(2*pi*50*t);
y=x+20*rand(size(t));
N=length(y);
figure(1);
subplot(2,1,1);
plot(t(1:100),x(1:100));
title('Grafica x(t) freq muestreo 1Khz');
xlabel('Tiempo [ms]');
ylabel('V(t)');
subplot(2,1,2);
plot(t(1:100),y(1:100));
4. 2. Grafique la función en el tiempo y verifique los datos.
3. Espectro volteado. Empleando la instrucción fft( ) obtenga la transformada de Fourier de la función definida
en el punto anterior. No olvide el factor de ajuste correspondiente.
FFTx=fft(x)/N;
FFTy=fft(y)/N;
figure(2);
subplot(2,1,1);
plot(f1, abs(w))
axis([-200 200 0 15])
title('Grafica x(t) freq muestreo 1Khz');
xlabel('Tiempo [ms]');
ylabel('V(t)');
subplot(2,1,2);
plot(f1, abs(z))
axis([-200 200 0 15])
5. 4. Defina el vector de frecuencia (0, fs) y grafique la magnitud de la transformada de Fourier contra este vector.
Describa sus observaciones.
5. Espectro bilateral. Aplaque la instrucción fftshift( ) al resultado obtenido con la instrucción fft( ).
Obtenga el nuevo vector de frecuencias en (-fs/2, fs/2) a partir del anterior. Grafique la magnitud de su resultado
contra este nuevo vector. Describa sus resultados.
w=fftshift(FFTx);
z=fftshift(FFTy);
p=(angle(w)*180)/pi;
q=(angle(z)*180)/pi;
figure(3);
subplot(2,1,1);
plot(f1,p)
axis([-200 200 -200 200])
subplot(2,1,2);
plot(f1,q)
axis([-200 200 -200 200])