Sei sulla pagina 1di 5

Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y


Eléctrica

Teoría de codificación y manejo de la información

Práctica 1

Fuentes de información discretas

Cortés Vargas Carlos

Márquez Rivera Marcos Raúl

8CV2
Implementación de la función diseñada mediante programación en MATLAB
Matlab permite la programación de procedimientos y funciones. Para crear una función usamos la declaración
function que tiene la siguiente sintaxis general:
function [Arg1, Arg2,…,ArgN] = nombre_funcion(arg1, arg2, …,argM);
Cuerpo de la función:
• Comandos
• Expresiones
• Variables, etc.

Donde Arg 1, Arg 2,……, ArgN son argumentos de salida de la función y arg1, arg2, ………, argM son los
argumentos de salida. El intercambio de variables con el espacio de trabajo se realiza mediante los argumentos
de entrada y los argumentos de salida.

Paso 1
Abrimos el editor de MATLAB el cual se muestra en la barra menú debajo de File

Se abrirá una nueva ventana que es el editor de texto de MATLAB y realizamos el siguiente código

En la función anterior X es el argumento de salida, será un O ó 1 cada vez que la función sea invocada,
“fuente_binaria” es el nombre la función, PX1 y PX2 son argumentos de entrada donde se almacenan las
probabilidades de los símbolos X1 y X2 respectivamente, U almacena un valor aleatorio entre 0 y 1 con
distribución uniforme generado cada vez que el comando “rand” se invoca. Guardamos la función creada en
MATLAB, en la barra de menu seleccionamos “File” y luego seleccionamos la opción “Save_as”.
Para invocar a la función que modela a la fuente binaria, nos vamos a la ventana de comandos de MATLAB y
tecleamos la siguiente secuencia de comandos:
Repetir el comando de la línea 3 ([X] = fuente_binaria(PX1, PX2) ), 10 veces y anotar la secuencia de símbolos
emitido por la fuente binaria en cada una de las pruebas realizadas.

Prueba 1ª 2ª 3ª 4ª 5ª 6ª 7ª 8ª 9ª 10ª
Valor de x 1 1 0 1 1 0 0 1 1 1

¿Que se observa cada vez que la función se invoca desde la ventana de comandos?
Se arroja un número al azar, independiente del resultado anterior

¿Al observar la secuencia de símbolos reportados en la tabla, existe forma alguna de predecir el
símbolo siguiente que emitirá la fuente de información?
No ya que la función invoca una fuente aleatoria sin memoria, por lo cual arroja un número al azar
independiente del siguiente.

Paso 2
En este paso, realizaremos la invocación de la función editada en MATLAB desde un procedimiento. Los
procedimientos son secuencias de comandos y expresiones guardados en archivos *.m. Los archivos *.m, son
archivos ASCII ordinarios y pueden editarse con cualquier editor de textos.
Cuando un procedimiento se invoca, MATLAB ejecuta los comandos de manera secuencial.
Los procedimientos operan globalmente en las variables definidas en el espacio de trabajo de MATLAB. Las
variables definidas en un procedimiento, quedan definidas para operarse desde la ventana de comandos o por
otros procedimientos.

En el caso de los procedimientos se le puede dar cualquier otro nombre diferente al de las funciones, por
ejemplo “proc_invoca_fuente_binaria”. Aquí es importante guardarlo en el mismo directorio donde se
encuentra la función que se invocará.
Desde la ventana de comandos escribimos el nombre del procedimiento.

Reportar los resultados arrojados por el procedimiento.


Valores de x 0 1 1 0 1 0 0 1 1 1

Paso 3
Obtención de las estadísticas de la fuente binaria.
Para obtener las estadísticas de la fuente binaria generada, es necesario editar un procedimiento que de manera
general invoque a la función que modela a la fuente binaria e acuerdo al número de símbolos a generar. Para
esto será necesario recurrir a los ciclos o bucles como “for” o “while”. Para conocer la sintaxis de estos ciclos
desde la ventana de comandos escribir

Para determinar la probabilidad de los símbolos generados por la fuente de información, aplicar el concepto de
frecuencia relativa o a posteriori, que de manera general nos dice:
Supongamos que un experimento aleatorio se repite N veces. Si en el experimento un evento A ocurre NA
veces, entonces la probabilidad del evento A se define como:

Es decir, se requiere invocar a la función “fuente_binaria” N veces, contar el número ceros y el número de unos
que se generan y calcular la probabilidad de 0 y 1.
Una vez editado el procedimiento anterior guardarlo en el directorio de trabajo como en el punto 4.1.9 con
algún nombre. En este caso se le asignó el nombre de “estadisticas_fuente_binaria”. Invocar desde la ventana de
comandos al procedimiento:

Valores de las estadísticas de la fuente de información obtenidas mediante el modelo de MATLAB

Valores teóricos
Valores obtenidos por Valores obtenidos por Valores obtenidos por
frecuencia relativa para frecuencia relativa para frecuencia relativa para
100 simbolos 1000 simbolos 1000 simbolos
P(x=0) P(x=1) P(x=0) P(x=1) P(x=0) P(x=1) P(x=0) P(x=1)
0.1 0.9 0.08 0.92 0.089 0.911 0.1040 0.8960
0.2 0.8 0.20 0.80 0.215 0.785 0.2017 0.7983
0.3 0.7 0.18 0.82 0.304 0.696 0.2991 0.7009
0.4 0.6 0.40 0.60 0.412 0.588 0.4031 0.5969
0.5 0.5 0.43 0.57 0.492 0.518 0.5093 0.4907
0.6 0.4 0.58 0.42 0.641 0.359 0.5958 0.4142
0.7 0.3 0.67 0.33 0.686 0.314 0.7021 0.2979
0.8 0.2 0.74 0.26 0.794 0.206 0.7954 0.2046
0.9 0.1 0.91 0.09 0.897 0.103 0.8981 0.1019

Potrebbero piacerti anche