filosofos comensales java

Estándar

En la escuela nos dejaron hacer un programa multihilo que simulara y solucionara el problema de los filosofos comensales que como yo lo entendi se trataba de 5 filosofos que tenian un plato y un tenedor; cuando quieren comer necesitan usar su tenedor y el de al lado para comer por lo que cuando uno come otro se queda sin tenedor. En el programa cada hilo es un filosofo y mediante la instruccion synchronized se evita que un filosofo coma si su tenedor esta ocupado. Los demas detalles se entienden con el codigo.

comensales

Feist Honey Honey

Estándar

Hace unos pocos dias estaba yo viendo la tele cambiando de canal en canal y no encontraba nada interesante  hasta que pase por el 11 y una cancion algo psicodelica y con unos muñequitos algo lugubres capto mi atencion. Era un grupo llamado feist que yo en mi vida habia escuchado pero me pareceio increible la cancion que escuche y por eso me doy la libertad de compartir el video.

honey honey

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();
}

Ley A

Estándar

La ley A es una regla de codificación (conversión analógica a digital) en la que se utiliza cuantización no uniforme. La cuantización no es uniforme a lo largo de todo el intervalo dinámico, sin embargo se definen segmentos dentro de los cuales se realiza cuantización uniforme. Algunas de las características de la ley A son las siguientes: 

–          El ADC utilizado es de tipo midraiser. 

–          La tasa de muestreo es de 8000 Hz.

 –          Se utilizan 8 bits para codificar cada muestra, por lo que la tasa de transmisión de bits resultante es de 64 kb/s.

 –          Se supone que el intervalo dinámico es de 8192 unidades y que dicho intervalo es simétrico, por lo tanto se tienen 4096 unidades para cada polaridad (A). El bit más significativo del código se utiliza para definir el signo y los 7 restantes para la magnitud. Las características que se enuncian a continuación se refieren a la polaridad positiva, y para la polaridad negativa se tendrán características análogas

–          Las 4096 unidades se dividen en 8 segmentos no uniformes (de diferentes tamaños). Cada segmento es representado por los 3 bits más significativos de la magnitud.

 –          Dentro de cada segmento, sin embargo, la cuantización es uniforme. Los cuatro bits menos significativos se usan para codificar las magnitudes dentro de cada segmento, lo que implica que cada segmento es dividido en 16 intervalos del mismo tamaño. Desde luego, los intervalos dentro de un segmento son de tamaño distinto a los intervalos de otro segmento.

 –          Los segmentos 1 y 2 (los correspondientes a las magnitudes más pequeñas) están compuestos de 32 unidades cada uno. Puesto que sólo se tienen 16 códigos para cada segmento, en este caso los intervalos son de 2 unidades cada uno. El mapeo de las señales analógicas de entrada a las magnitudes discretas de salida es el que se describe en la tabla.

 –          El segmento 3 está compuesto por 64 unidades, como consecuencia los intervalos de cuantización son de 4 unidades.

 –          El segmento 4 está compuesto por 128 unidades, como consecuencia los intervalos de cuantización son de 8 unidades; en el segmento 5 hay 256 unidades, lo que implica intervalos de 16 unidades, y así sucesivamente hasta llegar al segmento 8.

dibujo

Basado en la codificacion de Ley pongo a su disposicion una serie de funciones en matlab que permiten obtener las muestras de una señal y codificarlas en ley A con la inversion de signo que se aplica normalmente

c_sistecominvertitm 

Ademas de obtener los codigos tambien genera una grafica parecida a la siguiente

1

Una vez que se cuenta con los codigos es relativamente facil hacer que un microcontrolador(PIC,AVR,etc) envie los los bits de forma serial a el circuito integrado MC145503 que transformara los bits en una señal analogica. Esto es muy utilizado en transmisiones de telefonia alambrica.

Para mayor informacion acerca del funcionamiento del CI basta con buscar la datasheet.

Humorismo triste

Estándar
Un poema de Luis G. Urbina
Humorismo Triste

¿Que si me duele? Un poco; te confieso
que me heriste a traicion; mas por fortuna
tras el rapto de ira vino una
dulce resignacion. Paso el exceso.

¿Sufrir?¿Llorar?¿Morir?¿Quien piensa en eso?
El amor es un huesped que importuna;
mirame como estoy; ya sin ninguna
tristeza que decirte. Dame un beso.

Asi; muy bien; perdoname, fui un loco;
tu me curaste; gracias; y ya puedo
saber lo que imagino y lo que toco.

En la herida que hiciste, pon el dedo;
¿Que si me duele? Si; me duele un poco,
mas no mata el dolor…No tengas miedo…

Letania

Estándar

En esta ocacion comparto con ustedes(cualquiera que llegue a leer este blog) un poema de Luis Fernández Ardavín.

LETANÍA

Se ha de ver tu calavera al final de este camino,
en las manos afiladas de un trapense o agustino…
Y donde hoy entran las locas alondras del pensamiento
por la fuerza del destino,
ha de entrar mañana el viento.
¡Memento!
Vamos tras de las mujeres, como si fueran eternas,
con la salvaje lujuria del hombre de las cavernas…
¡Y se pudren las mujeres como se secan las rosas!…
¡Se mueren todas las cosas,
y hasta la tierra se muere!…
¡Miserere!
El labriego de los siglos, en la tierra removida,
va enterrando la materia para darle nueva vida
y el que estaba ayer arriba viene a estar luego debajo.
Es eterno este trabajo
y no tiene acabamiento.
¡Memento!
Van los eternos destinos de este modo encadenados,
impasibles al desfile de los hombres acabados…
Y florecen en los viejos pudrideros de las fosas,
azucenas olorosas…
Sólo la fuerza no muere.
¡Miserere!
El león del poderoso afilando está sus garras,
sin pensar que a las hormigas se las comen las cigarras
y luego son las cigarras carne para las hormigas…
¡No abomines ni bendigas,
porque todo es un momento!
¡Memento!
Recuerda que el tiempo corre y hacia ti no ha de volver.
Eres tú el que ha de tornar, hecho flor, a una mujer,
hecho agua clara, a una fuente y hecho rocío a una rosa…
Filtración maravillosa
de la impureza que muere.
¡Miserere!

Haggard Tales of Ithiria

Estándar

En cuanto musica creo que no soy un gran conocedor sin embargo me he topado con algunos grupos musicales que, creo yo, no son muy conocidos como es el caso de Haggard.

haggard_-_tales_of_ithiria

Hace poco tiempo salio a la venta su ultima produccion titulada “Tales of Ithiria”. La cual adquiri en el “tianguis cultural del chopo” por tan solo $120 lo que me parecio un precio bastente razonable. Es un disco excelente tanto por la  musica como por las letras; contiene 11 tracks entre los que destaca una vieja cancion antes interpretada por el grupo mecano, “hijo de la luna”, que a pesar de ser practicamente igual a la original tiene el toque de orginalidad de Haggard.

En resumen, un excelente disco escuchenlo si tienen la oportunidad.