/* Programa de generacion de la serie de Fourier de una senyal de forma */ /* cuadrada correspondiente a la tx. de la secuencia binaria '10101...' */ /* con amplitud de +A y -A voltios para representar 1 y 0, resp. */ /* Esta senyal, segun analisis de Fourier, es equivalente a la expresion: */ /* */ /* s(t) = (2*A)/(pi*n) */ /* sumatorio{n=1,2,...} (1 - coseno(pi*n))*seno(2*pi*n*f*t) */ /* */ #include #include /* Constantes */ #define pi (double) 3.1416 /* aproximadamente pi */ /* Parametros de la senyal */ #define A (double) 2.0 /* amplitud de la senyal, en voltios */ #define vtx (double) 10.0 /* velocidad de transmision, en bits/s */ #define Tb (double) 2.0 /* periodo de la senyal, en bits/ciclo */ #define H (double) 100.0 /* ancho de banda del canal, en Hz */ /* Parametros de la serie de Fourier */ #define A0 0.0 #define An 0.0 #define Bn ((2*A)/(pi*n))*(1-cos(pi*n)) /* Parametros de la representacion grafica */ #define Tmax 2*T /* representacion de s(t) en intervalo [0,2*T] */ /* T es el periodo de la senyal, calculado mas */ /* adelante */ #define rm T/1000.0 /* resolucion de muestreo en el intervalo */ /* Programa */ int main( ){ /* Variables */ int n; /* armonico */ double t; /* instante de tiempo */ double st; /* valor de s(t) */ double f; /* frecuencia de la senyal, en ciclos/s */ double T; /* periodo de la senyal, en s/ciclo */ int na; /* numero de armonicos que atraviesan el canal */ double w; /* variable auxiliar */ /* Inicializacion parametros de la senyal */ f = (double) vtx/Tb; T = (double) 1.0/f; na = (int) H/f; /* Generacion de la senyal s(t), t=[0,Tmax] */ for (t=0; t