Fourier

9
TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CHIMALHUACÁN Fundamentos de Telecomunicaciones Prof. Ing. Juan Antonio Granados Hernández Alumno: González Castro Fernando MATLAB: Análisis de Fourier en MATLAB

description

Ejemplos con Matlab.

Transcript of Fourier

Page 1: Fourier

TECNOLÓGICO DE ESTUDIOS SUPERIORES DE CHIMALHUACÁN

Fundamentos de Telecomunicaciones

Prof. Ing. Juan Antonio Granados HernándezAlumno: González Castro Fernando

MATLAB: Análisis de Fourier en MATLAB

Page 2: Fourier

Ejemplo 1.1: Escriba un programa en MATLAB que dibuje a(t) de 0 a 4 ms en intervalo de 0.05 ms y muestre que a(t) es una buena aproximación de g(t).

Solución:

f = 500; c = 4/pi; dt = 5.0e-05; tpts = (4.0e-3/5.0e-5) + 1; for n = 1: 12 for m = 1: tpts s1(n,m) = (4/pi)*(1/(2*n - 1))*sin((2*n - 1)*2*pi*f*dt*(m-1)); end end for m = 1:tpts a1 = s1(:,m); a2(m) = sum(a1); end f1 = a2'; t = 0.0:5.0e-5:4.0e-3; plot(t,f1) xlabel('Time, s') ylabel('Amplitude, V') title('Fourier series expansion')

Figura 1.1 Aproximación de la onda cuadrada.

Page 3: Fourier

Ejemplo 1.2: Para la forma de onda rectificada completamente mostrada en la figura 1.3, el periodo es 0.0333s y la amplitud es 169.71 Volts.

(a) Escriba un programa en MATLAB para obtener los coeficientes exponenciales Cn de la serie de Fourier para n = 0,1, 2,…, 19.(b) Halle el valor de dc.(c) Grafique el espectro de amplitud y de fase.

Solución:

% generate the full-wave rectifier waveformf1 = 60;inv = 1/f1; inc = 1/(80*f1); tnum = 3*inv;t = 0:inc:tnum; g1 = 120*sqrt(2)*sin(2*pi*f1*t);g = abs(g1);N = length(g);% obtain the exponential Fourier series coefficients num = 20; for i = 1:num for m = 1:N cint(m) = exp(-j*2*pi*(i-1)*m/N)*g(m); end c(i) = sum(cint)/N; end cmag = abs(c); cphase = angle(c); %print dc value disp('dc value of g(t)'); cmag(1) % plot the magnitude and phase spectrum f = (0:num-1)*60;subplot(121), stem(f(1:5),cmag(1:5)) title('Amplitude spectrum') xlabel('Frequency, Hz')subplot(122), stem(f(1:5),cphase(1:5)) title('Phase spectrum') xlabel('Frequency, Hz')dc value of g(t) ans = 107.5344;

Page 4: Fourier

Ejemplo 1.3: La señal periódica que se muestra en la figura 1.5 puede expresarse como

1. Utilizando un programa en Matlab, sintetiza g(t) utilizando 20 términos.

% synthesis of g(t) using exponential Fourier series expansion dt = 0.05; tpts = 8.0/dt +1; cst = exp(2) - exp(-2); for n = -10:10 for m = 1:tpts g1(n+11,m) = ((0.5*cst*((-1)^n))/(2+j*n*pi))*(exp(j*n*pi*dt*(m 1))); end end for m = 1: tpts g2 = g1(:,m); g3(m) = sum(g2); end g = g3';t = -4:0.05:4.0;plot(t,g) xlabel('Time, s') ylabel('Amplitude')title('Approximation of g(t)')

Figura 1.2 Espectro de magnitud y fase de la forma de onda rectificada completamente.

Page 5: Fourier

Ejemplo 1.4. Dada la secuencia x[n] = (1, 2, 1). (a) Calcular la DFT de x[n]. (b) Utilizar el algoritmo de la fft para encontrar la DFT de x[n]. (c) Compare los resultados de (a) y (b).

x = [1 2 1];xfft = fft(x) xfft =

4.0000 -0.5000 - 0.8660i -0.5000 + 0.8660i

Ejemplo 1.5. La señal g(t) esta dada como

(a) Hallar la transformada de Fourier de g(t). G(f). (b) Hallar la DFT de g(t) cuando el intervalo de muestreo es 0.05 s con N = 1000.(c) Hallar la DFT de g(t) cuando el intervalo de muestreo es 0.2 s con N = 250. (d) Compare los resultados obtenidos de las partes a, b y c.

Figura 1.3 Una aproximación de g(t).

Page 6: Fourier

Ejemplo 1.6. Dada una señal con ruido

donde f1= 100 Hz

n(t) es un ruido blanco distribuido normalmente. La duración de g(t) es 0.5 segundos. Use la función rand de MATLAB para generar la función de ruido. Utilice MATLAB para obtener el espectro de densidad de potencia .

% power spectral estimation of noisy signal t = 0.0:0.002:0.5;f1 =100; % generate the sine portion of signalx = sin(2*pi*f1*t); % generate a normally distributed white noise n = 0.5*randn(size(t)); % generate the noisy signaly = x+n;subplot(211), plot(t(1:50),y(1:50)), title('Nosiy time domain signal')

Figura 1.4 DEFT de g(t)

Page 7: Fourier

% power spectral estimation is done yfft = fft(y,256);len = length(yfft);pyy = yfft.*conj(yfft)/len;f = (500./256)*(0:127); subplot(212), plot(f,pyy(1:128)), title('power spectral density'), xlabel('frequency in Hz')

Figura 1.5 Señal con ruido y su espectro.