miércoles, 10 de abril de 2013

Programa en Matlab para Series de Fourier


   Este es un programa en Matlab que permite hacer una aproximación a una señal cuadrada (con límites en “y” max= 1, min= -1) por medio de las series de Fourier. Los valores de los coeficientes  son:A0 = 0, debido al valor medio de la función.B(n) = 4/n*pi, obtenido analíticamente.A(n) = 0, debido a la forma de la señal.

Programa en Matlab
%   Pablo Alejandro Arreola Galván 98482
%   Febrero, 2013
%   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')

%   Aquí declaramos varias cosas, en primer lugar 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.
%   También se declara el intervalo (x) de nuestra 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 este ciclo for está contenida la magia, 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 para 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 para el intervalo de –pi a pi, donde se ve una señal %    cuadrada, si se amplían los límites se verá la gráfica de valores constantes.

f=(x<0).*(-1)+(x>=0).*1; 
%    En esta sección se encuentran 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('******************************')

Algunos resultados son:
Aproximación con N=3



Aproximación con N=30



12 comentarios:

  1. Disculpa, entonces para obtener los valores de los coeficientes, siempre debemos calcularlo de forma analítica para luego programarlo en Matlab? existe alguna forma de solo poner la funcion deseado para que este la aproxime? gracias

    ResponderEliminar
    Respuestas
    1. En este caso si tendrás que hacer primero el cálculo de los coeficientes, este programa sólo hace las gráficas. Supongo que podrías hacer un programa que te calcule los coeficientes resolviendo las integrales, pero este programa no hace nada de eso.

      Eliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. Jaja, tuve que verlo un rato para acordarme. Vez que originalmente la fórmula tiene el coeficiente bn que multiplica al seno de (2pi *xn/P), entonces mi periodo P va de -pi a pi, por lo que es de 2pi, al sustituir en el argumento del seno, queda solamente (xn)

      saludos!

      Eliminar
  3. SONSO NO ES UNA FUNCION ESCALON SINO UNA ONDA CUADDRADA

    ResponderEliminar
  4. Para obtener la serie exponencial de fourier, como sería?

    ResponderEliminar
  5. excelente aporte... muchas gracias

    ResponderEliminar
  6. y si quiero hacer lo mismo para una triangular como seria la ecuacion ?

    ResponderEliminar
    Respuestas
    1. Disculpa, sabes como hacer el mismo procedimiento para una señal triangular ?

      Eliminar
  7. Playtech debuts in the UK for three weeks | Business Wire
    Playtech's live 속초 출장마사지 dealer studios are available for 의왕 출장안마 free in London. Here's 전주 출장샵 a breakdown of the 세종특별자치 출장안마 games offered for 충주 출장샵 the

    ResponderEliminar