Вы находитесь на странице: 1из 43

Indice

Tema Pagina
Objetivo: 1
Justificacin: 1
Introduccin:
Mtodo de fourier: 2
Ventanas: 2
Rectangular: 2
Hamming: 2
Blackman: 3
Filtros: 4
Convolucin: 5
Diseo del filtro: 7
Lneas de cdigo 8
Funcin TDF 9
Funcin FFT 10
Funcin calculos_rechazabanda 11
Cdigo en lenguaje C 14
Pantallas 23
Cartula 23
Seal de entrada 23
Grafica del seno 24
TDF 24
FFT 27
Ventana rectangular 30

Ventana hamming 34
Ventana blackman 38
OBJETIVO:
El presente trabajo desarrolla el programa de un filtro digital FIR de orden impar, del tipo pasabanda
implementado con el software Turbo C++ versin 3.0.
El programa filtra una seal seno, con frecuencia, amplitud y frecuencia de muestreo a seleccionar, e incluye
los algoritmos de la Transformada Discreta de Fourier, as como la Transformada Rpida de Fourier. Los
diferentes parmetros del filtro digital se pueden proponer al correr el programa.
JUSTIFICACION:
Podemos darnos cuenta que la tendencia actual es la migracin de la tecnologa analgica a la digital, en
nuestro caso el filtrado digital ofrece varias ventajas con respecto a los filtrados analgicos:
El ancho de banda de un filtro digital esta limitado por la frecuencia de muestreo, mientras que en un
filtro analgico, este parmetro depende de las caractersticas de los componentes fsicos.
Se pueden implementar tanto en software como en hardware.
Al no contener componentes fsicos, no sufre desgaste ni limitaciones, propias de los elementos
elctricos.
INTRODUCCION:
Mtodo de Fourier
La respuesta en frecuencia de un filtro digital es peridica. Del anlisis de las series de Fourier sabemos que
cualquier funcin peridica puede expresarse como una combinacin lineal de exponentes complejas. Por lo
tanto la respuesta deseada de un filtro digital FIR puede ser expresada por las series de Fourier.
Ventanas
El truncamiento de las series de Fourier produce los filtros FIR con oscilaciones indeseables en la banda de
paso y en la banda de rechazo, las cuales resultan de la lenta convergencia de las series de Fourier. Para
reducir estas oscilaciones, una clase particular de funciones son usadas para modificar los coeficientes de
Fourier (respuesta al impulso), estas son llamadas ventanas El truncamiento de las series infinitas de Fourier
es equivalente a la multiplicacin de los coeficientes con la funcin ventana.
Rectangular
Es la ms ineficiente:
La atenuacin mxima de ventana rectangular es de 13 decibeles.
Hamming
La ecuacin para calcular los coeficientes de una ventana de Hamming es:

La atenuacin mxima de la ventana hamming es de 43 decibeles.

Blackman
Los coeficientes para la ventana blackman son:
Las ventanas de Blackman tienen lbulos centrales levemente ms anchos y menos
salida de la banda lateral que la longitud equivalente Hamming. La atenuacin
mxima de la ventana blackman es de 58 decibeles

Filtros
El procesamiento de seales digitales es fundamental en muchas reas de la
Informtica Industrial relacionadas con el control y la regulacin automtica.
Los filtros son usados en muchas aplicaciones, algunas de las cuales se citan a
continuacin:
o Filtro Paso Bajo. Deja pasar frecuencias bajas, y atena lasaltas.

o Filtro Paso Alto. Deja pasar frecuencias altas, y atena las bajas.
o Filtro Paso Banda. Deja pasar las frecuencias que se encuentren dentro de un intervalo.
o Filtro RechazaBanda. No deja pasar las frecuencias que se encuentren dentro de un intervalo.
Filtros recuperadores de seal:
Filtros basados en Funciones de Transferencia.
Filtros de convolucin. Normalmente usados para el control en lazo cerrado de una planta lineal e invariante
en el tiempo.
Filtros de Respuesta Finita al Impulso (Finite Impulse Response FIR) y de Respuesta Infinita al
Impulso (Infinite Impulse Response IIR), y otro tipo de filtros avanzados basados en transformada Z.
Filtros para encontrar patrones, de anlisis de la seal, etc.:
La Transformadas Rpidas de Fourier (Fast Fourier Transorm FFT). Usados para obtener el espectro
de la seal (la distribucin de energas en diferentes frecuencias), o como base para construir correladores y
filtros de convolucin optimizados
en velocidad.
La posibilidad de realizacin de filtros digitales ha sido un factor fundamental en el desplazamiento de los
clsicos filtros analgicos, que en lo relativo al control estn ya relegados a un segundo plano. Por otra parte,
los filtros digitales requieren de sistemas digitales complejos, y slo se justifica su uso en aquellas
aplicaciones en las que esto no sea un inconveniente.
La Convolucin.
La convolucin es una operacin matemtica que multiplica seales entre s.
Dadas las seales h(t) y g(t) continuas de tiempo continuo, su convolucin f(t)
estar expresada por:

Esta definicin es vlida para el tiempo continuo, sin embargo en el campo digital, se usa la siguiente:

Las dos expresiones asumen que h[n] = 0 para n < 0. En el caso de que esto no fuera as, el intervalo inferior
podra ponerse como 8.
En la siguiente figura se muestra una representacin grfica de la multiplicacin que realiza la convolucin:

Los trminos que aparecen vinculados con una fecha continua seran los que se multiplicasen. Si la flecha
aparece discontinua, significa que a partir de ah, alguno de los multiplicandos es 0, por lo que el resultado es
0.
En la figura, la funcin h[n] toma valores no todos 0 nicamente para el intervalo 0 = n < 10. A esta seal la
llamaremos Funcin de Transferencia (FdT), cuyo significado es la respuesta que ofrece un sistema ante una
entrada impulsiva de valor (energa) unidad.
El intervalo en el que g[n] toma valores no todos 0 lo consideraremos mucho ms grande. Esta es la seal a
filtrar, que proviene normalmente de la digitalizacin de alguna magnitud fsica.
DISEO DEL FILTRO:
En este apartado se mostrara el procedimiento de diseo del filtro basndose en el cdigo del programa. Por
tal motivo se numeraron las lneas del cdigo fuente para su mejor ilustracin.
A groso modo el programa realiza lo siguiente:
Pide los parmetros de la seal de entrada, frecuencia, amplitud y la frecuencia de muestreo.
Muestra la grafica de la seal de entrada.
Pide el nmero de muestras para el calculo de la TDF.
Aparecen los resultados de la TDF.
Muestra los resultados de la magnitud y fase de la TDF.
Grafica la magnitud de la TDF.
Grafica la fase de la TDF.
Pide el nmero de muestras para el calculo de la FFT
Muestra los resultados de la FFT
Grafica la magnitud de la FFT
Grafica la fase de la FFT
Pide los parmetros del filtro rechaza banda; fp1(frecuencia de paso 1), fs1(frecuencia de rechazo 1),
fs2(frecuencia de rechazo 2), fp2(frecuencia de paso 2), as(atenuacin en la banda de rechazo) y
ap(atenuacin en la banda de paso); tambin muestra la frecuencia de muestreo, el orden del filtro, la
5

frecuencia mnima y las frecuencias centrales.


Muestra los coeficientes del filtro, dependiendo de la ventana.
Muestra los coeficientes de la ventana correspondiente
Muestra los coeficientes ventaneados correspondientes.
Aparecen las muestras de la seal seno.
Muestra los coeficientes obtenidos de la convolucin
Grafica los coeficientes de la convolucin.
Grafica la respuesta en frecuencia del filtro.
LNEAS DE CDIGO:
17.
Se colocan las distintas libreras a usar
8.
Declaracin de la funcin modografico: Pasa al modo grafico
9.
Declaracin de la funcin fft: Calcula la FFT, y grafica su magnitud y fase.
10.
Declaracin de la funcin cartula: Cartula del programa
11.
Declaracin de la funcin tipodeventana: Eleccin del tipo de ventana; rectangular, hamming o blackman.
12
Declaracin de la funcin calculos_rechazabanda: Pide los parmetros del
filtro, y realiza los clculos del filtro, para obtener el orden, los coeficientes
del filtro, de la ventana y el ventaneo.
13
Funcin seno: Pide los parmetros de la seal de entrada y grafica la seal.
14
Funcin senal: Calcula las muestras para la convolucion.
15
Funcin tdf: Calcula la TDF, la fase y la magnitud, muestra las graficas de la magnitud y la fase.
16
6

Funcin respuesta_frecuencia: Calcula la respuesta en frecuencia del filtro.


17
Funcin convolucin: Multiplica los coeficientes ventaneados por las muestras de la seal de entrada.
1829.
Declaracin de la variables
3048
Funcin principal main, llama a las distintas funciones y cuando termina pregunta si se desea correr el
programa nuevamente.
4951.
Ruta de los BGI necesarios para correr los grficos en el programa
5269.
Cartula del programa
70109.
Funcin seno, pide los parmetros de la seal de entrada, frecuencia(frecsenal), amplitud(amplitud) y
frecuencia de muestreo(paso). Grafica la seal seno de entrada.
110187.
Funcin tdf, pide el numero de las muestras y calcula la TDF mediante la formula
Calcula la magnitud y la fase mediante.
188269
Funcin FFT
Nodo simple:
Nodo dual:
Parmetro W a la P:
Para obtener P.
convertir k a binario
desplazar l bits a la derecha
Invertir el resultado obtenido
convertir a decimal
270289
7

Funcion tipodeventana: Simplemente pide que se seleccione el tipo de ventana que se va a utilizar.
290396
Pide los siguientes parmetro: fp1.fr1,fr2,fp2,as y ap y realiza los siguientes clculos:
Parmetro D:
Deltas:
Delta f:
Orden del filtro:
Ord:
Calculo de los coeficientes por el mtodo de Fourier:
1 para/f/"fc1
H(ej2/T)= 0 para fc1< /f/ >fc2
1 para para fc1" /f/" F/2
Calculando tenemos:
hd(n)=
para n>0
de la formula anterior tenemos que el
Finalmente llegamos a:
Los coeficientes de las ventanas seran:
Para la ventana rectangular:
Para la ventana hamming:
Para la ventana blackman:
El ventaneo resultara de:
397407.
Muestrea la seal seno de entrada
408436
Convoluciona la ventaneado con las muestras de la seal de entrada.

437473
Respuesta en frecuencia del filtro:
#include<math.h>
#include<iostream.h>
#include<complex.h>
#include<conio.h>
#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
void modografico(void); //*****Entra al modo grafico***
void fft(void); //***Transformada Rapida de Fourier***
void caratula(void); //***Caratula***
void tipodeventana(void); //***Seleccion de la ventana***
void calculos_rechazabanda(void); //***Calculos para el filtro***
void seno(void); //***seal de entrada***
void senal(void);
void tdf(void); //***Transfomada Discreta de Fourier***
void respuesta_frecuencia(void);
void convolucion(void);
int num,a2,controlador, modo;
int n1f,q,n,nada,k,l,hf,salto,j,dfft[40][40],k1,contador,bfft[40][40],contador2[40],e,r;
float zz[40],z[40],temp,max,x1f,y1f,PI=3.141592654;
char flechafft[5], datofft[10],dato2fft[10];
double w;
complex x[40][40],hh,wp,xx[40];
float interval=0,yseno,xseno,x1,y1, fs1,fs2,fp1,fp2,f,ap,as,hPb[64],h[64],aw,
df1,df2,d,fc1,fc2,fmin,ord,n1,valor,coef[64],i,yy[312],sum[312],M[312],
signal[64],cont,a,t,ff;
int u,c,n2;
double total;
char flecha[10],datof[10],cs,graffrecuencia[20],grafamplitud[20];
void main(void){ //************menu principal*************
char cd;
caratula();
do{
seno();
tdf();
fft();
tipodeventana();
calculos_rechazabanda();
senal();
convolucion();
respuesta_frecuencia();
textbackground(4);
gotoxy(25,5);cprintf(" Desea realizar el calculo nuevamente ");
gotoxy(25,6);cprintf(" presione 's' ");
cd=getche();
}
while(cd=='s'||cd=='S');
}
9

void modografico(void){
controlador=DETECT;
initgraph(&controlador,&modo,"\\tc\\bgi");}
void caratula(void){ //**********funcion caratula*************
modografico();
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,3);
setcolor(4); outtextxy(320,90,"FILTRO RECHAZA BANDA");
gotoxy(20,11);printf("\tIntegrantes:\n "
"\n\t\t\t\t Aldana Cruz Ruben\n"
"\n"
"\t\t\t\t Oliva Ramirez Ariel\n"
"\n");
gotoxy(26,20);
setcolor(2); rectangle(190,300,475,340);
rectangle(187,297,478,343);
rectangle(10,10,629,469);
rectangle(15,15,624,464);
setcolor(4); printf("Presione una tecla para continuar");
getche();
closegraph();}
void seno(void){
textbackground(0); clrscr(); textbackground(1);
gotoxy(25,7);cprintf(" ");
gotoxy(25,8);cprintf(" LA SEAL A FILTRAR ES SENOIDAL ");
gotoxy(25,9);cprintf(" Cual es el valor de la frecuencia?: ");
scanf("%f",&ff);
gotoxy(25,10);cprintf(" Cual es valor de la amplitud?: ");
scanf("%f",&a);
salto:
gotoxy(25,11);cprintf(" Cuanto vale la frecuencia de muestreo ");
scanf("%f",&interval);
if(interval<2*ff){
printf("\n\n\t\t\t\tNo es mayor que 2*f");
goto salto;}
interval=1/interval;
gotoxy(25,12);cprintf(" ");
textbackground(4);
gotoxy(30,14);cprintf(" Enter Para Continuar ");getche();
modografico();
line(50,240,640,240);
line(50,0,50,480);
setcolor(2); settextstyle(DEFAULT_FONT,1,0);
sprintf(grafamplitud,"Amplitud = %.0f [u]",a);
outtextxy(25,10,grafamplitud);
settextstyle(DEFAULT_FONT,0,0);
setcolor(2);
sprintf(graffrecuencia,"Frecuencia = %.0f [hz]",ff);
outtextxy(450,462,graffrecuencia);
setcolor(14);outtextxy(320,1,"Grafica del seno");
setcolor(15);
for(u=90;u<=545;u+=91){
10

line(51+u,235,51+u,245);}
for(u=45;u<=225;u+=45){
line(45,240+u,55,240+u);
line(45,240u,55,240u);}
outtextxy(36,237,"0");
for(xseno=0;xseno<=19*PI; xseno=xseno+0.009){
yseno=160*sin(xseno);
putpixel(50+(xseno*29),240yseno,4);}
getche();}
void tdf(void){ //*********Transformada Discreta de Fourier******
int u1/*,num*/,muestra,i1,magnitud2[32];
float intervalo,t1,indice,yi[50],mag[32],fas[32],k1,x1,y1;
char dato[10],datof[10],numname[80],flecha[2], vertical[2],horizontal[2];
complex y_total=complex(0,0),z=complex(0,0),muestra2[32],
magnitud[32],fase[32];
for(i1=1; i1<=20; i1++){muestra2[i1]=complex(0,0);
magnitud[i1]=complex(0,0);
magnitud2[i1]=0;
fase[i1]=complex(0,0);
yi[i1]=0;}
float pi=3.1415926535897932384626433832795;
modografico();
restorecrtmode();
textbackground(0); clrscr(); textbackground(1);
gotoxy(20,7);cprintf(" ");
gotoxy(20,8);cprintf(" TRANSFORMADA DISCRETA DE FOURIER ");
gotoxy(20,9);cprintf(" %.0f*sen(2*%.0f*pi*t) ",a,ff);
gotoxy(20,10);cprintf(" ");
textbackground(4);
gotoxy(20,12);cprintf(" Introducir el numero de muestras: ");
scanf("%d",&num);
int increm=0;
for(t1=0; t1<=interval*(num1)+interval; t1=t1+interval){
yi[increm]=(a*sin((2*ff*pi*t1)*PI/180)); //******calculo de muestras*****
printf("\t\t\t h%.0d(%.4f) = %.0f*sin(2*%.0f*pi*%.4f) = %.4f\n",increm,t1,a,ff,t1,yi[increm]);
increm++;}
getche();
textbackground(0); clrscr(); textbackground(1);
gotoxy(20,2);cprintf(" ");
gotoxy(20,3);cprintf(" Transformada Discreta de Fourier ");
gotoxy(20,4);cprintf(" \n");
printf("\n");
textbackground(4);
for(muestra=0; muestra<=(num1); muestra++){ //*****TDF*****
y_total=complex(0,0);
for(k1=0; k1<=(num1); k1++){
z=yi[k1]*exp(2*complex(0,1)*pi*k1*muestra/num);
y_total=y_total+z;}
muestra2[muestra]=y_total;
printf("\t\t\ty(%d)=",muestra);
cout <<"" <<y_total<<"\n";}
getche();
11

textbackground(0); clrscr(); textbackground(1);


gotoxy(20,2);cprintf(" ");
gotoxy(20,3);cprintf(" Magnitud y fase de la TDF ");
gotoxy(20,4);cprintf(" \n");
printf("\n");
for(muestra=0; muestra<=(num1); muestra++){ //***magnitud y fase***
y_total=complex(0,0);
for(k1=0; k1<=(num1); k1++){
z=yi[k1]*exp(2*complex(0,1)*pi*k1*muestra/num);
y_total=y_total+z;}
cout<<"\t\tmagnitud: " <<abs(y_total)<< "";
magnitud[muestra]=abs(y_total);
cout<<"\t fase: " <<(arg(y_total))*180/PI<< "\n";
fase[muestra]=arg(y_total);}
getche();
setgraphmode(getgraphmode()); //******grafica de la magnitud****
setcolor(15);
line(50,375,640,375);
line(50,0,50,480);
setcolor(2);
settextstyle(DEFAULT_FONT,1,0);
outtextxy(25,10,"Magnitud");
settextstyle(DEFAULT_FONT,0,0);
outtextxy(555,395,"Muestras");
settextstyle(DEFAULT_FONT,0,1);
outtextxy(118,20,"Magnitud de la transformada discreta de fourier");
setcolor(15);
for(u1=25;u1<=600;u1+=25){
line(50+u1,370,50+u1,380);}
for(u1=25;u1<=480;u1+=25){
line(45,u1,55,u1);}
outtextxy(35,374,"0");
for(muestra=0;muestra<=(num1); muestra++){
mag[muestra]=real(magnitud[muestra]);
setcolor(4);
line(75+muestra*25,375,75+muestra*25,37525*mag[muestra]);
x1=75+muestra*25;
y1=37525*mag[muestra];
setcolor(4); sprintf(flecha,"_"); //*****flechas***
outtextxy(x13,y12, flecha);
setcolor(2); sprintf(dato,"%.2f",mag[muestra]);
outtextxy(x13,y110,dato);}
getche();
cleardevice();
setcolor(15); //*********grafica de la fase
line(50,240,640,240);
line(50,0,50,480);
setcolor(2);
settextstyle(DEFAULT_FONT,1,0);
outtextxy(25,10,"Fase");
settextstyle(DEFAULT_FONT,0,0);
outtextxy(555,255,"Muestras");
12

settextstyle(DEFAULT_FONT,0,1);
outtextxy(118,20,"Fase de la transformada discreta de fourier");
setcolor(15);
for(u1=25;u1<=600;u1+=25){
line(50+u1,235,50+u1,245);}
for(u1=15;u1<=480;u1+=25){
line(45,u1,55,u1);}
outtextxy(35,244,"0");
for(muestra=0;muestra<=(num1); muestra++){
fas[muestra]=real((fase[muestra])*180/PI);
setcolor(4);
line(50+muestra*25,240,50+muestra*25,2401*fas[muestra]);
x1=50+muestra*25;
y1=2401*fas[muestra];
if(y1<=240){
sprintf(flecha,"_"); //*****flechas superiores******
outtextxy(x13,y12, flecha);
setcolor(2);sprintf(datof,"%.2f",fas[muestra]);
outtextxy(x13,y110,datof);}
if(y1>240){
sprintf(flecha,"_"); //*****flechas inferiores******
outtextxy(x13,y12, flecha);
setcolor(2); sprintf(datof,"%.2f",fas[muestra]);
outtextxy(x13,y1+10,datof);}}
getche();
closegraph();}
void fft(void){
a0:
textbackground(0);clrscr();textbackground(1);
gotoxy(22,6);cprintf(" TRANSFORMADA RAPIDA DE FOURIER ");
gotoxy(22,7);cprintf(" Cuantas muestras son? ");
scanf("%d",&n);
if((n<=0)||(n>32)||(n!=2)&&(n!=4)&&(n!=8)&&(n!=16)&&(n!=32)) goto a0;
textbackground(4);
gotoxy(22,25);cprintf(" Enter Para Continuar ");getche();
if(n==2) nada=1;
if(n==4) nada=2;
if(n==8) nada=3;
if(n==16) nada=4;
if(n==32) nada=5;
textbackground(0);clrscr();textbackground(1);
int increm=0;
float h,t1;
textbackground(1);
gotoxy(24,1);cprintf(" Muestras de la seal ");
printf("\n");
for(t1=0; t1<=interval*(n1)+interval; t1=t1+interval){
x[0][increm]=a*sin((2*ff*PI*t1)*PI/180); //******calculo de muestras*****
printf("\t\t\t h%.0d(%.4f) = %.4f\n",increm,t1,x[0][increm]);
increm++;
}
textbackground(4);
13

gotoxy(26,25);cprintf(" Enter Para Continuar ");getche();


for(k=0;k<=n1;k++){
a2=k;
for(l=0;l<=nada1;l++){
dfft[k][l]=a2 % 2;
a2=a2/2;}}
hf=nada1;
for(l=1;l<=nada;l++){
salto=n/pow(2,l);
j=nadal;
k1=0;
for(k=0;k+salto<=n1;k++){
if(k1==salto){
k1=0;
k=k+salto;}
for(a2=0;a2<=nada1;a2++){
contador=dfft[k][hfa2+j]*pow(2,a2);
bfft[l][k]=bfft[l][k]+contador;
w=(2*PI*bfft[l][k])/n;
hh=complex(0,w);
wp=exp(hh);}
x[l][k]=x[l1][k]+wp*x[l1][k+salto];
x[l][k+salto]=x[l1][k]wp*x[l1][k+salto];
k1++;}}
textbackground(0);clrscr();textbackground(1);
for(k=0;k<=n1;k++){
for(a2=0;a2<=nada1;a2++){
contador=dfft[k][hfa2]*pow(2,a2);
contador2[k]=contador2[k]+contador;}}
for(k=0;k<=n1;k++){
xx[k]=x[nada][contador2[k]];}
gotoxy(20,1);cprintf(" FFT(Transformada Rapida de Fourier ");
for(k=0;k<=n1;k++){
gotoxy(29,k+3);cout<<"x["<<k<<"]="<<xx[k];}
textbackground(4);
gotoxy(20,25);cprintf(" Enter Para Continuar ");getche();
modografico();
line(60,0,60,480); line(60,240,640,240); //***grafica de la magnitud**
settextstyle(DEFAULT_FONT,1,1);
setcolor(2);outtextxy(25,5,"|X(n)|");
settextstyle(DEFAULT_FONT,0,1);
outtextxy(570,250,"muestras");
outtextxy(290,10," Magnitud de la funcion FFT");
for(n1f=0;n1f<=n;n1f++){
z[n1f]=abs(xx[n1f]);
for(q=0;q<=n1;q++){
zz[q]=z[q];}
for(r=0;r<=n1;r++)
for(e=r+1;e<=n1;e++)
if(zz[r]<zz[e]){
temp=zz[r];
zz[r]=zz[e];
14

zz[e]=temp;}
max=zz[0];
setcolor(4);
line(60+(n1f*(580/n)),240,60+(n1f*(580/n)),240(z[n1f]*(220/max)));
x1f=(60+(n1f*(580/n)));
y1f=240(z[n1f]*(220/max));
setcolor(4); sprintf(flechafft,"_"); //*****flechas***
outtextxy(x1f3,y1f2, flechafft);
setcolor(2); sprintf(datofft,"%.2f",z[n1f]);
outtextxy(x1f3,y1f10,datofft);}
getche();
cleardevice(); //****grafica de la fase*****
settextstyle(DEFAULT_FONT,1,1);
setcolor(2);outtextxy(25,5,"Fase");
settextstyle(DEFAULT_FONT,0,1);
outtextxy(570,250,"muestras");
outtextxy(290,10," Fase de la funcion FFT");
setcolor(15);
line(60,0,60,480);
line(60,240,640,240);
for(n1f=0;n1f<=n1;n1f++){
z[n1f]=((arg(xx[n1f]))*180)/PI;
setcolor(4);
line(60+(n1f*(580/n)),240,60+(n1f*(580/n)),240(z[n1f]));
x1f=(60+(n1f*(580/n)));
y1f=(240(z[n1f]*1));
if(y1f<=240){
setcolor(4);sprintf(flechafft,"_"); //*****flechas superiores******
outtextxy(x1f3,y1f2, flechafft);
setcolor(2);sprintf(datofft,"%.2f",z[n1f]);
outtextxy(x1f3,y1f10,datofft); }
if(y1f>240){
setcolor(4);sprintf(flechafft,"_"); //*****flechas inferiores******
outtextxy(x1f3,y1f2, flechafft);
setcolor(2); sprintf(dato2fft,"%.2f",z[n1f]);
outtextxy(x1f3,y1f+10,dato2fft);} }
getche();
closegraph();}
void tipodeventana(void){
textbackground(0); clrscr(); textbackground(1);
gotoxy(32,8);cprintf(" ");
gotoxy(32,9);cprintf(" TIPO DE VENTANA ");
gotoxy(32,10);cprintf(" a). Ventana rectangular ");
gotoxy(32,11);cprintf(" b). Ventana hamming ");
gotoxy(32,12);cprintf(" c). Ventana blackman ");
gotoxy(32,13);cprintf(" ");
gotoxy(32,14);cprintf(" ");
textbackground(4);
primero:
gotoxy(32,17);cprintf(" Eliga la opcion ");
cs=getche();
switch(cs){
15

case 'a':break;
case 'b':break;
case 'c':break;
case 's'||'S': exit(10);
default:;}
}
void calculos_rechazabanda(void){
textbackground(0); clrscr(); textbackground(1);
gotoxy(25,4);cprintf(" ");
gotoxy(25,5);cprintf(" PARAMETROS DEL FILTRO ");
gotoxy(25,6);cprintf(" Frecuencia de paso, 'Fp1' [Hz]: ");
scanf("%f",&fp1);
etiqueta1:
gotoxy(25,7);cprintf(" Frecuencia de rechazo, 'Fs1'>Fp1 [Hz]: ");
scanf("%f",&fs1);
if (fs1<=fp1){ gotoxy(30,7);delline();
goto etiqueta1;}
etiqueta2:
gotoxy(25,8);cprintf(" Frecuencia de rechazo, 'Fs2'>Fs1 [Hz]: ");
scanf("%f",&fs2);
if (fs2<=fs1){ gotoxy(30,8);delline();
goto etiqueta2;}
etiqueta3:
gotoxy(25,9);cprintf(" Frecuencia de paso, 'Fp2'>Fs2 [Hz]: ");
scanf("%f",&fp2);
if (fp2<=fs2){ gotoxy(25,9);delline();
goto etiqueta3;}
gotoxy(25,10);cprintf(" ");
f = 2*fp2;
gotoxy(25,12);printf(" Frecuencia de muestreo ");
gotoxy(25,14);printf(" F = (2*fp2) = %.0f ",f);
gotoxy(24,15);cprintf(" Atenuacion, banda de paso, Ap [dB]: ");
scanf("%f",&ap);
etiqueta4:
gotoxy(25,16);cprintf(" Atenuacion, banda de rechazo, As [dB]: ");
scanf("%f",&as);
if((cs=='a')&&(as>13)){gotoxy(23,18);
printf(" La ventana rectangular atenua maximo 13 dB ");
gotoxy(25,16);delline();
goto etiqueta4;}
if((cs=='b')&&(as>43)){gotoxy(23,18);
printf(" La ventana hamming atenua maximo 43 dB");
gotoxy(25,16);delline();
goto etiqueta4;}
if((cs=='c')&&(as>58)){gotoxy(23,18);
printf(" La ventana blackman atenua maximo 58 dB");
gotoxy(25,16);delline();
goto etiqueta4;}
if(as<=21){ //**** parametro D*****
d=0.92222;}
if(as>21){
d=(as7.95)/14.36;}
16

printf("\n\t\t\t Valor del parametro D=%.4f",d);


df1=fs1fp1; //****deltas****
df2=fp2fs2;
if (df1<=df2) fmin=df1; //*****asignacion de la delta menor****
if (df1>df2) fmin=df2;
fc1=fp1+((fs1fp1)/2); //*****frecuencias centrales
fc2=fs2+((fp2fs2)/2);
printf("\n\t\t\t Valor de fmin=%.0f",fmin);
ord=((f*d)/fmin)+1; //*******orden del filtro******
n=ceil(ord);
c = n % 2;
switch(c){
case 0:ord=n+1; //********orden par*******
textbackground(1);
gotoxy(27,20);cprintf(" Orden del filtro: N = %.0f ",ord);
printf("\n\tValor de la frecuencias centrales fc1=%.0f [hz], fc2=%.0f [hz]",fc1,fc2);
gotoxy(25,25);cprintf(" Enter para continuar ");getche();break;
case 1:ord=n; //*********orden impar*****
gotoxy(27,20);cprintf(" Orden del filtro: N = %.0f ",ord);
printf("\n\n\t Valor de la frecuencias centrales fc1=%.0f [hz], fc2=%.0f [hz]",fc1,fc2);
gotoxy(25,25);cprintf(" Enter para continuar ");getche();break;}
textbackground(0); clrscr(); textbackground(1);
gotoxy(30,1);cprintf(" Coeficientes ");
hPb[0]=((2/f)*(fc1fc2))+1;
gotoxy(30,3);printf("Hcoef[0] = %f",hPb[0]);
n2=1;
for(n1=1;n1<=((ord1)/2);n1++){ //**metodo de fourier*****
hPb[n1]=(1/(n1*PI))*((sin((2*PI*n1*fc1)/f))(sin((2*PI*n1*fc2)/f)));
gotoxy(30,3+n2);printf("Hcoef[%.0f] = %f",n1,hPb[n1]);
n2++;}
textbackground(4);
gotoxy(25,25);cprintf(" Enter para continuar ");getche();
if(cs=='a'){ //*******ventana rectangulara*******
textbackground(0); clrscr(); textbackground(1);
gotoxy(21,1);cprintf(" Coeficientes de la ventana rectangular ");
n2=3;
for(n1=0;n1<=(ord1)/2;n1++){
coef[n1]=1;
gotoxy(31,n2);printf("rectangular[%.0f] = %f",n1,coef[n1]);
n2++;}
textbackground(4);
gotoxy(25,25);cprintf(" Enter para continuar ");getche();}
if(cs=='b'){ //******ventana hamming*****/
textbackground(0); clrscr(); textbackground(1);
gotoxy(23,1);cprintf(" Coeficientes de la ventana hamming ");
n2=3;
for(n1=0;n1<=(ord1)/2;n1++){
coef[n1]=0.54+(0.46*cos((2*PI*n1)/(ord1)));
gotoxy(30,n2);printf("hamming[%.0f] = %f",n1,coef[n1]);
n2++;}
textbackground(4);
gotoxy(25,25);cprintf(" Enter para continuar ");getche();}
17

if(cs=='c'){ //********ventana blackman*******


textbackground(0); clrscr(); textbackground(1);
gotoxy(22,1);cprintf(" Coeficientes de la ventana blackman ");
n2=3;
for(n1=0;n1<=(ord1)/2;n1++){
coef[n1]=0.42+(0.5*cos((2*PI*n1)/(ord1)))+(0.08*cos((4*PI*n1)/(ord1)));
gotoxy(31,n2);printf("blackman[%.0f] = %f",n1,coef[n1]);
n2++;}
textbackground(4);
gotoxy(25,25);cprintf(" Enter para terminar ");getche();}
textbackground(0); clrscr(); textbackground(1); //**** ventaneo****/
gotoxy(28,1);cprintf(" Coeficientes ventaneados ");
n2=3;
for(n1=0;n1<=(ord1)/2;n1++){
h[n1]=hPb[n1]*coef[n1];
gotoxy(31,n2);printf("HVent[%.0f] = %f",n1,h[n1]);
n2++;}
textbackground(4);
gotoxy(25,25);cprintf(" Enter para continuar ");getche();}
void senal(void){
float k;
int increm=0;
textbackground(0);clrscr();textbackground(1);
for(k=0;k<interval*(num1);k=k+interval){
signal[increm] = a*sin((2*ff*PI*k)*PI/180);
printf("\n muestras de la seal seno h%d=%f:",increm,signal[increm]);
increm++;}
getche();}
void convolucion(void){
textbackground(0); clrscr(); textbackground(1);
gotoxy(25,1);cprintf(" Resultados en el dominio del tiempo ");
for(k=0;k<ord/2;k++){
for(i=0;i<ord/2;i++){
if((ki)<0)
signal[ki]=0;
yy[k] = h[i]*signal[ki];
sum[k]=sum[k]+yy[k];}
gotoxy(35,k+3);printf("htiemp[%.0d] = %.2f",k,sum[k]);}
textbackground(4);
gotoxy(25,25);cprintf(" Enter para continuar ");getche();
modografico();
line(60,0,60,480); line(60,240,640,240);
for(q=60;q<=640;q=q+20){
line(q,235,q,245);}
setcolor(2); outtextxy(605,250,"k"); outtextxy(30,5,"Y(k)");
settextjustify(CENTER_TEXT,RIGHT_TEXT);
setcolor(2);
outtextxy(320,1,"Senal seno el domino del tiempo");
outtextxy(46,244,"0");
for(k=0;k<ord/2;k++){
setcolor(4); putpixel(60+(k*20),240(sum[k]*40),2);
line(60+(k*20),240,60+(k*20),240(sum[k]*40));
18

x1=60+(k*20);
y1=240(sum[k]*40);
if(y1<=240){
sprintf(flecha,"_");
outtextxy(x1,y12, flecha);
setcolor(2); sprintf(datof,"%.2f",sum[k]);
outtextxy(x13,y112,datof);}
if(y1>240){
sprintf(flecha,"_");
outtextxy(x1,y12, flecha);
setcolor(2); sprintf(datof,"%.2f",sum[k]);
outtextxy(x13,y1+12,datof);}}
getche();
closegraph();}
void respuesta_frecuencia(void){
n2=0;
clrscr();
for(i=0;i<=0.5;i+=0.00125){
valor=0;
for(k=1;k<=(ord1)/2;k++){
total=h[k]*cos(2*PI*i*k);
valor=valor+total;}
M[n2]=20*log10(fabs(h[0]+(2*valor))); //***absoluto
n2++;}
modografico();
rectangle(50,50,590,430);
setcolor(14);
setlinestyle(DOTTED_LINE, 1, 2);
outtextxy(36,47,"0"); line(50,145,590,145);
outtextxy(20,142,"20");line(50,240,590,240);
outtextxy(20,237,"40");line(50,335,590,335);
outtextxy(20,332,"60");
outtextxy(20,427,"80");line(158,50,158,430);
outtextxy(147,35,"0.1");line(266,50,266,430);
outtextxy(255,35,"0.2");line(374,50,374,430);
outtextxy(363,35,"0.3");line(482,50,482,430);
outtextxy(471,35,"0.4");
outtextxy(579,35,"0.5");
settextjustify(CENTER_TEXT,CENTER_TEXT);
settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
setcolor(2);
outtextxy(320,450," Frecuencia ");
outtextxy(50,30,"dB");
settextjustify(CENTER_TEXT,LEFT_TEXT);
settextjustify(CENTER_TEXT,RIGHT_TEXT);
setcolor(4);outtextxy(320,1,"Respuesta en frecuencia del filtro");
for(n2=0;n2<=400;n2=n2+1){
aw=M[n2]*4.7;
circle(50+(n2*1.35),50aw,2);
setcolor(2); putpixel(50+(n2*1.35),50aw,4);}
getche();
closegraph();
19

}
VENTANAS
Primera: Cartula

Segunda: Datos de la seal de entrada


LA SEAL A FILTRAR ES SENOIDAL
Cual es el valor de la frecuencia?: 300
Cual es valor de la amplitud?: 5
Cuanto vale la frecuencia de muestreo? 1000
Presione una tecla para continuar
Tercera ventana: Grafica de la seal de entrada

20

Cuarta ventana: Numero de muestras


TRANSFORMADA DISCRETA DE FOURIER
5*sen(2*300*pi*t)
Introducir el numero de muestras: 16
h(0.0000) = 5*sin(2*300*pi*0.0000) = 0.0000
h1(0.0010) = 5*sin(2*300*pi*0.0010) = 0.1645
h2(0.0020) = 5*sin(2*300*pi*0.0020) = 0.3287
h3(0.0030) = 5*sin(2*300*pi*0.0030) = 0.4927
h4(0.0040) = 5*sin(2*300*pi*0.0040) = 0.6561
h5(0.0050) = 5*sin(2*300*pi*0.0050) = 0.8188
h6(0.0060) = 5*sin(2*300*pi*0.0060) = 0.9806
h7(0.0070) = 5*sin(2*300*pi*0.0070) = 1.1413
h8(0.0080) = 5*sin(2*300*pi*0.0080) = 1.3008

21

h9(0.0090) = 5*sin(2*300*pi*0.0090) = 1.4589


h10(0.0100) = 5*sin(2*300*pi*0.0100) = 1.6154
h11(0.0110) = 5*sin(2*300*pi*0.0110) = 1.7702
h12(0.0120) = 5*sin(2*300*pi*0.0120) = 1.9230
h13(0.0130) = 5*sin(2*300*pi*0.0130) = 2.0738
h14(0.0140) = 5*sin(2*300*pi*0.0140) = 2.2223
h15(0.0150) = 5*sin(2*300*pi*0.0150) = 2.3685
h16(0.0160) = 5*sin(2*300*pi*0.0160) = 2.5120
Presione una tecla para continuar
Quinta ventana: Resultados de la TDF
Transformada Discreta de Fourier
y(0)=(19.315602, 0)
y(1)=(1.403297, 6.359619)
y(2)=(1.294089, 3.0379)
y(3)=(1.274061, 1.881408)
y(4)=(1.267151, 1.256695)
y(5)=(1.264068, 0.839572)
y(6)=(1.262537, 0.520424)
y(7)=(1.261802, 0.249909)
y(8)=(1.261582, 1.652212e06)
y(9)=(1.261803, 0.249905)
y(10)=(1.262538, 0.520421)
y(11)=(1.26407, 0.839568)
y(12)=(1.267155, 1.256692)
y(13)=(1.274067, 1.881405)
y(14)=(1.294098, 3.037898)

22

y(15)=(1.403314, 6.359621)
Presione una tecla para continuar
Sexta ventana: Magnitud y fase de la TDF
Magnitud y fase de la TDF
magnitud: 19.315602 fase: 0
magnitud: 6.512603 fase: 102.443333
magnitud: 3.302045 fase: 113.073108
magnitud: 2.272208 fase: 124.105268
magnitud: 1.784644 fase: 135.237361
magnitud: 1.517481 fase: 146.408577
magnitud: 1.365592 fase: 157.598274
magnitud: 1.286312 fase: 168.797147
magnitud: 1.261582 fase: 179.99992
magnitud: 1.286312 fase: 168.797297
magnitud: 1.365592 fase: 157.598424
magnitud: 1.517481 fase: 146.408727
magnitud: 1.784645 fase: 135.237511
magnitud: 2.272208 fase: 124.105418
magnitud: 3.302047 fase: 113.073258
magnitud: 6.512609 fase: 102.443483
Presione una tecla para continuar
Sptima ventana:

23

Octava ventana:

24

Ventana nueve:
TRANSFORMADA RAPIDA DE FOURIER
Cuantas muestras son? 16
Presione una tecla para Continuar
Ventana diez:
Muestras de la seal
h(0.0000) = 0.0000
h1(0.0010) = 0.1645
h2(0.0020) = 0.3287
h3(0.0030) = 0.4927
h4(0.0040) = 0.6561
h5(0.0050) = 0.8188
h6(0.0060) = 0.9806

25

h7(0.0070) = 1.1413
h8(0.0080) = 1.3008
h9(0.0090) = 1.4589
h10(0.0100) = 1.6154
h11(0.0110) = 1.7702
h12(0.0120) = 1.9230
h13(0.0130) = 2.0738
h14(0.0140) = 2.2223
h15(0.0150) = 2.3685
Presione una tecla para Continuar
Ventana once:
FFT(Transformada Rapida de Fourier
x[0]=(19.315602, 0)
x[1]=(1.403297, 6.359619)
x[2]=(1.29409, 3.0379)
x[3]=(1.274062, 1.881408)
x[4]=(1.267152, 1.256695)
x[5]=(1.264068, 0.839571)
x[6]=(1.262537, 0.520423)
x[7]=(1.261802, 0.249907)
x[8]=(1.261582, 0)
x[9]=(1.261802, 0.249907)
x[10]=(1.262537, 0.520423)
x[11]=(1.264068, 0.83957)
x[12]=(1.267152, 1.256695)
x[13]=(1.274063, 1.881408)

26

x[14]=(1.294091, 3.0379)
x[15]=(1.403298, 6.35962)
Presione una tecla para Continuar
Ventana doce:

Ventana trece:

27

Ventana catorce:
TIPO DE VENTANA
a). Ventana rectangular
b). Ventana hamming
c). Ventana blackman
Eliga la opcion
Ventana quince a), Ventana rectangular
PARAMETROS DEL FILTRO
Frecuencia de paso, 'Fp1' [Hz]: 100
Frecuencia de rechazo, 'Fs1'>Fp1 [Hz]: 1000
Frecuencia de rechazo, 'Fs2'>Fs1 [Hz]: 4000
Frecuencia de paso, 'Fp2'>Fs2 [Hz]: 8000
Frecuencia de muestreo

28

F = 16000
Atenuacion, banda de paso, Ap [dB]: 3
Atenuacion, banda de rechazo, As [dB]: 13
Valor del parametro D=0.9222
Valor de fmin=900
Orden del filtro: N = 19
Valor de la frecuencias centrales fc1=550 [hz], fc2=6000 [hz]
Presione una tecla para continuar
Ventana diecisis a):
Coeficientes
Hcoef[0] = 0.318750
Hcoef[1] = 0.156862
Hcoef[2] = 0.225787
Hcoef[3] = 0.010987
Hcoef[4] = 0.060511
Hcoef[5] = 0.101161
Hcoef[6] = 0.001992
Hcoef[7] = 0.077548
Hcoef[8] = 0.039299
Hcoef[9] = 0.007926
Presione una tecla para continuar
Ventana diecisiete a):
Coeficientes de la ventana rectangular
rectangular[0] = 1.000000
rectangular[1] = 1.000000
rectangular[2] = 1.000000

29

rectangular[3] = 1.000000
rectangular[4] = 1.000000
rectangular[5] = 1.000000
rectangular[6] = 1.000000
rectangular[7] = 1.000000
rectangular[8] = 1.000000
rectangular[9] = 1.000000
Presione una tecla para continuar
Ventana dieciocho a):
Coeficientes ventaneados
HVent[0] = 0.318750
HVent[1] = 0.156862
HVent[2] = 0.225787
HVent[3] = 0.010987
HVent[4] = 0.060511
HVent[5] = 0.101161
HVent[6] = 0.001992
HVent[7] = 0.077548
HVent[8] = 0.039299
HVent[9] = 0.007926
Presione una tecla para continuar
Ventana diecinueve a):
Muestras de la seal seno
muestra h0=0.000000
muestra h1=0.164464
muestra h2=0.328750

30

muestra h3=0.492679
muestra h4=0.656076
muestra h5=0.818763
muestra h6=0.980564
muestra h7=1.141303
muestra h8=1.300808
muestra h9=1.458904
muestra h10=1.615422
muestra h11=1.770191
muestra h12=1.923045
muestra h13=2.073818
muestra h14=2.222346
Presione una tecla para continuar
Ventana veinte a):
Resultados en el dominio del tiempo
htiemp[] = 0.00
htiemp[1] = 0.05
htiemp[2] = 0.08
htiemp[3] = 0.14
htiemp[4] = 0.20
htiemp[5] = 0.28
htiemp[6] = 0.36
htiemp[7] = 0.45
htiemp[8] = 0.55
htiemp[9] = 0.65
Presione una tecla para continuar

31

Ventana veintiuno a):

Ventana veintids a):

32

Para la ventana hamming:

PARAMETROS DEL FILTRO


Frecuencia de paso, 'Fp1' [Hz]: 100
Frecuencia de rechazo, 'Fs1'>Fp1 [Hz]: 1000
Frecuencia de rechazo, 'Fs2'>Fs1 [Hz]: 4000
Frecuencia de paso, 'Fp2'>Fs2 [Hz]: 8000
Frecuencia de muestreo
F = 16000
Atenuacion, banda de paso, Ap [dB]: 3
Atenuacion, banda de rechazo, As [dB]: 30
Valor del parametro D=1.5355
Valor de fmin=900
Orden del filtro: N = 29
33

Valor de la frecuencias centrales fc1=550 [hz], fc2=6000 [hz]


Presione una tecla para continuar
Coeficientes
Hcoef[0] = 0.318750
Hcoef[1] = 0.156862
Hcoef[2] = 0.225787
Hcoef[3] = 0.010987
Hcoef[4] = 0.060511
Hcoef[5] = 0.101161
Hcoef[6] = 0.001992
Hcoef[7] = 0.077548
Hcoef[8] = 0.039299
Hcoef[9] = 0.007926
Hcoef[10] = 0.058297
Hcoef[11] = 0.000406
Hcoef[12] = 0.013860
Hcoef[13] = 0.025336
Hcoef[14] = 0.020064
Presione una tecla para continuar
Coeficientes de la ventana hamming
hamming[0] = 1.000000
hamming[1] = 0.988467
hamming[2] = 0.954446
hamming[3] = 0.899642
hamming[4] = 0.826805
hamming[5] = 0.739587

34

hamming[6] = 0.642360
hamming[7] = 0.540000
hamming[8] = 0.437640
hamming[9] = 0.340413
hamming[10] = 0.253195
hamming[11] = 0.180358
hamming[12] = 0.125554
hamming[13] = 0.091533
hamming[14] = 0.080000
Presione una tecla para continuar
Coeficientes ventaneados
HVent[0] = 0.318750
HVent[1] = 0.155053
HVent[2] = 0.215501
HVent[3] = 0.009884
HVent[4] = 0.050031
HVent[5] = 0.074817
HVent[6] = 0.001279
HVent[7] = 0.041876
HVent[8] = 0.017199
HVent[9] = 0.002698
HVent[10] = 0.014761
HVent[11] = 0.000073
HVent[12] = 0.001740
HVent[13] = 0.002319
HVent[14] = 0.001605

35

Presione una tecla para continuar


Muestras de la seal seno
muestra h0=0.000000
muestra h1=0.164464
muestra h2=0.328750
muestra h3=0.492679
muestra h4=0.656076
muestra h5=0.818763
muestra h6=0.980564
muestra h7=1.141303
muestra h8=1.300808
muestra h9=1.458904
muestra h10=1.615422
muestra h11=1.770191
muestra h12=1.923045
muestra h13=2.073818
muestra h14=2.222346
Presione una tecla para continuar
Resultados en el dominio del tiempo
htiemp[] = 0.00
htiemp[1] = 0.05
htiemp[2] = 0.08
htiemp[3] = 0.14
htiemp[4] = 0.20
htiemp[5] = 0.27
htiemp[6] = 0.35

36

htiemp[7] = 0.43
htiemp[8] = 0.52
htiemp[9] = 0.61
htiemp[10] = 0.69
htiemp[11] = 0.78
htiemp[12] = 0.87
htiemp[13] = 0.96
htiemp[14] = 1.05
Presione una tecla para continuar

37

Para la ventana blackman tenemos:

PARAMETROS DEL FILTRO


Frecuencia de paso, 'Fp1' [Hz]: 100
Frecuencia de rechazo, 'Fs1'>Fp1 [Hz]: 1000
Frecuencia de rechazo, 'Fs2'>Fs1 [Hz]: 4000
Frecuencia de paso, 'Fp2'>Fs2 [Hz]: 8000
Frecuencia de muestreo
F = 16000
Atenuacion, banda de paso, Ap [dB]: 3
Atenuacion, banda de rechazo, As [dB]: 30
Valor del parametro D=1.5355
Valor de fmin=900
Orden del filtro: N = 29
38

Valor de la frecuencias centrales fc1=550 [hz], fc2=6000 [hz]


Presione una tecla para continuar
Coeficientes
Hcoef[0] = 0.318750
Hcoef[1] = 0.156862
Hcoef[2] = 0.225787
Hcoef[3] = 0.010987
Hcoef[4] = 0.060511
Hcoef[5] = 0.101161
Hcoef[6] = 0.001992
Hcoef[7] = 0.077548
Hcoef[8] = 0.039299
Hcoef[9] = 0.007926
Hcoef[10] = 0.058297
Hcoef[11] = 0.000406
Hcoef[12] = 0.013860
Hcoef[13] = 0.025336
Hcoef[14] = 0.020064
Presione una tecla para continuar
Coeficientes de la ventana blackman
blackman[0] = 1.000000
blackman[1] = 0.979541
blackman[2] = 0.920364
blackman[3] = 0.828717
blackman[4] = 0.713943
blackman[5] = 0.587063

39

blackman[6] = 0.459183
blackman[7] = 0.340000
blackman[8] = 0.236662
blackman[9] = 0.153179
blackman[10] = 0.090453
blackman[11] = 0.046886
blackman[12] = 0.019395
blackman[13] = 0.004614
blackman[14] = 0.000000
Presione una tecla par continuar
Coeficientes ventaneados
HVent[0] = 0.318750
HVent[1] = 0.153653
HVent[2] = 0.207806
HVent[3] = 0.009105
HVent[4] = 0.043202
HVent[5] = 0.059388
HVent[6] = 0.000915
HVent[7] = 0.026366
HVent[8] = 0.009301
HVent[9] = 0.001214
HVent[10] = 0.005273
HVent[11] = 0.000019
HVent[12] = 0.000269
HVent[13] = 0.000117
HVent[14] = 0.000000

40

Presione una tecla para continuar


Muestras de la seal seno
muestra h0=0.000000
muestra h1=0.164464
muestra h2=0.328750
muestra h3=0.492679
muestra h4=0.656076
muestra h5=0.818763
muestra h6=0.980564
muestra h7=1.141303
muestra h8=1.300808
muestra h9=1.458904
muestra h10=1.615422
muestra h11=1.770191
muestra h12=1.923045
muestra h13=2.073818
muestra h14=2.222346
Presione una tecla para continuar
Resultados en el dominio del tiempo
htiemp[] = 0.00
htiemp[1] = 0.05
htiemp[2] = 0.08
htiemp[3] = 0.14
htiemp[4] = 0.20
htiemp[5] = 0.27
htiemp[6] = 0.34

41

htiemp[7] = 0.42
htiemp[8] = 0.50
htiemp[9] = 0.58
htiemp[10] = 0.66
htiemp[11] = 0.74
htiemp[12] = 0.82
htiemp[13] = 0.89
htiemp[14] = 0.97
Presione una tecla para continuar

42

41

43

Вам также может понравиться