Está en la página 1de 5

PROGRAMA DE INGENIERÍA MECATRÓNICA

UNIVERSIDAD AUTONOMA DE BUCARAMANGA - UNAB

LABORATORIO DE SEÑALES 5

1) Determine la Transformada en tiempo discreto de Fourier (DTFT) de 𝑥[𝑛] =


0.5𝑛 𝑢[𝑛] . Como la secuencia x[n] es absolutamente sumable, entonces su
transformada discreta de Fourier existe.

Puesto que es una función compleja, tendremos que dibujar su magnitud y


su ángulo ( o su parte real e imaginaria) con respecto de w separadamente para
visualizar . Ahora w es una variable real entre −∞ y +∞, lo cual significa
que solo podemos dibujar parte de la función utilizando Matlab. Utilizando
dos propiedades importantes de la transformada discreta de Fourier, podemos
reducir el dominio de w a [0,𝜋]. Si x[n] es de duración finita, entonces Matlab no
puede ser usada directamente para computar desde x[n], sin embargo
podemos utilizarla para evaluar la expresión sobre [0,𝜋] frecuencias y
después dibujar su magnitud y su ángulo (o parte real e imaginaria). Implicaciones:
Para dibujar ahora necesitamos considerar únicamente medio periodo de
Generalmente este periodo es escogido para ser w entre [0,𝜋]. Evalúe
en 501 puntos equiespaciados entre [0,π], dibuje su magnitud, ángulo,
parte real y parte imaginaria.
a) Copiar en Matlab el siguiente código y describir con sus palabras que está
realizándose en cada fila del script. Explicar con sus propias palabras que
procedimiento se está realizando.
w=[0:1:500]*pi/500; % Eje dividido en 501 puntos
X = exp(j*w)./(exp(j*w)-0.5*ones (1,501));
magX=abs(X); angX=angle(X); realX=real(X) ;
imagX =imag(X); subplot(2,2,1); plot (w/pi,magX)
;grid xlabel('frecuencia en unidades de pi'); title
('magnitud parte real'); ylabel
('Magnitud')
subplot(2,2,3); plot (w/pi,angX) ;grid
xlabel('frecuencia en unidades de pi'); title ('Angulo'); ylabel ('radianes')
subplot(2,2,2); plot (w/pi,realX); grid
xlabel('frecuencia en unidades de pi'); title ('Parte Real'); ylabel ('Real')
subplot(2,2,4); plot (w/pi,imagX); grid
xlabel('frecuencia en unidades de pi'); title ('Parte Imaginaria'); ylabel ('Imaginaria')

2) Determine la transformada de Fourier de la siguiente secuencia de duración


finita. X(n)={1,2,3,4,5} para n = -1 : 3

Si x(n) es de duración finita, entonces Matlab puede ser usada para computar
numéricamente a cualquier frecuencia w. Entonces se evalúa a
frecuencias equiespaciadas entre [0,π], siendo implementadas como una
operación de multiplicación vectorial. Para entender esto asumamos que la
secuencia x(n) tiene N muestras entre n1 ≤n≤n N (no es necesario que este
siempre entre [0, N-1] y si deseamos evaluar a (M+1) equiespaciadas
frecuencias entre [0,π],

En Matlab representamos las secuencias e índices como vectores fila,


consecuentemente tomando la transpuesta, obtenemos.

En Matlab se escribe entonces.


K=[0:M]; n=[n1:n2]
X=x*(exp(-j*pi/M)).^(n’*k);

a) Compute numéricamente la transformada de Fourier en tiempo discreto de la


secuencia X(n)={1,2,3,4,5} para n = [-1 : 3] , con M= 501 frecuencias
equiespaciadas entre [0,π]. Dibuje su Magnitud, ángulo, parte real, parte
imaginaria.
b) Sea e investigue su
periodicidad. Para esto evalúe y dibuje para 401 puntos la transformada de
Fourier en dos periodos [entre -2 π y 2 π].

3) En el comand Window de Matlab escriba Doc fft, lea detenidamente el ejemplo


propuesto y explique cada una de las líneas de código que acción se está
generando.
Examples

A common use of Fourier transforms is to find the frequency components of a signal


buried in a noisy time domain signal. Consider data sampled at 1000 Hz. Form a
signal containing a 50 Hz sinusoid of amplitude 0.7 and 120 Hz sinusoid of amplitude
1 and corrupt it with some zero-mean random noise:

Fs = 1000; % Sampling frequency


T = 1/Fs; % Sample time L =
1000; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t); y = x +
2*randn(size(t)); % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

It is difficult to identify the frequency components by looking at the original signal.


Converting to the frequency domain, the discrete Fourier transform of the noisy
signal y is found by taking the fast Fourier transform (FFT):

NFFT = 2^nextpow2(L); % Next power of 2 from length of y


Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1); % Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)') ylabel('|Y(f)|')

The main reason the amplitudes are not exactly at 0.7 and 1 is because of the noise.
Several executions of this code (including recomputation of y) will produce different
approximations to 0.7 and 1. The other reason is that you have a finite length signal.
Increasing L from 1000 to 10000 in the example above will produce much better
approximations on average.

4) Con las siguientes líneas de commando en Matlab se realiza la adquisición de


una señal de audio, explicar cada línea de código que acción realiza.
%% Determinación de la frecuencia y reprodución de la muestra
Fs = 44100; % Frecuencia de muestreo, frecuencias pre-asignadas en MATLAB
Audio = audiorecorder(2*Fs,16, 1);%Proceso de reconocimiento o grabado del
audio
disp('Iinicio del audio...')
recordblocking(Audio,1);%Duración del audio
disp('Finalizacion del audio...')
Sonido = getaudiodata(Audio);%Proceso de guardado Nombre
= 'VOZ.wav';%Nombre de mi señal entrante
play(Audio);%Reproduce mi señal entrante
%plot(Sonido);
audiowrite(Nombre,Sonido,2*Fs)%Guarda mi señal entrante con los parametros
ingresados
5) Con los conocimientos adquiridos en el punto 7 y 8, realice la adquisición de dos
archivos de voz, correspondiente al primer apellido de cada uno de los
integrantes del laboratorio, dibuje las dos señales de audio, encuentre el
espectro de cada señal y dibújelo.

También podría gustarte