Transmuliplexor

Estándar

Un transmultiplexor como su nombre lo indica es un dispositivo que permite multiplexar señales, en otras palabras permite combinar varias señales en un solo canal y posteriormente recuperlas sin perder informacion.
La forma mas simple de un transmultiplexor es:

diagrama1

y su implementacion en c seria algo parecido a:

#include <conio.h>
#include <stdio.h>
#define XN 4
#define HN 6

void imprimir(float numero[],int m,char *titulo){
 int i;
 printf(“\n%s\n\n”,titulo);
 for( i =0;i<m;i++){
  printf(” %4.2f “,numero[i]);
 }
}
void main(){
 float XA[XN]={1,2,3,4};
 float XB[XN] = {4,3,2,1};
 float H0[HN] = {0,-0.125,0.25,0.75,0.25,-0.125};
 float H1[HN] = {0,-.25,.5,-.25,0,0 };
 float G0[HN] = {0,0.5,1, 0.5, 0 ,0};
 float G1[HN] = {0, -0.25, -0.5, 1.5, -0.5, -0.25};
/* float H0[HN] = {0.5,0.5};
 float H1[HN] = {-0.5,0.5};
 float G0[HN] = {1,1};
 float G1[HN] = {1,-1};*/
 float YA1[2*XN];
 float YA2[2*XN+HN-1];
 float YB1[2*XN];
 float YB2[2*XN+HN-1];
 float X[2*XN+HN-1];
 float XA1[2*XN+2*(HN-1)];
 float XA2[XN+HN-1];
 float XB1[2*XN+2*(HN-1)];
 float XB2[XN+HN-1];
 float sal1[XN];
 float sal2[XN];
 int i,j;
//FILTRO DOWN UP FILTRO
//upsampling
 clrscr();
  for(j=0,i =0;i<XN;i++,j++){
   YA1[j]=XA[i];
   YB1[j]=XB[i];
   j++;
   YA1[j]=0;
   YB1[j]=0;
  }
//filtros G
  for(i = 0;i<2*XN+HN-1;i++){
   YA2[i]=0;
   YB2[i]=0;
  }
  for(i = 0;i<2*XN;i++){
   for(j=0;j<HN;j++){
    YA2[i+j]=YA2[i+j] + YA1[i]*G0[j];
    YB2[i+j]=YB2[i+j] + YB1[i]*G1[j];
   }
  }
//suma
  for(i = 0;i<2*XN+HN-1;i++){
   X[i]=YA2[i]+YB2[i];
  }
//filtros H
  for(i = 0;i<2*(XN+HN-1);i++){
   XA1[i]=0;
   XB1[i]=0;

  }
  for(i = 0;i<2*XN+HN-1;i++){
   for(j=0;j<HN;j++){
    XA1[i+j]=XA1[i+j] + X[i]*H0[j];
    XB1[i+j]=XB1[i+j] + X[i]*H1[j];
   }
  }
//downsampling
  for(j=0,i=1;j<(XN+HN-1);){
   XA2[j] = XA1[i];
   XB2[j] = XB1[i];
   i = i+2;
   j++;
  }
//acomodar
  for(i=0;i<XN;i++){
   sal1[i] = XA2[i+(HN-1)/2];
   sal2[i] = XB2[i+(HN-1)/2];
  }
  imprimir(YA1,2*XN,”UPSAMPLE”);
  imprimir(YA2,2*XN+HN-1,”CONVOLUCION”);
  imprimir(YB1,2*XN,”UPSAMPLE”);
  imprimir(YB2,2*XN+HN-1,”CONVOLUCION”);
  imprimir(X,2*XN+HN-1,”SUMA”);
  imprimir(XA1,2*(XN+HN-1),”CONVOLUCION”);
  imprimir(XA2,XN+HN-1,”DOWNSAMPLE”);
  imprimir(XB1,2*(XN+HN-1),”CONVOLUCION”);
  imprimir(XB2,XN+HN-1,”DOWNSAMPLE”);
  imprimir(sal1,XN,”Se¤al 1″);
  imprimir(sal2,XN,”Se¤al 2″);
 getch();
}

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s