Los códigos aquí mostrados no son para que los copien, sino para que ustedes los alumnos los analicen y hagan el suyo propio, recuerden que ustedes son los diseñadores y cada quien piensa de manea distinta, de forma tal que la solución se puede encontrar de distintas formas
Suscribirse a:
Enviar comentarios (Atom)
/*********************************
ResponderEliminar*ANALISIS/SINTESIS DE FILTROS
*JFUENTES
*IPN-UPIITA
*POCOS PELOS PERO BIEN PEINADOS
*OCTUBRE-2009
*********************************/
#include stdio.h
#include math.h
#define N 8
#define M 4
int main(){
//================================
//COEFICIENTES-FILTROS
//================================
float h0[] = {-0.0915, 0.1585, 0.5915, 0.3415};
float h1[] = {-0.3415, 0.5915, -0.1585, -0.0915};
float g0[] = { 0.3415, 0.5915, 0.1585, -0.0915};
float g1[] = {-0.0915, -0.1585, 0.5915, -0.3415};
//================================
//DECLARACION DE VARIABLES
//================================
int Z; //longitudes
int W; //longitudes
int x; //senal de entrada
int r1; //longitudes
int r2;
int i; //indices
int j; //indices
int k; //indices
float i0; //senal sintesis
float i1;
//================================
Z = N + M - 1;
W = Z + M - 1;
r1 = M + 2*N - 2;
r2 = M + 2*Z - 2;
//================================
float Y0[Z];
float I0[Z];
float V0[Z];
float H0[r1];
float G0[r2];
float Y1[Z];
float V1[Z];
float H1[r1];
float G1[r2];
float S1[W];
//================================
//INICIALIZACION DE VECTORES
//================================
for(i = 0; i <(N+M-1); i++){
Y0[i] = 0;
}
for(i = 0; i <(N+M-1); i++){
I0[i] = 0;
}
for(i = 0; i<(N+2*M-2); i++){
V0[i] = 0;
}
for(i = 0; i < (N+2*M-2) ; i++){
H0[i] = 0;
}
for(i = 0; i < (2*N+3*M-2) ; i++){
G0[i] = 0;
}
for(i = (N-1); i < (N+M-1) ; i++){
H0[i] = h0[i-(N-1)];
}
for(i = (N+M-2); i < (N+2*M-2) ; i++){
G0[i] = g0[i-(N+M-2)];
}
//================================
//ETAPA DE ANALISIS
//================================
for(i = 0; i < N; i++){
printf("\n >> x(%d) = ",i);
scanf("%d",&x);
for(j = 0; j < N+M-1; j++){
Y0[j] = (x * H0[(N-1) + j - i] ) + Y0[j];
//================================
//DIEZMADO / INTERPOLACION
//================================
if(j%2==0){
I0[j] = Y0[j];
}
//================================
//ETAPA DE SINTESIS
//================================
for(k = 0; k < (N+2*M-2); k++){
i0 = I0[j];
V0[k] = (i0 * G0[(N+M-2) + k - j] ) + V0[k];
}
}
}// for principal
}// fin de main