Está en la página 1de 12

UNIVERSIDAD NACIONAL DE INGENIERA

Facultad de Ingeniera Elctrica y Electrnica

Informe Previo de la Experiencia N 1


CURSO:

Telecomunicaciones I

Simulacin De La Serie De Fourier

Alumnos:
Fabian Barrientos Juan Miguel Padilla Castillo Omar

CDIGO DE CURSO / SECCIN: EE513-M

FECHA DE ENTREGA:

20 / 09 / 11

SEALES ELEMENTALES
El objeto bsico usado en MATLAB es una matriz numrica con la posibilidad de almacenar nmeros complejos. Los datos encontrados en el estudio de seales y sistemas son siempre, muy bien representados en forma de matrices. En esta seccin se usar MATLAB para la generacin de seales elementales como lo son las seales exponenciales, senoidales, etc. El ToolBox de procesamiento de seales de MATLAB posee una larga variedad de funciones para la generacin de seales, estas seales requieren de una representacin vectorial de la variable tiempo, de manera continua o discreta. Para realizar una simulacin de un intervalo continuo, se usa un vector de valores discretos con un intervalo de muestreo muy pequeo. El siguiente comando genera un vector llamado t de valores que representan la variable tiempo, con un intervalo de muestreo de 1ms entre 0 y 1seg.

t = 0:0.001:1;
Para generar un vector llamado n de valores que representan la variable tiempo para una seal discreta en el intervalo de 0 a 1000, se puede usar el siguiente comando.

n = 0:1000;
Despus de creado el vector que representa la variable tiempo, es posible iniciar el desarrollo de alguna seal de inters. En MATLAB una seal discreta en el tiempo se representa exactamente, porque los valores de la seal son representados como los elementos de un vector. Sin embargo las seales de tiempo continuo en MATLAB son tan solo aproximaciones. La aproximacin consiste de un vector cuyos elementos son muestras de la verdadera seal de tiempo continuo. Cuando se usa esta tcnica para la representacin de seales continuas es importante escoger el intervalo de muestreo lo suficientemente pequeo para asegurar que las muestras capturan todos los detalles de la seal.

SEALES PERIODICAS
La generacin de seales peridicas tales como ondas cuadradas y triangulares es una actividad muy fcil de realizar en MATLAB. Consideremos primero la generacin de una onda cuadrada de amplitud A, frecuencia fundamental w (medida en radianes por segundo) y ciclo til rho. Recordemos que el ciclo til es la fraccin de cada periodo en donde la seal es positiva. Para generar dicha seal se puede usar el siguiente conjunto de comandos:

>> A = 1; >> w = 10 * pi;

>> >> >> >>

rho = 0.5; t = 0:0.001:1; sq = A*square(w*t+rho); plot(t,sq);

El resultado se puede observar en la siguiente grfica:


En la segunda lnea, pi es una funcin interna de Matlab que calcula el nmero ms cercano a la constante PI en formato de coma flotante. El ltimo comando es usado para ver la seal generada. El comando plot dibuja lneas conectando los valores sucesivos de la seal y as da la apariencia de una seal en tiempo continuo. Consideremos ahora la generacin de una onda triangular de amplitud A, frecuencia fundamental w y ancho Wdt. El periodo de la onda triangular ser T con el mximo valor de la seal ocurriendo en t = WT. El comando bsico para generar esta seal es:

A*sawtooth(w*t + Wdt)

El listado complete de comandos sera:


>> >> >> >> >> >> A = 1; w = 10 * pi; Wdt = 0.5; t = 0:0.001:1; tri = A*sawtooth(w * t + Wdt); plot(t,tri);

El resultado se puede visualizar en la siguiente grfica. Como se menciono anteriormente, una seal generada en MATLAB es inherentemente de naturaleza discreta. Para visualizar una seal en tiempo discreto se puede hacer uso del comando stem. Especficamente stem( n , x ), bosqueja los datos contenidos en el vector x como una seal de tiempo discreto con los valores de tiempo definidos por el vector n. Los vectores n y x deben tener dimensiones compatibles, es decir deben tener el mismo nmero de elementos. El siguiente ejemplo genera una seal cuadrada en tiempo discreto de amplitud igual a la unidad, ciclo til igual a 50% y una frecuencia angular igual a /4:

>> >> >> >> >> >>

A = 1; omega = pi / 4; rho = 0.5; n = -10:10; x = A*square(omega*n +rho); stem(n,x);

El resultado se puede ver en la siguiente grfica:

SEALES EXPONENCIALES
Las seales exponenciales se pueden clasificar segn su comportamiento en decrecientes y crecientes. El comando en MATLAB para generar una seal exponencial decreciente es:

B*exp(-a*t);
Para generar una seal exponencial creciente se usa el comando:

B*exp(a*t);

En ambos casos el parmetro a es positivo. El siguiente ejemplo muestra la generacin de una seal exponencial decreciente:

>> >> >> >> >>

B = 5; a = 6; t = 0:0.001:1; x = B * exp( -a * t ); % seal exponencial decreciente. plot( t, x );

Siendo el resultado como sigue:

Para la generacin de una seal exponencial creciente se puede usar el siguiente ejemplo:

>> >> >> >> >>

B = 1; a = 5; t = 0:0.001:1; x = B*exp(a*t); plot(t,x);

Existen casos particulares en los que la base de la operacin de exponenciacin no es el nmero irracional e, puede ser cualquier otro nmero. Para estos casos se usa una notacin diferente la cual esta basada en la utilizacin del smbolo ^. Observando el ejemplo que sigue se nota que r es un nmero mientras que n es un vector, por lo tanto se usa una combinacin del smbolo exponenciacin con el carcter . Lo cual significa que a cada valor del vector le ser aplicada la funcin.
El siguiente ejemplo genera la seal:

>> >> >> >> >>

B = 1; r = 0.85; n = -10:10; x = B*r.^n; stem(n,x);

SEALES SENOISOIDALES. MATLAB tambin contiene funciones trigonomtricas que pueden ser usadas para generar seales senosoidales. Una seal coseno de amplitud A, frecuencia w0 (medida en radianes por segundo) y ngulo de fase phi (en radianes) se obtiene usando el comando:

A*cos(w0*t + phi);
Alternativamente se puede usar la funcin seno para generar una seal senosoidal usando el siguiente comando:

A*sin(w0*t + phi );
En seguida se muestran ejemplos para cada uno de las seales respectivamente:

>> A = 4; >> w0= 20*pi; >> phi = pi/6; >> t = 0:0.001:1; >> coseno = A*cos(w0*t + phi); >> plot(t,coseno) ;

>> A = 0.5; >> w0 = 20*pi; >> phi = pi/2;

>> t = 0:0.001:1; >> seno = A*sin(w0*t + phi); >> plot(t,seno);

Fenmeno de Gibbs
Si la serie de Fourier para una funcin f(t) se trunca para lograr una aproximacin en suma finita de senos y cosenos , es natural pensar que a medida que agreguemos ms armnicos, la sumatoria se aproximar ms a f(t). Esto se cumple excepto en las discontinuidades de f(t), en donde el error de la suma finita no tiende a cero a medida que agregamos armnicos. Por ejemplo, consideremos el tren:
1.5 1 0.5 0 -0.5 -1 -1.5 -1 -0.5 0 0.5 1

Serie con 1 armnico


1.5 1 0.5 0 -0.5 -1 -1.5 -1

Serie con 3 armnicos

-0.5

0.5

1.5 1 0.5 0 -0.5 -1 -1.5 -1

Serie con 5 armnicos

1.5 1 0.5 0 -0.5 -1

Serie con 7 armnicos

-0.5

0.5

-1.5 -1

-0.5

0.5

1.5 1 0.5 0 -0.5 -1 -1.5 -1

Serie con 13 armnicos

1.5 1 0.5 0 -0.5 -1

Serie con 50 armnicos

-0.5

0.5

-1.5 -1

-0.5

0.5

1.5 1 0.5 0 -0.5 -1 -1.5 -1

Serie con 100 armnicos

-0.5

0.5

DESARROLLO DE LA EXPERIENCIA
CODIGO FUENTE
%===================================================== %*** GRFICA DE FUNCIN Y DE SU SERIE DE FOURIER *** %===================================================== %VARIABLES t=linspace(-20,20,2000); syms x; %INGRESO DE DATOS disp('FUNCION A PLOTEAR') disp('=================') FUN=input('f(t)=','s'); funcion=inline(FUN); disp('SERIE DE FOURIER DE LA SERIE') disp('============================') w=input('Introducir w='); a=input('a0='); AN=input('a(n)=','s'); an=inline(AN); BN=input('b(n)=','s'); bn=inline(BN); n=input('Ingrese el nmero de trminos='); sumafuncion1=0; sumafuncion2=0; for k=1:n sumafuncion1=sumafuncion1+an(k).*cos(k*w*x)+bn(k).*sin(k*w*x); sumafuncion2=sumafuncion2+an(k).*cos(k*w*t)+bn(k).*sin(k*w*t); end %COMO SIMBOLO EN "x" MUESTRA LOS VALORES DE LOS TERMINOS DE LA SERIE %=================================================================== Totalfuncion=sumafuncion1+a; disp(Totalfuncion) %COMO FUNCION DE "t" NO LO MUESTRA ES UNA MATRIZ DE VECTORES %=========================================================== Totalfuncion2=sumafuncion2+a; %GRFICOS DE LA FUNCION Y DE SU RESPECTICA SERIE SEGUN EL VALOR DE "n" %===================================================================== subplot(2,1,2), plot(t,Totalfuncion2,'b',t,funcion(t),'r') axis([-20 20 -12 12]) grid on title('*** FUNCION Y SERIE ***') %titulo xlabel('TIEMPO(ms)') %nombre del eje X ylabel('VOLTAJE(V)') %nombre del eje Y

subplot(2,2,2), plot(t,Totalfuncion2,'b') axis([-20 20 -12 12]) grid on title('*** SERIE ***') %titulo xlabel('TIEMPO(ms)') %nombre del eje X ylabel('VOLTAJE(V)') %nombre del eje Y subplot(2,2,1), plot(t,funcion(t),'r') axis([-20 20 -12 12]) grid on title('*** FUNCION ***') %titulo xlabel('TIEMPO(ms)') %nombre del eje X ylabel('VOLTAJE(V)') %nombre del eje Y

Pulso cuadrado

f=(t<-12.5).*(0)+(t>-12.5&t<-10).*(-5)+(t>-10&t<-7.5).*(5)+(t>7.5&t<7.5).*(0)+(t>7.5&t<10).*(-5)+(t>10&t<12.5).*(5)+(t>12.5).*(0) w=pi/10 b(n)=-5/(n*pi)*(cos(5*n*pi/4)+cos(3*n*pi/4)-2*cos(n*pi))

FUNCION A PLOTEAR ================= f(t)=(t<-12.5).*(0)+(t>-12.5&t<-10).*(-5)+(t>-10&t<-7.5).*(5)+(t>7.5&t<7.5).*(0)+(t>7.5&t<10).*(-5)+(t>10&t<12.5).*(5)+(t>12.5).*(0) SERIE DE FOURIER DE LA SERIE ============================ Introducir w=pi/10 a0=0 a(n)=0 b(n)=-5/(n*pi)*(cos(5*n*pi/4)+cos(3*n*pi/4)-2*cos(n*pi)) Ingrese el nmero de trminos=25

*** FUNCION *** 10 VOLTAJE(V) 5 0 -5 -10 -20 -10 VOLTAJE(V) 10 5 0 -5 -10

*** SERIE ***

0 10 20 -20 -10 0 10 TIEMPO(ms) TIEMPO(ms) *** FUNCION Y SERIE ***

20

10 VOLTAJE(V) 5 0 -5 -10 -20 -15 -10 -5 0 TIEMPO(ms) 5 10 15 20

Pulso triangular impar


f=(t<=-15).*(t+20)+(t>-15&t<=-5).*(-t-10)+(t>-5&t<=5).*(t)+ (t>5&t<=15).*(10-t)+(t>15).*(t-20) w=pi/10 b(n)=10/(n^2*pi^2)*(3*sin(n*pi/2)-sin(3*n*pi/2))

FUNCION A PLOTEAR ================= f(t)=(t<=-15).*(t+20)+(t>-15&t<=-5).*(-t-10)+(t>-5&t<=5).*(t)+ (t>5&t<=15).*(10-t)+(t>15).*(t-20) SERIE DE FOURIER DE LA SERIE ============================ Introducir w=pi/10 a0=0 a(n)=0 b(n)=10/(n^2*pi^2)*(3*sin(n*pi/2)-sin(3*n*pi/2)) Ingrese el nmero de trminos=5

*** FUNCION *** 10 VOLTAJE(V) 5 0 -5 -10 -20 -10 VOLTAJE(V) 10 5 0 -5 -10

*** SERIE ***

0 10 20 -20 -10 0 10 TIEMPO(ms) TIEMPO(ms) *** FUNCION Y SERIE ***

20

10 VOLTAJE(V) 5 0 -5 -10 -20 -15 -10 -5 0 TIEMPO(ms) 5 10 15 20

Pulso triangular par


f=(t<=-15).*(-t-15)+(t>-15&t<=-5).*(0)+(t>-5&t<=0).*(5+t)+ (t>0&t<=5).*(5-t)+(t>5&t<=15).*(0)+(t>15).*(t-15) w=pi/10 a0=5/4 a(n)=-20/(n^2*pi^2)*(cos(n*pi/2)-1)

FUNCION A PLOTEAR ================= f(t)=(t<=-15).*(-t-15)+(t>-15&t<=-5).*(0)+(t>-5&t<=0).*(5+t)+(t>0&t<=5).*(5-t) +(t>5&t<=15).*(0)+(t>15).*(t-15) SERIE DE FOURIER DE LA SERIE ============================ Introducir w=pi/10 a0=5/4 a(n)=-20/(n^2*pi^2)*(cos(n*pi/2)-1) b(n)=0 Ingrese el nmero de trminos=6

*** FUNCION *** 10 VOLTAJE(V) 5 0 -5 -10 -20 -10 VOLTAJE(V) 10 5 0 -5 -10

*** SERIE ***

0 10 20 -20 -10 0 10 TIEMPO(ms) TIEMPO(ms) *** FUNCION Y SERIE ***

20

10 VOLTAJE(V) 5 0 -5 -10 -20 -15 -10 -5 0 TIEMPO(ms) 5 10 15 20

Pulso diente de sierra


f=(t<-10).*(-t/2-10)+(t>-10&t<10).*(-t/2)+(t>10).*(10-t/2) w=pi/10 b(n)=10/(n*pi)*cos(n*pi)

FUNCION A PLOTEAR ================= f(t)=(t<-10).*(-t/2-10)+(t>-10&t<10).*(-t/2)+(t>10).*(10-t/2) SERIE DE FOURIER DE LA SERIE ============================ Introducir w=pi/10 a0=0 a(n)=0 b(n)=10/(n*pi)*cos(n*pi) Ingrese el nmero de trminos=10

*** FUNCION *** 10 VOLTAJE(V) 5 0 -5 -10 -20 -10 VOLTAJE(V) 10 5 0 -5 -10

*** SERIE ***

0 10 20 -20 -10 0 10 TIEMPO(ms) TIEMPO(ms) *** FUNCION Y SERIE ***

20

10 VOLTAJE(V) 5 0 -5 -10 -20 -15 -10 -5 0 TIEMPO(ms) 5 10 15 20

Pulso trapezoidal
f=(t<=-20).*(10)+(t>-20&t<=-15).*(-2*t-30)+(t>-15&t<=-10).*(2*t+30)+ (t>-10&t<=10).*(10)+(t>10&t<=15).*(-2*t+30)+(t>15&t<=20).*(2*t-30)+ (t>20).*(10) w=pi/15 a0=25/3 a(n)=60/(n^2*pi^2)*(cos(2*n*pi/3)-cos(n*pi))

FUNCION A PLOTEAR ================= f(t)=(t<=-20).*(10)+(t>-20&t<=-15).*(-2*t-30)+(t>-15&t<=-10).*(2*t+30)+(t>10&t<=10).*(10)+(t>10&t<=15).*(-2*t+30)+(t>15&t<=20).*(2*t-30)+(t>20).*(10) SERIE DE FOURIER DE LA SERIE ============================ Introducir w=pi/15 a0=25/3 a(n)=60/(n^2*pi^2)*(cos(2*n*pi/3)-cos(n*pi)) b(n)=0 Ingrese el nmero de trminos=8

*** FUNCION *** 10 VOLTAJE(V) 5 0 -5 -10 -20 -10 VOLTAJE(V) 10 5 0 -5 -10

*** SERIE ***

0 10 20 -20 -10 0 10 TIEMPO(ms) TIEMPO(ms) *** FUNCION Y SERIE ***

20

10 VOLTAJE(V) 5 0 -5 -10 -20 -15 -10 -5 0 TIEMPO(ms) 5 10 15 20