Anda di halaman 1dari 11

TUTORIAL PARA OBTENER SERIES DE FOURIER Y

GRAFICARLAS EN MATLAB
% Este programa grafica una función escalón y sobre ella
% una aproximación hecha con la serie de Fourier
% Introducción al programa y limpia de pantalla
clc
clear all
disp('******************************')
disp('Serie de Fourier')

% Declaramos una variable N la cual es el número de armónicos que


% incluirá nuestra aproximación, mientras mayor sea el número, más
% fiel será la gráfica obtenida a la original (Función escalón).
% Se declara el intervalo (x) de la función, que va de –pi hasta pi.
% Por último inicializamos la variable SUM a cero.

N= input('Número de muestras deseadas (N):');


x=-pi:0.001:pi;
sum=0;

% En el ciclo for se inicializa en 1 y termina en N, el incremento


es de
% 2, para así tener una serie de números impares (1,3,5,7,9…).
% Los valores pares de (n) se omiten ya que el resultado es cero
para
% todos ellos, no sumarán nada a la variable (sum).
% b(n) fue obtenida analíticamente

for n = 1: 2: N
b(n) = 4/(n*pi);
sum = sum + b(n) * sin(n*x);
end

% Para tener el resultado aproximado de la señal, se suma a0/2,


% este término fue obtenido a partir de el valor promedio del área
bajo
% la curva de -pi a pi, como es una función simétrica, el valor es
0,
% esto podría omitirse, pero se incluye para ver más claramente la
% fórmula de la serie.

sum = sum + 0;

% Esta es una manera de generar la función escalón (f), diciendo que


% toda (x) inferior a 0 valdrá -1, y toda (x) mayor a 0 valdrá 1.
% Esto sólo es válido en el intervalo de –pi a pi, donde se ve una
señal
% cuadrada, si amplían los límites se verá la gráfica de valores
constantes.

f=(x<0).*(-1)+(x>=0).*1;

% Luego se insertan los comandos para graficar y fin del programa.

plot(x,f); hold on
plot(x,sum)
grid
title('Serie de Fourier')
xlabel('Tiempo')
ylabel('Voltaje')
disp('Programa ejecutado exitosamente')
disp('******************************')

******************************
Serie de Fourier
Número de muestras deseadas (N): 1
1.5

0.5

-0.5

-1

-1.5
-4 -3 -2 -1 0 1 2 3 4

Para N = 3
1.5

0.5

-0.5

-1

-1.5
-4 -3 -2 -1 0 1 2 3 4

SEÑAL POLAR DE PULSOS RECTANGULARES

En el intervalo 0  t  2 la señal g(t) está dada por:

1 0t 
g (t )  
 1   t  2
Representaremos esta señal por la serie trigonométrica de Fourier. Se observa que la señal g(t)
es una función impar por lo que an=0 y contiene términos seno.

2
T = 2
2 2 2
bn 
T 
0
sen n 0 t 
T  sen n 0 tdt 0 
T
1

entonces
 2
   
2  cos nt  2  cos nt 
bn   
2  n  2  n 
 0  

1 1
= 
n
 cos n 1 
n
 1 cos n 

4
 ......................... para n impar
b n   n
0 ...........................para n par

4 4 4
g(t) = 
n 1
bn sen n 0 t =

sen t 
3
sen3t 
5
sen5t

La expresión g(t) indica que sumando una señal senoidal de frecuencia:

0 1 4
f0  hertz y de volts de amplitud
2 2 
3 4
más una señal senoidal de frecuencia f = Hertz y una amplitud de volts + ...
2 3
se obtiene una señal de pulsos rectangulares.
Componentes armónicos para la señal polar de pulsos rectangulares.

Ahora se graficara el resultado obtenido mediante la serie de Fourier en MATLAB .

1) ABRIR EL PROGRAMA MATLAB

2) Se recomienda utilizar el editor (notepad) de MATLAB, siguiendo los siguientes


pasos, file/new /m-file.

B) Una vez escrito el código, salvar como (siempre se salva en la carpeta work), y se
corre el programa run(f5) o bien dar clik en icono con flecha azul (run), la figura se
muestra automáticamente

C) Se debe tener la siguiente pantalla con el código escrito


% el primer armónico o frecuencia fundamental de la señal cuadrada en azul
t=0:.1:10
y=4*sin(t)/pi;
plot(t,y)
hold on
% El segundo armónico en verde
y=(4/pi)*[sin(3*t)/3];
hold on
plot(t,y,'g')
%el tercer armonico en ++++
y=(4/pi)*[sin(5*t)/5];
hold on
plot(t,y,'+')
%el 7 armonico
y=(4/pi)*[sin(7*t)/7];
hold on
plot(t,y,'b')
%la resultante en rojo, al sumar las armónicas, de la señal cuadrada.
%siga sumando hasta 10 armónicos y observe que la resultante que se aparece mas
%a la señal cuadrada
y=(4/pi)*[sin(t)+sin(3*t)/3+sin(5*t)/5+ sin(7*t)/7];
plot(t,y,'r')

1.5

0.5

-0.5

-1

-1.5
0 1 2 3 4 5 6 7 8 9 10

SEÑAL TRIANGULAR Encuentre el espectro de frecuencia de la señal diente de


sierra, en la figura en el intervalo o< t <T, la señal g (t) está definida por:

Señal Diente de Sierra.


T T
1 1 A
Fn 
T  g (t )e
0
 jn o t
dt 
T Tte
0
 jn o t
dt

e x
Utilizando la fórmula integral:  xe
x
dx    x  1 Tenemos:
2
Ae  jn o t
Fn   2 2 2   jn o t  1
T

T n o 0

2
o 

i  1
2

 A  jn 2 A
 2 2 e
4n 
  j 2n  1 
4n 2  2

Tenemos también e  jn2  = cos n 2  - jsen n2  = 1


jA A A jA
Fn   2 2  2 2 
2n 4n  4n  2n
jA
Fn 
2n

Cuando n = 0 el resultado anterior no tiene sentido por lo que calculando Fn cuando n=o.

T T
1 1 T A A t 2 
Fo =
T  0
f ( t )dt 
T  0 T
tdt  2  
T 20

A T 2  A
=    Fo = ao
T2  2  2
Agrupando ambos resultados:
 jA
 Para n  0 Utilizando este resultado para expresar g(t) en serie exponencial de Fourier
n
Fn  2A

2 Para n = 0

Tenemos:
jA  j 3ot jA jA A jA jot jA j 2ot
g(t) = - e - - + + e  e .......
6 4 e  j 2   t 2 e  j   t 2 2 4

Descomponiendo a Fn en su magnitud y fase: Fn = |Fn| e j n

  A 
A   C
Fn = j tg 1  2 n  
2n e  0  0
 

tg 1 ( )  90 0  
2
A
Fn  Fn  an 2  bn 2
2n


 Para n = 1, 2, 3, . . . .
`  n   
2


 2
Para n = -1, -2, -3, . . . . .
Espectro de amplitud y espectro de fase para la señal diente de sierra.

Mediante la serie trigonométrica de Fourier:

T
1 A
a   f (t )dt 
T 0
2
2 T A
an 
T  0 T
t cos n ot 
T
 
2 A  cos n 0 t tsen n  0 t 
 2  2   
T
  n  0  n  0  0
NOTA:
 cos ax x sen ax 
 x cos ax  a 2  a 
 2 2 
 cos n T senn T 
2A  T T 1 
  T 
T2  2  2  2
 n  
n 0  n 0  2 
 T  
2A  1 1 
   0
T 2   n  2  n  2 
 0 0 

Expresando g(t) mediante la serie trigonométrica de Fourier. Se deja al lector el cálculo de bn

A A A A A
g(t) =  sen 0 t  sen2 0 t  sen3 0 t - sen4 0 t . . . . . . .
2  2 3 4

Cn= an 2  bn 2  bn

 A 
1 bn  1
 2n  1 
 n   tg  a n   t g  0   tg (   )  
  2
 

Después de haber evaluado la serie de Fourier para la señal triangular


grafíquela en matlab
%SERIE DE FOURIER PARA SEÑAL TRIANGULAR

t=0:0.1:15;
y=1/2-sin(t)/pi;
plot(t,y,'g')
hold on
y=1/2-sin(2*t)/(2*pi);
plot(t,y,'b')
hold on
y=1/2-sin(3*t)/(3*pi);
plot(t,y,'r')
hold on
y=1/2-sin(4*t)/(4*pi);
plot(t,y,'g')
hold on
y=1/2-sin(t)/pi-sin(2*t)/(2*pi)-sin(3*t)/(3*pi)-sin(4*t)/(4*pi);
plot(t,y,'b')

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
0 5 10 15

TRANSFORMADA DE FOURIER
Creamos un script para realizar las siguientes tareas:

1. Construir una serie temporal (x, t) formada por n=214=16384 pares


de datos, tomando un intervalo de tiempo Δt=0.4 s, o bien una
frecuencia de muestreo de fs=2.5 Hz. El tiempo final
es tfinal=16383*0.4=6553.2 s
2. Calcular la transformada rápida de Fourier fft y la guardamos en el
vector g
3. Crear el array de frecuencias ω como en el cuadro anterior
4. Calculamos la potencia power: el cuadrado del valor absoluto de cada
elemento de g.
5. Representar gráficamente power en términos de la frecuencia
angular ω
%serie temporal

n=2^14;

dt=0.4;

t=(0:n-1)*dt; %vector de tiempos

x=cos(t)+0.5*cos(3*t)+0.4*cos(3.5*t)+0.7*cos(4*t)+0.2*cos(6*t);

%amplitud-fase vs. frecuencias

g=fft(x);

power=abs(g).^2;

dw=2*pi/(n*dt);

w=(0:n-1)*dw; %vector de frecuencias angulares

plot(w,power)

xlabel('\omega')

ylabel('P(\omega)')

title('Espectro de potencia')
7
x 10 Espectro de potencia
7

4
P()

0
0 2 4 6 8 10 12 14 16

%serie temporal
n=2^14;
dt=0.4;
t=(0:n-1)*dt; %vector de tiempos
x=cos(t)+0.5*cos(3*t)+0.4*cos(3.5*t)+0.7*cos(4*t)+0.2*cos(6*t);

%amplitud-fase vs. frecuencias


y=fft(x);
g=fftshift(y);
power=abs(g).^2;
dw=2*pi/(n*dt);
w=(-n/2:n/2-1)*dw;

plot(w,power)
xlabel('\omega')
ylabel('P(\omega)')
grid on
title('Espectro de potencia')
7
x 10 Espectro de potencia
7

4
P()

0
-8 -6 -4 -2 0 2 4 6 8

n=2^14;
dt=0.4;
t=(0:n-1)*dt; %vector de tiempos
x=cos(t)+0.5*cos(3*t)+0.4*cos(3.5*t)+0.7*cos(4*t)+0.2*cos(6*t);

%amplitud-fase vs. frecuencias


g=fft(x);
power=abs(g).^2;
dw=2*pi/(n*dt);
w=(0:n-1)*dw;
wc=pi/dt; %frecuencia angular crítica
plot(w,power)
xlim([0 wc])

xlabel('\omega')
ylabel('P(\omega)')
grid on
title('Espectro de potencia')

7
x 10 Espectro de potencia
7

4
P()

0
0 1 2 3 4 5 6 7

Anda mungkin juga menyukai