EJERCICIOS PDS-2023-II
1. Calcular la Transformada de Fourier Continua de la función definida por:
Transformada de ℱ
∞
X ( ω )= ∫ x ( t ) e
− jωt
dt
−∞
Entonces :
−∞ ∞
X ( ω )= ∫ 0 . e dt+∫ e
− jωt − at − jωt
.e dt
0 0
∞
X ( ω )=∫ e
−(a+ jω)t
dt
0
X ( ω )=
−1 −(a+ jω)t ∞
a+ jω
(e )
0 |
X ( ω )=
−1 1 1
(
−
a+ jω e ∞ e 0 )
1
X ( ω )=
a+ jω
Expresando en su forma exponencial
1
X ( ω )= −1
j tan ( ωa )
√ a+ω . e
1 − jtan
−1
( ωa )
X ( ω )= .e
√ a+ω
Donde :
1
Magnitud=
√ a+ ω
Fase=−tan−1 ( ωa )
Gráfica naranja=Magnitud , Gráfica azul=Fase
3. a) Calcule la Transformada de Fourier Discreta para una secuencia de 21
números. Grafique y comente resultados en el dominio del tiempo y en el de la
frecuencia. Comente resultados. b) Considere una señal sinusoidal de N=32,
grafique la señal en el dominio del tiempo y en el de la frecuencia. Comente
resultados.
% Parámetros de la señal sinusoidal
N = 32; % Tamaño de la señal
fs = 1000; % Frecuencia de muestreo en Hz
f = 50; % Frecuencia de la señal sinusoidal en Hz
A = 1; % Amplitud de la señal
phi = pi/4; % Fase de la señal
% Crear la señal sinusoidal
t = (0:N-1) * (1/fs); % Vector de tiempo
x = A * sin(2 * pi * f * t + phi); % Señal sinusoidal
% Calcular la FFT de la señal
X = fft(x);
% Calcular las frecuencias correspondientes a los coeficientes de la FFT
frequencies = (0:N-1) * (fs/N);
% Magnitud de los coeficientes de la FFT
magnitude = abs(X);
% Fase de los coeficientes de la FFT
phase = angle(X);
% Gráfica de la señal en el dominio del tiempo
subplot(3,1,1);
plot(t, x);
xlabel('Tiempo (s)');
ylabel('Amplitud');
title('Señal sinusoidal en el dominio del tiempo');
% Gráfica de la magnitud de la FFT
subplot(3,1,2);
stem(frequencies, magnitude);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud');
title('Magnitud de la FFT');
% Gráfica de la fase de la FFT
subplot(3,1,3);
stem(frequencies, phase);
xlabel('Frecuencia (Hz)');
ylabel('Fase');
title('Fase de la FFT');
4. a) Describa y dibuje el algoritmo de la Transformada Rápida de Fourier, FFT,
Diezmada en el Tiempo para N=16.
% Secuencia de entrada
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 10, 9, 8];
% Calcula la FFT de la secuencia de entrada
X = fft(x);
% Grafica los resultados
subplot(2, 1, 1);
stem(0:15, x);
title('Secuencia de entrada');
xlabel('Muestras');
ylabel('Amplitud');
subplot(2, 1, 2);
stem(0:15, abs(X));
title('Transformada de Fourier Discreta (DFT)');
xlabel('Frecuencia');
ylabel('Magnitud');
b) Describa el algoritmo de inversión de Bits para N=128. Calcule y muestre el
orden de los datos de entrada para aplicar la FFT.
N = 128; % Tamaño de la señal
n = log2(N); % Cantidad de bits necesarios para representar N
% Generar el orden de bits invertidos
bit_reverse_order = 0:N-1;
bit_reverse_order = bitrevorder(bit_reverse_order, n);
% Datos de ejemplo
datos_entrada = 1:N; % Datos de entrada del 1 al 128
% Reorganizar los datos de entrada en el orden de bits invertidos
datos_entrada_ordenados = datos_entrada(bit_reverse_order + 1);
% Ahora, datos_entrada_ordenados contiene los datos de entrada reorganizados
% de acuerdo con el orden de bits invertidos para N=128
x = (0:15)';
v = bitrevorder(x);
x_bin = dec2bin(x);
v_bin = dec2bin(v);
T = table(x,x_bin,v,v_bin)
function X = fft_dit(N, x)
if N == 1
X = x; % Caso base: una única muestra
else
% Dividir la secuencia en subsecuencias pares e impares
x_even = x([Link]nd);
x_odd = x([Link]nd);
% Calcular recursivamente la DFT de las subsecuencias
X_even = fft_dit(N/2, x_even);
X_odd = fft_dit(N/2, x_odd);
% Combinar los resultados de las DFT parciales
W_Nk = exp(-1j * 2 * pi / N * (0:N/2-1));
X = [X_even + W_Nk .* X_odd, X_even - W_Nk .* X_odd];
end
end
% Secuencia de entrada
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 10, 9, 8];
% Calcula la FFT Diezmada en el Tiempo
X = fft_dit(16, x);
% Grafica los resultados
subplot(2, 1, 1);
stem(0:15, x);
title('Secuencia de entrada');
xlabel('Muestras');
ylabel('Amplitud');
subplot(2, 1, 2);
stem(0:15, abs(X));
title('Transformada de Fourier Discreta (DFT)');
xlabel('Frecuencia');
ylabel('Magnitud');
c) Calcule y grafique la FFT para una señal sinusoidal de 60 Hz. Emplee los
valores que sean necesarios. Comente resultados
% Parámetros de la señal
fs = 1000; % Frecuencia de muestreo en Hz
f = 60; % Frecuencia de la señal sinusoidal en Hz
t = 0:1/fs:1; % Vector de tiempo de 1 segundo
% Crear la señal sinusoidal
x = sin(2 * pi * f * t);
% Calcular la FFT de la señal
X = fft(x);
% Calcular las frecuencias correspondientes a los coeficientes de la FFT
N = length(x); % Tamaño de la señal
frequencies = (0:N-1) * (fs/N);
% Magnitud de los coeficientes de la FFT
magnitude = abs(X);
% Gráfica de la magnitud de la FFT
subplot(2,1,1);
stem(frequencies, magnitude);
xlabel('Frecuencia (Hz)');
ylabel('Magnitud');
title('Magnitud de la FFT');
% Gráfica de la señal en el dominio del tiempo
subplot(2,1,2);
plot(t, x);
xlabel('Tiempo (s)');
ylabel('Amplitud');
title('Señal sinusoidal en el dominio del tiempo');