jueves, 29 de marzo de 2012

Mapa Logistica [Puntos extra]





Tarea 3: Pruebas estadísticas para los números pseudoaleatorios

Librería de generación de números pseudoaleatorios
Para realizar esta parte, lo primero que hice es generar numeros pseudo-aleatorios de manera teórica con octave para generar una gráfica en donde pudiera ver como varia la distriución de forma visual, en mi caso estoy utilizando la distribución de possion que utiliza la siguiente formula.



Por lo que hice esta función en octave:



En gnuplot genero esta gráfica.


Luego para generar la estadística, como sabemos debemos de generar mediante una unidad de tiempo saber cuando es mayor a uno y que esto regrese un numero aleatorio por medio de un random uniforme, por lo que generé otra función la cual da este numero.





Para luego, generar esta gráfica en gnuplot


Luego necesitamos un programa que genere y hacer "canastas" para normalizar los numeros.



Generando los siguientes resultados los cuales voy a utilizar para las pruebas.




Luego si comparamos las dos versiones de numeros pseudo-aleatorios, tenemos que una gráfica comprobando que pertenecen a la misma distribución


Pruebas estadísticas
Ahora, para verificar que lo que estoy generando, se apegan a la distribución de poisson, por lo que mediante una investigación en internet por lo que decidí hacer la prueba de chi cuadrado.


La prueba de chi cuadrado,sigue una distribución de chi cuadrada de Pearson, en donde mido la discrepancia entre una distribución observada y otra teórica, por lo que genere en una lista numeros desde la libreria de numpy con numeros de distribución de poission, comparados los numeros teóricos que generé, al igual que los numeros experimentales y para verificar que esto funciona, lo que hice fue compararlo con numeros que utilicen otra distribución, en donde tuvimos resultados satisfactorios teniendo Hipotesis contrarias.


Expongo el código.



Teniendo los siguientes resultados.

Por lo que podemos comprobar que al comparar con la distribución de poisson, tenemos un resultado satisfactorio pero al momento de comparar con una distribución normal, se rechaza.

Podemos concluir que los numeros generados si pertenecen a la distribución de poisson.

lunes, 26 de marzo de 2012

Medio curso: Reporte+Ponencia

Importancia/impacto esperado del proyecto


Esperamos que nuestro proyecto Cantamela! viene a crear una aplicación para las personas que desean el nombre de una canción pero que se saben la letra o la musica, puedan con un simple toque, saber cual es esa canción, esto puede tener muchos propósitos, ya que de alguna manera ayudamos a que las personas puedan de una manera relativamente facil obtener un resultado y una forma inovadora de buscar información sobre canciones.


Cantamela! será una aplicación compatible para android completamente en español, utilizando puras tecnologias que sean libres para cualquier persona, ya que las que existen actualmente en el mercado necesitan de cuotas para obtener referencias de canciones, incluso algunas otras utilizan algoritmos que ya se encuentran patentados los cuales no se pueden utilizar.


Podemos decir que cantamela! tambien viene a cubrir la necesidad del reconocimiento de canciones que no son muy conocidas o canciones que son puramente regionales o de nuestro país, por lo que esperamos hacer una de las bases de datos con mas diferencias de generos musicales y cantantes.


Es un reto realizar una aplicación de esta magnitud, ya que como hemos dicho, existen empresas enteras que llevan años desarrollando tecnologías para mejorar el servicio de este tipo, lo que nosotros estamos proponiendo es tomar la ayuda de APIs especializadas para así poder realizarlo.


Herramientas y tecnologías utilizadas


Android SDK, es uno de los sistemas operativos más robustos en el mercado de tecnologías móviles y es implementado en muchos dispositivos, desde celulares hasta tabletas, teniendo esa facilidad en hacerlo portable para dichas plataformas y tener una buena experiencia.


Echoprint “escucha” el audio de un teléfono para averiguar qué canción es, dado que cualquiera puede utilizar echoprint de forma gratuita, se puede instalar en nuestros propios servidores y aun esta en fase de desarrollo(es relativamente nueva), por lo que se espera que cada vez se puedan agregar más canciones y el objetivo es que sea una tecnología de música de identificación de facto.


Echoprint consta de tres partes: El generador de código, lo que hace es convertir el audio en códigos que luego el servidor almacena y genera códigos indices y datos que provienen de los socios de la libreria y otros usuarios de Echoprint.


El generador de código de tiempo calcula has de pares a partir de una señal de audio utilizando el procesamiento avanzado de señal, teniendo en cuenta el ruido y como se modifica este audio, a partir de una señal mono de 11kHz, se calcula un filtro de blanqueamiento, luego se descompone en una 8 sub-bandas y con esto se hace una búsqueda.


Tomado de http://echoprint.me






Calendarización 










Consideraciones de usabilidad relevantes al proyecto


Los usuarios a los cuales nos dirigimos es especialmente a los jóvenes, pero vemos la posibilidad de que cualquier persona ya sea niño u adulto pueda acceder a la aplicación para consultar información, por lo que esperamos incrementar la base de datos con un rango de todas las edades.


Podemos decir que los usuarios pueden conocer otras aplicaciones que hagan la misma operación que esta aplicación, a diferencia que esta tendrá la posibilidad de que con mayor grado conozca la canción que se esta buscando, por lo que tenemos que hacer la interfaz lo mas visible y minimalista para que los usuarios no busquen otras alternativas y encuentren nuestra propuesta mejor que las demás.


Como el usuario pensamos que va utilizar la aplicación en un contexto en el cual de manera rápida necesite la información y no tener que esperar mucho tiempo, simplemente queremos que mediante un toque pueda tener lo que necesite y no que navegue entre menus innecesarios para obtener dicho contenido.


Algo importante es hacer que las canciones recientes de la aplicación puedan estar visibles para que si el usuario olvidó que canción buscó, no tener que repetir la busqueda, si no simplemente navegar entre el menu.


Esperamos que si tenemos tiempo, realizar pruebas de usabilidad entre los compañeros del salón y entre personas objetivo para poder realizar mejoras en la interfaz del sistema y llevar un mejor producto.


En las siguientes diapositivas expongo la primera fase de la interfaz del proyecto al igual que contenido relevante sobre el mismo.



moviles

viernes, 9 de marzo de 2012

Computación distribuida en Python usando Pyro

¿Que es Pyro?
Pyro es una librería de python que podemos utilizar para nuestro proyecto de la materia de paralelos y distribuidos, ya que nos permite construir aplicaciones en donde podemos crear objetos que se comuniquen entre ellos mismos atraves de la red, de una manera relativamente fácil.


Podemos hacer llamadas de métodos normales de Python, con casi cualquier parámetro posible y obtendremos una respuesta, con Pyro lo que hace es localizar el objeto para poder ejecutar el método, por lo que tendremos un conjunto de herramientas permitiendonos construir aplicaciones distribuidas muy fácilmente.


Pyro está escrito 100% en python.


Para instalar Pyro simplemente lo puedes descargar desde su pagina (aquí)
Ahí mismo pueden encontrar la documentación la cual viene muy completa.


Según la documentación de Pyro tienen algunos benchmark usando su código.


"2000 connections in 1.139 sec = 1756 conn/sec
2000 new proxy calls in 1.451 sec = 1378 calls/sec
10000 calls in 1.058 sec = 9452 calls/sec" [Aquí has info] 
 Por lo que podemos ver que es relativamente rápido.


Mi aportación de esta semana consiste en realizar un programa utilizando esta librería, para ello hice un código en el cual se hacen llamadas para obtener las funciones trigonométricas.


Para eso, primero que nada realicé un código que me devolviera dichos valores.






Luego necesitamos un servidor, para el cual utilizo las librerías de Pyro.





Y por ultimo el cliente





Por lo que, necesitamos para correrlo, primeramente nombrar el servidor, por lo que vamos a poner en el terminar, en la carpeta donde tengas el código "pyro-ns"




Luego en otra terminal vamos a ejecutar el servidor.




Y en otra terminal vamos a ejecutar el cliente el cual llama a las funciones trigonométricas.




Aquí podemos ver las tres terminales, para que también puedan ejecutarlo.




Como ven es muy sencillo, con esto podemos hacer lo que vimos en clase de RMI, al igual que hacer el computo PI o mandar mensajes.


Esto es todo por mi parte.

domingo, 4 de marzo de 2012

NFC [Near Field Communication]

NFC, es una tecnología de comunicación que si bien no es nueva, se he escuchado en los últimos años como una de las posibles tecnologías que pudiera cambiar la forma de interactuar con las cosas y ciertas empresas tienen muchos planes utilizando esta tecnología en aparatos móviles, en esta entrada, voy a hablar acerca de que es, como funciona y aplicaciones prácticas.






¿Qué es NFC?
NFC, es una tecnología de comunicación de corto alcance, lo cual permite que diferentes dispositivos puedan intercambiar información con otros dispositivos que utilicen las misma tecnología NFC o con tarjetas de apoyo NFC, por lo que se puede escanear y obtener datos relevantes de esta, algunos países como Japón, tienen desarrolladas aplicaciones utilizandolas.


¿Como funciona?
Es basicamente, poner la parte de atrás algún dispositivo que tenga la funcionalidad NFC, ya sea contra la parte trasera de otro dispositivo que tenga NFC o con una terminal NFC, este lo reconoce automáticamente, mostrando mensajes en la pantalla para leer o escribir información en el dispositivo, funciona con una frecuencia de 13,56 MHz y soporta transferencia de datos a una velocidad mas o menos lenta de 424 kbps, pero es suficiente para mandar datos pequeños, aunque se espera que en algún futuro se aumente esta velocidad, se puede acercar a menos de 20 cm y en menos de 0,2 segundos se establece una conexión, algo que es importante es que solamente requiere poca energía, menor a 15 mA, puede ser más, según cuanta cantidad de datos estamos mandando.


¿Por qué utilizar NFC y no otros?
Ya que las especificaciones técnicas de las que he hablado anteriormente nos ofrece comodidad y seguridad, porque hablando de tecnologías como Bluetooth y Wi-Fi la comunicación que se da es más amplia con frecuencias que oscilan entre 1 a 100 metros, por lo que se pueden tener problemas principalmente de seguridad, ya que si los dispositivos están configurados para aceptar conexiones sin autentificación, cualquier persona dentro de ese rango puede contectarse a ellos y tener acceso a la información almacenada de otro dispositivo, creando un problema de seguridad importante, aunque si decimos que se requiere una contraseña para poder establecer la conexión, también tenemos otro problema, por lo que podemos decir que si queremos seguridad, necesitamos una contraseña para establecer conexión.


La tecnología NFC, puede ofrecernos comodidad y seguridad, al hacer exigir un contacto directo entre dispositivos para poder realizar un intercambio de información y que casi automáticamente puedas obtener información de este, por lo que puedes tener a varias personas que no tengan contraseña configurada para una comunicación NFC y no corren el riesgo de obtener información autorizada.


Aplicaciones.


Actuales:
  • Explorador de etiquetas RFID
    • Un dispositivo que tenga NFC, puede funcionar como un lector de etiquetas RFID, leyendo la información incluida, se puede decir, que se puede utilizar en medios de comunicación como en carteles publicitarios, folletos o incluso para darnos información, por ejemplo, imaginen que vamos a un restaurante y acercamos el dispositivo, al momento tenemos un menú en nuestro celular con descripciones y críticas de los platillos.
  • Sustituto de tarjetas de crédito
    • NFC permite remplazar las tarjetas de plástico y tenerlas todas en nuestro teléfono (pueden ver el video que adjunto abajo), en donde acceder a los servicios de una tarjeta de crédito con esta tecnología, por lo que hacer pagos puede ser mas accesible.
  • Intercambio de datos
    • Dos teléfonos con NFC, pueden realizar intercambios de datos, por ejemplo transferir tarjetas de presentación y tenerlas accesibles en el celular, o compartir fotos y vídeos relativamente fácil.
  • Emparejamiento de Bluetooth o Wi-Fi de autentificación
    • Se puede establecer conexión de bluetooth o Wi-Fi con autenticación, esto es solamente acercar con algún dispositivo lo cual automáticamente podríamos tener un emparejamiento de estos, en vez de pedir códigos de seguridad, solamente los acercamos.

Tendencias Futuras:
  • Pagos Personales
  • Seguridad sin llave
  • Identificación 
  • Redes Sociales
  • Entretenimiento
  • Salud y Seguridad Pública




Referencias
NFC
Near Field Communication
Importancia de NFC

Generic Array Logic [Lab]

¿Que es un GAL?
En electrónica digital, un GAL de las siglas en inglés Generic Array Logic, es un dispositivo lógico programable que es utilizado para realizar circuitos combinacionales lógicos, se desarrolló en los años 80's por la empresa Lattice Semiconductor .


Una lógica combinacional, es un tipo de lógica digital, que se realiza a través de un circuito booleano, esto quiere decir, que la salida es una función que solo depende de la entrada actual, en contrario con la lógica secuencial, la cual tiene memoria, mientras que esta lógica combinacional no.


Arquitectura de un GAL.
El GAL está constituido por un nivel de lógica programable, que consta de una matriz de puertas AND reprogramables conectada con otra matriz de puertas OR para obtener las salidas fijas con lógica programable.




El GAL se puede programar una y otra vez, ya que utiliza E2CMOS (eléctricamente borrable CMOS).


Para ver un poco mas de como se trabaja con un GAL, expongo un programa en lenguaje ABEL, hecho con el programa ispLever Versión 1.5, utilizado en un semestre anterior.


El material que utilicé es:
• Fuente de voltaje de 5VCD.
• Una tablilla de conexiones. [Protoboard]
• Circuito integrado GAL16V8.
• Un DIP switch deslizable de 8 o 4 Switch.
• 4 LED’s
• 4 resistencias de 330 Ohms
• Alambre de conexiones.


Se nos pide que se diseñe un circuito lógico de 3 entradas (A, B y C) y una salida (S).
La salida debe ser de uno lógico, cuando el valor binario de las entradas es mayor que cero (000) y menor o igual que cinco (101) y de cero lógico cuando no cumpla lo anterior.


Procedimiento
1. Especificar el sistema.
A, B, C = primera, segunda y tercera cifra de números binarios. 
F= salida cuando 0<n<=5 en binario 000<n<=101


2. Determinar entradas y salidas






3. Trasladar el comportamiento del sistema a una tabla de verdad
([A,B,C]->F); [0,0,0]->0;  [0,0,1]->1;  [0,1,0]->1;  [0,1,1]->1;  [1,0,0]->1;  [1,0,1]->1;  [1,1,0]->0;  [1,1,1]->0;


4. Minimizar

Todo esto, lo genera el reporte que realizamos en el programa ispLever.


5. Elaborar diagrama esquemático




6. Implementar



  • Circuito con el GAL implementado


  • Código en lenguaje ABEL


  • Simulación de salida




Como podrán ver es muy sencillo programar un GAL y hacer pruebas, para tener mas información, les dejo algunos libros interesantes y links de páginas.


Referencias
Garza Garza, Juan Angel
Sistemas digitales y electrónica digital,
prácticas de laboratorio, Primera edición.
Pearson Educacion, México, 2006


Tocci Ronald J.
Sistemas digitales: principios y aplicaciones,
Octava edición.
Pearson Educacion, México, 2003

M. C. Juan Angel Garza

Microelectronic circuits 1

Sove Elec: Simulación de circuitos en OS X [Lab]

Para realizar circuitos sencillos y comprobarlos antes de realizarlos manualmente, podemos utilizar simuladores que ya realizan esta función y con los cuales podemos de manera sencilla, saber si nuestra idea de circuito, esta bien planteada.


Para esta entrada de blog, les voy a hablar acerca de un simulador de circuitos que encontré para OS X, su nombre es Solve Elec.


Solve Elec, es un programa gratuito, disponible para OS X, en el que facilmente se pueden realizar y analizar el funcionamiento de circuitos eléctricos ya sea de correinte alterna o de corriente contínua, podemos obtener las fórmulas y los valores de las intensidades de corriente y tensiones definidas en el circuito, para así verificar si lo estamos haciendo bien, también tiene la posibilidad de realizar gráficas del comportamiento de este.


Para instalarlo, en realidad no tienes que hacer mucho, solamente vas a la página del proyecto (aquí) y descargas el archivo .dmg, el cual te da la aplicación para que la pongas en tu carpeta de aplicaciones de OS X.


Luego de descargarlo, tendrás una ventana como esta:

Para este caso, voy a simular un circuito con 3 resistencias, una fuente de voltaje, al igual que un amperímetro y un voltímetro para obtener los resultados.

Para realizar esto, vamos agregar los componentes, esto es muy sencillo, simplemente del menú que tenemos del lado izquierdo, le damos clic a uno, y luego damos clic en la parte donde lo queremos, puedes teclear la tecla "r" para rotarlo y acomodarlo a tu gusto.

Luego hice un circuito simple.


Para poder obtener la gráfica y las fórmulas, en la barra de arriba, tenemos unos botones de colores, en los cuales puedes prender o apagar la simulación, ver la solución del circuito y graficarlo.




Entonces, puedes seleccionar lo que quieres saber de ese circuito, en mi caso, seleccioné una gráfica y las ecuaciones.



Espero que les sirva el programa de simulación de circuitos, si desean tener mas información ingresen a la página del proyecto de Solve elec.

Referencia.