You are on page 1of 125

APOYOS DIDACTICOS PARA LA CLASE DE COMUNICACIONES

CON MATLAB



por
Sandra Ivonne Lara Sotelo


Presentado a la academia de Sistemas Digitales y Comunicaciones
del Instituto de Ingeniera y Tecnologa de
La Universidad Autnoma de Ciudad Jurez
para su evaluacin





LA UNIVERSIDAD AUTNOMA DE CIUDAD JUREZ
Marzo del 2010




Mtra. Alejandra Mendoza
Presidente de la academia
___________________________________________

Dr. Vctor Manuel
Hinostroza Zubia
Asesor


___________________________________________


Sandra Ivonne Lara Sotelo
Alumno


___________________________________________










Justificacin de la investigacin:

Hasta ahora los mtodos que se han utilizado para facilitar el aprendizaje de los alumnos en
las clases de comunicaciones han sido simples. Actualmente la informacin que se tiene
acerca del rea de comunicaciones se imparte mediante un glosario definido, y para
esclarecer las definiciones de estas materias los recursos son insuficientes. En esta
investigacin se da una breve informacin acerca de programas que pueden ser utilizados
por el profesor en las clases de comunicaciones. Todo esto con el fin de que los alumnos
tengan una clara idea de muchos de los conceptos en las clases.

La habilidad para usar herramientas tales como Matlab se convirti rpidamente en un
requisito para muchas actividades de Ingeniera. Este software es muy sencillo de utilizar y
tiene muchas aplicaciones. Adems cuenta con muchas libreras y herramientas que son
tiles a la hora de resolver problemas matemticos. Los profesores de comunicaciones
impartiran su clase de manera ms interpretativa para los alumnos con programas en donde
pudieran simular cada uno de los conceptos de comunicaciones. Estos programas pueden
emplearse no slo para reforzar y visualizar conceptos de comunicaciones, sino tambin
para resolver problemas y para el diseo avanzado [1].

Antecedentes:
Hasta hace poco, la mayora de los usuarios de Matlab eran personas que tenan
conocimientos previos sobre lenguajes de programacin como Fortran o C, y que

decidieron cambiarse a Matlab una vez que este software se hizo suficientemente popular
[2]. En los ltimos aos, sin embargo, Matlab se ensea como el primer lenguaje, sobre
todo si se trata de clases en donde se manejan conceptos de comunicaciones. Las clases de
comunicaciones que se imparten en la universidad son: Comunicaciones I, Comunicaciones
II y Comunicaciones Digitales. En estas clases se ha utilizado Matlab para graficar seales
y hacer operaciones sencillas con ellas con el objetivo de identificar claramente como es la
seal. Un ejemplo es el sumar dos seales y ver cul es la seal resultante. En algunos
programas se inicializa una frecuencia y una fase para luego introducirlas a una seal y
percibirla en una grfica. Pero ms all de esos programas sencillos, los dems conceptos
de estas clases hasta ahora se explican en el pizarrn.

Existen muchas funciones o programas que nos ayudan en el conocimiento de las
comunicaciones. En Matlab los comandos para realizar operaciones son muy sencillos, solo
hay que poner el nombre del comando con sus respectivas entradas para que arroje un
resultado. Por ejemplo, para realizar la correlacin de dos seales solamente hay que
introducir la funcin xcorr (x, y) y asignarla a una variable. Tambin existen otras
funciones como la de la convolucin, Transformada de Fourier, Transformada de Laplace,
etc.

Planteamiento del problema:
Los profesores que imparten las materias de comunicaciones, en la mayora de los casos
cuando realizan grficas u operaciones lo hacen en el pizarrn, esta por dems decir que
esta manera la ms explcita para los alumnos. Esto se debe a que los trazos no son exactos,

la precisin del profesor para dibujar no es buena, la grfica es muy difcil de dibujar, el
espacio para dibujar la grfica no es suficiente, etc. Es por eso que en muchas ocasiones
los profesores recurren a medios electrnicos para impartir su clase.

Matlab es el recurso ms importante que utilizan los profesores de las clases de
comunicaciones de la UACJ para resolver problemas. Pero cuando se utiliza Matlab se
hacen operaciones muy sencillas, como por ejemplo la graficacin de una seal dada.
Cuando el profesor imparte su clase se apoya de un proyector para plasmar sus
conocimientos a sus alumnos. Este medio es efectivo ya que se muestra la seal graficada
de una manera muy precisa; La seal es clara debido a que la imagen es obtenida de algn
programa de computadora; sin embargo, se necesitan programas en los que se vea cmo se
va formando dicha seal dependiendo del concepto de comunicaciones que se est
enseando.

Marco terico:
Matlab es una de las muchas sofisticadas herramientas de computacin disponibles en el
comercio para resolver problemas de matemticas. Sus aplicaciones comprenden la
mayora de las reas de ciencia e ingeniera [3]. Matlab es una abreviatura de Matrix
Laboratory, laboratorio matricial. En muchas clases de ingeniera, la realizacin de clculos
con un programa de computacin matemtico como Matlab sustituye la programacin de
computadoras ms tradicional. Matlab se escribi originalmente en Fortran y despus se
reescribi en C. Matlab es un instrumento muy til al trabajar con matrices y grficos.

Brinda una eficiente base de clculo para un laboratorio de sotware donde se exploran los
conceptos y se prueban los diseos de sistemas [4].

Para realizar un programa en Matlab los pasos son los siguientes:
1. Plantear el problema. Se tiene que tener una idea clara de que es lo que se quiere.
2. Describir las entradas y salidas. Se debe saber cules son los datos de los que
queremos partir y su relacin con las salidas y tambin las constantes que requiera
el clculo. Adems es importante manejar bien las unidades que se van a utilizar.
3. Desarrollar algoritmo. Tener un algoritmo ayuda a aclarar y ordenar las ecuaciones
que se utilizaran y cada uno de los pasos que se llevarn a cabo, luego reflejarlo en
Matlab.
4. Resolver el problema. Este paso implica encontrar la solucin al problema.
5. Probar la solucin. Comparar los resultados obtenidos con los que se esperaban.
El lenguaje que Matlab utiliza es de alto nivel. Cuenta con comandos de visualizacin en
2D y 3D as como numerosas instrucciones, funciones y libreras. Matlab crea archivos
para manipulacin con extensin .m, archivos para interfaz grfica del usuario .gui,
archivos grficos .fig, adems el usuario puede crear sus variables y funciones. El Simulink
es una parte de Matlab que nos sirve para simular Sistemas Dinmicos No Lineales. Este
simulador tiene Blocksets, que sirven para poder trabajar con procesamiento de seales y
comunicaciones. El conjunto de herramientas para procesamiento de seales de Matlab
tiene una gran variedad de funciones para generar seales, la mayor parte de las cuales
requieren representacin vectorial del tiempo t o n.


Objetivo general:
Desarrollar e implementar materiales de apoyo didctico en Matlab para las clases de
comunicaciones.

Metodologa
Objetivos especficos:
1 Investigar bibliogrfica sobre los temas de la clase de comunicaciones digitales
2 Practicar programacin en Matlab
3 Realizar anlisis de los programas que se van a implementar
4 Desarrollar algoritmos para los programas
5 Realizar los programas para cada una de las clases
6 Probar los programas en clase
7 Documentar el proyecto
Metas:
1.1 Investigar un mnimo de 8 fuentes bibliogrficas de y 8 fuentes electrnicas
de informacin acerca de los temas de comunicaciones para el 20 de agosto.
2.1 Investigar por lo menos 3 manuales de Matlab en fuentes bibliogrficas y
electrnicas para el 20 de agosto.


3.1 Plantear los problemas basados en los temas de comunicaciones para los
cuales se va a programar para el 27 de agosto.
4.1 Desarrollar algoritmos de todos los programas de comunicaciones para el 10
de septiembre.

5.1 Realizar los diagramas de flujo basados en los algoritmos para el 17 de
septiembre.

7.1 Programar, verificar y depurar los problemas para el 5 de noviembre.

7.1 Documentar el proyecto para el 19 de noviembre.
Acciones:
Meta 1.1
1.1.1 Investigar en Internet, revistas y libros
1.1.2 Investigar en biblioteca UACJ/ UTEP
Meta 2.1
2.1.1 Investigar en Internet, libros y manuales
2.1.2 Investigar en biblioteca UACJ/UTEP
Meta 3.1
3.1.1 Definir cules van a ser los temas a programar
3.1.2 Definir datos de entrada y salida

Meta 4.1
4.1.1 Investigar en internet y libros
4.1.2 Investigar en biblioteca UACJ/UTEP
4.1.3 Disear el algoritmo para cada uno de los programas
Meta 5.1
5.1.1 Disear los diagramas de flujo basados en los algoritmos
Meta 6.1
7.1.1 Escribir el cdigo de los programas
7.1.2 Depurar los programas
7.1.3 Correr los programas y verificar resultados
Meta 7.1
7.1.1. Acudir con el asesor para la revisin de los programas
7.1.2. Documentar la informacin y resultados obtenidos del proyecto

Requerimientos:
Meta 1.1
Computadora con Internet
Acceso a UACJ/UTEP
Apuntes de clases de comunicaciones
Meta 2.1
Computadora con Internet
Acceso a UACJ/UTEP
Meta 3.1
Anotaciones (libreta y lpiz)
Computadora

Meta 4.1
Computadora con Internet
Acceso a UACJ/UTEP
Anotaciones (libreta y lpiz)
Meta 5.1
Computadora
Anotaciones (libreta y lpiz)
Meta 6.1
Computadora
Anotaciones (libreta y lpiz)
Software Matlab 7.0
Meta 7.1
Computadora con Internet
Impresora
Plan de trabajo:
A continuacin se muestra un cronograma con las actividades a realizar antes mencionadas:
Cronograma de acciones
Agosto Septiembre Octubre Noviembre Diciembre
Acciones Semana Semana Semana Semana Semana
Numero 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4
Accin 1.1.1
Accin 1.1.2
Accin 2.1.1
Accin 2.1.2
Accin 3.1.1
Accin 3.1.2
Accin 4.1.1
Accin 4.1.2
Accin 4.1.3

Accin 5.1.1
Accin 6.1.1
Accin 6.1.2
Accin 6.1.3
Accin 7.1.1
Accin 7.1.2
Referencias:
[1] Ashok Ambardar. Procesamiento de Senales analgicas y digitales. Thomson. 2002.
[2] Amos Gilat. Matlab una introduccin con ejemplos prcticos. Revert. 2005
[3] http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab70/matlab70primero.pdf, 26
febrero.
[4] Simon Haykin, BarryVan Veen. Seales y Sistemas. Limusa wiley. 2004.


AYUDAS DIDCTICAS DE LAS CLASES DE COMUNICACIONES
EN MATLAB




Por
Sandra Ivonne Lara Sotelo



Presentado a la Academia de Sistemas Digitales y Comunicaciones
Del Instituto de Ingeniera y Tecnologa de
La Universidad Autnoma de Ciudad Jurez
Para obtener el ttulo de




INGENIERO EN SISTEMAS DIGITALES Y COMUNICACIONES








UNIVERSIDAD AUTNOMA DE CIUDAD JUREZ
Noviembre del 2010
I
UNIVERSIDAD AUTNOMADE CIUDADJUREZ
Instituto deIngenierayTecnologa
EVALUACiN DE EXAMEN Fecha: 26 deNoviembredel2010
PROFESIONALINTRACURRICULAR Horario:09:00- 11 :00 HRS.
NIVEL: LICENCIATURA
TEMA: "Apoyos didcticosparaclasedecomunicacionesconMATLAB " l
La evaluacindelexamenprofesionalintracurricularconsta de4partes:
(Desarrolladoen 1hora)
1._ Exposicinporpartedelos alumnos (mximo20 minutos).
2_ Rplicaporpartedeljurado.
3.- Comentariosylo recomendaciones.
4._ Entregaderesultados.
Nombredel alumno:Sandra IvonneLara Sotelo
CalificacinMaestrodela materia (30%) _-"Z",,--1-__
Calificacin DirectordeTrabajo (40%) 3<1
CalificacindelJurado(30%)
TOTAL __0(5
Se recomiendaqueeldocumentose depositeparaconsultaenlaBIBLIOTECA
SiD
NoD
DirectordeTrabajo Jurado CoordinadordelaMateria
"ProyectodeTitulacin"
r. ViclorManuelHinoslrozoZubia Dr. ViciarManuelHinoslrozoZubia
/
/
a
/'
Oro' NellyGordilloCoslllo
ue
DEP 11 ENTO D
INGENIF FLECTRlc
y CO, JTA\l r\
FIRMADO EN ORIGINAL
ii


































iii

Resumen
Matlab es un programa orientado al clculo con matrices que tiene muchas
herramientas muy poderosas para trabajar en muchas ramas de la ingeniera. Matlab
se utiliza en este proyecto para hacer ayudas para los alumnos de las clases de
comunicaciones, tales como Comunicaciones I, Comunicaciones II y
Comunicaciones Digitales. Estas ayudas estn implementadas en la Interfaz Grfica
de Usuario (GUI) de Matlab. Los programas se eligieron de acuerdo a los temas que
tienen las clases de comunicaciones, y los que ms trabajo cuesta entender a los
alumnos. Los programas son: Serie de Fourier, Transformada de Fourier,
Convolucin y Correlacin, Decibeles, Muestreo, Muestreo de una Seal PAM,
Modulacin AM, FM y PM, Modulacin PSK y QAM, Codificacin de Bloque
Lineal, Codificacin Hamming, Codificacin Cclica y Codificacin Convolucional.
Estos programas se implementaron de acuerdo a ejercicios que se realizan en las
clases y a anlisis previos de los temas de comunicaciones. Primero se investigaron y
analizaron los temas a implementar, luego se investigaron las posibles funciones de
Matlab que pudieran simplificar los clculos. Al tener el anlisis de parmetros de los
programas, se implementaron en un editor de textos para crear un archivo .m de
Matlab y proceder a realizar la depuracin. Al final, dichos programas se
implementaron en la GUI de Matlab y se hicieron pruebas con ejemplos que se
aplican en las distintas clases de comunicaciones.










iv

Declaratoria de Originalidad
Yo Sandra Ivonne Lara Sotelo, declaro que el material contenido en este documento
es original y no ha sido copiado de ninguna otra fuente, ni ha sido usado para obtener
otro ttulo o reconocimiento en sta u otra institucin de educacin superior.





__________________________
Sandra Ivonne Lara Sotelo












v

Agradecimientos
A mis padres, por su apoyo. A mi padre por su coraje y palabras fuertes, porque sin
esas palabras yo nunca hubiera tenido el coraje de seguir adelante. A mi madre por su
comprensin, ayuda, cario, paciencia, porque siempre crey en m, por todo. A mis
hermanos, Fabiola y Miguel, por que sin ellos no tendra a las dos personas ms
importantes a quienes dar el ejemplo.
A mi familia por apoyarme incondicionalmente. A mi padrino y mi madrina, porque
siempre estuvieron ah para felicitarme en mis logros, y eso me haca comprometerme
a seguir adelante y a hacer ms para que estuvieran orgullosos de m. A mi prima
Maribel por su ejemplo, apoyo e inters. A toda mi familia materna por empujarme
con sus nimos a ser la primer profesionista en la familia.
A mis profesores por su conocimiento y apoyo. A Juan Luna, Jess Estrada y Valente
Barrn por sus palabras de apoyo y sus consejos, porque desde la preparatoria me
dijeron que s poda y me dieron el ejemplo, me orientaron para ser lo que soy ahora.
A Vctor Hinostroza por toda su experiencia, sabidura y consejos.








vi

Lista de Figuras
Figura 2.1 Controles de la GUI ................................................................................... 13
Figura 3.1 Funcin escaln unitario ............................................................................ 17
Figura 3.2 Funcin Rampa .......................................................................................... 17
Figura 3.3 Funcin sinc ............................................................................................... 17
Figura 3.4 Funcin seno .............................................................................................. 18
Figura 3.5 Funcin coseno .......................................................................................... 18
Figura 3.6 Funcin triangular...................................................................................... 18
Figura 3.7 Funcin diente de sierra ............................................................................. 18
Figura 3.8 Funcin cuadrtica ..................................................................................... 19
Figura 3.9 Transformada de Fourier ........................................................................... 21
Figura 3.10 Modulacin de una seal ......................................................................... 25
Figura 3.11 Demodulacin de una seal ..................................................................... 25
Figura 3.12 Seal PAM ............................................................................................... 31
Figura 4.1 Tipos de modulacin digital ...................................................................... 32
Figura 4.2 Diagramas de constelacin de PSK. a) BPSK. b) QPSK........................... 34
Figura 4.3 Diagramas de constelacin de QAM. a) 4-QAM. b) 8-QAM. c) 16-QAM.
d) 32-QAM .................................................................................................................. 36
Figura 6.1a Inicializacin (Serie de Fourier) ............................................................. 48
Figura 6.1b Elementos del programa (Serie de Fourier) ............................................ 49
Figura 6.1c Ejemplo (Serie de Fourier) ...................................................................... 50
Figura 6.2a Inicializacin (Transformada de Fourier) ............................................... 50
Figura 6.2b Elementos del programa (Transformada de Fourier) .............................. 51
Figura 6.2c Ejemplo (Transformada de Fourier) ....................................................... 52
Figura 6.3a Inicializacin (Convolucin y Correlacin) ............................................ 52
Figura 6.3b Elementos del programa (Convolucin y Correlacin) .......................... 54
Figura 6.3c Ejemplo (Convolucin y Correlacin) .................................................... 55
Figura 6.4a Inicializacin (Modulacin AM, FM y PM) ........................................... 56
Figura 6.4b Elementos del programa (Modulacin AM, FM y PM) ......................... 57
Figura 6.4c Ejemplo (Modulacin AM) ..................................................................... 58
Figura 6.4d Ejemplo (Modulacin FM) ..................................................................... 58
Figura 6.4e Ejemplo (Modulacin PM) ..................................................................... 58
Figura 6.5a Inicializacin (Decibeles y Watts) .......................................................... 59
Figura 6.5b Elementos del programa (Decibeles y Watts) ......................................... 59
Figura 6.5c Ejemplo (Decibeles y Watts) .................................................................. 60
Figura 6.6a Inicializacin (Muestreo de seales) ....................................................... 61
Figura 6.6b Elementos del programa (Muestreo de seales) ..................................... 61
Figura 6.6c Ejemplo (Muestreo de seales) ............................................................... 62
Figura 6.7a Inicializacin (Muestreo de seal PAM) ................................................ 62
Figura 6.7b Elementos del programa (Muestreo de seal PAM) ............................... 63
Figura 6.7c Ejemplo (Muestreo de seal PAM) ......................................................... 64
Figura 6.8a Inicializacin (Modulacin digital) ......................................................... 64
Figura 6.8b Elementos del programa (Modulacin digital) ....................................... 66
vii

Figura 6.8c Ejemplo (Modulacin PSK) .................................................................... 66
Figura 6.8d Ejemplo (Modulacin QAM) .................................................................. 67
Figura 6.9a. Inicializacin (Codificacin de bloque lineal) ....................................... 67
Figura 6.9b. Elementos del programa (Codificacin de bloque lineal) ..................... 69
Figura 6.9c. Ejemplo (Codificacin de bloque lineal) ............................................... 70
Figura 6.10a. Inicializacin (Codificacin Hamming) ............................................... 70
Figura 6.10b. Elementos del programa (Codificacin Hamming) ............................. 71
Figura 6.10c. Ejemplo (Codificacin Hamming) ....................................................... 72
Figura 6.11a. Inicializacin (Codificacin Cclica) ................................................... 73
Figura 6.11b. Elementos del programa (Codificacin Cclica) .................................. 74
Figura 6.11c. Ejemplo (Codificacin Cclica) ........................................................... 75
Figura 6.12a. Inicializacin (Codificacin Convolucional) ....................................... 75
Figura 6.12b. Elementos del programa (Codificacin Convolucional) ..................... 76
Figura 6.12c. Ejemplo (Codificacin Convolucional) ............................................... 77






















viii

ndice

Declaracin de originalidad ........................................................................................ VI
Agradecimientos........................................................................................................... V
Lista de figuras ............................................................................................................ VI
CAPTULO 1. Introduccin.......................................................................................... 1
CAPTULO 2. Matlab................................................................................................... 2
2.1 Introduccin a Matlab ................................................................................. 2
2.2 Comandos bsicos ....................................................................................... 5
2.2.1 Operadores Relacionales .............................................................. 6
2.2.2 Operadores Lgicos...................................................................... 6
2.3 Matrices ....................................................................................................... 7
2.4 Definicin de funciones .............................................................................. 8
2.5 Interfaz Grfica de Usuario (GUI) ............................................................ 10
CAPTULO 3. Conceptos bsicos de comunicaciones ............................................... 15
3.1 Seales y sistemas ..................................................................................... 16
3.2 Serie de Fourier ......................................................................................... 19
3.3 Transformada de Fourier ........................................................................... 20
3.4 Correlacin ................................................................................................ 22
3.5 Convolucin .............................................................................................. 23
3.6 Modulacin y demodulacin ..................................................................... 24
3.6.1 Modulacin AM ......................................................................... 26
3.6.2 Modulacin FM.......................................................................... 27
3.6.3 Modulacin PM.......................................................................... 27
3.7 Decibeles ................................................................................................... 28
CAPTULO 4. Modulacin Digital............................................................................. 30
4.1 Muestreo .................................................................................................... 30
4.2 Modulacin por Amplitud de Pulsos (PAM) ............................................ 30
4.3 Tipos de Modulacin Digital..................................................................... 32
4.3.1 Modulacin PSK ........................................................................ 33
4.3.2 Modulacin QAM ...................................................................... 35
CAPTULO 5. Codificacin para control de errores .................................................. 37
5.1 Fundamentos y definiciones...................................................................... 37
5.2 Cdigos de bloque ..................................................................................... 39
5.2.1 Cdigos de bloque lineales......................................................... 39
5.2.2 Cdigo Hamming ....................................................................... 42
5.3 Cdigos cclicos ........................................................................................ 45
5.4 Cdigos convolucionales........................................................................... 46
CAPTULO 6. Resultados........................................................................................... 48
6.1 Serie de Fourier ......................................................................................... 48
6.1.1 Elementos del programa ............................................................. 49
6.1.2 Ejemplo ...................................................................................... 49
6.2 Transformada de Fourier ........................................................................... 50
6.2.1 Funcion fft (x,N) ........................................................................ 51
6.2.2 Elementos del programa ............................................................. 51
ix

6.2.3 Ejemplo ...................................................................................... 52
6.3 Convolucin y Correlacin de seales ...................................................... 52
6.3.1 Funcin conv (x, h) .................................................................... 54
6.3.2 Funcin xcorr (x, h).................................................................... 54
6.3.3 Elementos del programa ............................................................. 54
6.3.4 Ejemplo ...................................................................................... 55
6.4 Modulacin AM, FM y PM....................................................................... 56
6.4.1 Funcin amod (x,fc,fs, ' method' )................................................ 56
6.4.2 Elementos del programa ............................................................. 56
6.4.3 Ejemplo de modulacin AM ...................................................... 57
6.4.4 Ejemplo de modulacin FM ....................................................... 58
6.4.5 Ejemplo de modulacin PM ....................................................... 58
6.5 Conversin dB a Watts y Watts a dB ........................................................ 59
6.5.1 Elementos del programa ............................................................. 59
6.5.2 Ejemplo ...................................................................................... 60
6.6 Muestreo de seales .................................................................................. 60
6.6.1 Elementos del programa ............................................................. 61
6.6.2 Ejemplo ...................................................................................... 62
6.7 Muestreo de seal PAM ............................................................................ 62
6.7.1 Elementos del programa ............................................................. 63
6.7.2 Ejemplo ...................................................................................... 64
6.8 Modulacin PSK y QAM .......................................................................... 64
6.8.1 Funcin dmod (x, Fc, Fd, Fs, ' method')...................................... 65
6.8.2 Elementos del programa ............................................................. 65
6.8.3 Ejemplo de modulacin PSK ..................................................... 66
6.8.4 Ejemplo de modulacin QAM ................................................... 67
6.9 Codificacin de Bloque Lineal.................................................................. 67
6.9.1 Funcin encode (msg, n, k, ' method', genmat) ........................... 68
6.9.2 Elementos del programa ............................................................. 69
6.9.3 Ejemplo ...................................................................................... 69
6.10 Codificacin Haming .............................................................................. 70
6.10.1 Elementos del programa ........................................................... 71
6.10.2 Ejemplo .................................................................................... 72
6.11 Codificacin Cclica ................................................................................ 72
6.11.1 Funcin cyclpoly (n, k, 'opt' ).................................................... 73
6.11.2 Elementos del programa ........................................................... 74
6.11.3 Ejemplo .................................................................................... 74
6.12 Codificacin Convolucional.................................................................... 75
6.12.1 Elementos del programa ........................................................... 76
6.12.2 Ejemplo .................................................................................... 76
CAPTULO 7. Conclusiones....................................................................................... 78
Referencias .................................................................................................................. 79
APNDICE A. Archivo .m: Serie de Fourier ............................................................. 80
APNDICE B. Archivo .m: Transformada de Fourier ............................................... 83
APNDICE C. Archivo .m: Convolucin y Correlacin de seales .......................... 84
x

APNDICE D. Archivo .m: Modulacin AM, FM y PM .......................................... 87
APNDICE E. Archivo .m: Conversin dB a Watts y Watts a dB ............................ 89
APNDICE F. Archivo .m: Muestreo de seal .......................................................... 90
APNDICE G. Archivo .m: Muestreo de seal PAM ................................................ 91
APNDICE H. Archivo .m: Modulacin PSK y QAM .............................................. 92
APNDICE I. Archivo .m: Codificacin de Bloque Lineal ....................................... 94
APNDICE J. Archivo .m: Codificacin Hamming................................................... 97
APNDICE K. Archivo .m: Codificacin Cclica .................................................... 101
APNDICE L. Archivo .m: Codificacin Convolucional ........................................ 103
















1

CAPTULO 1. Introduccin
Existen muchas funciones o programas que nos ayudan en el conocimiento de las
comunicaciones. Matlab es un programa orientado a Matrices. En Matlab los
comandos para realizar operaciones son muy sencillos, solo hay que poner el nombre
del comando con sus respectivas entradas para que arroje un resultado. Existen
muchas funciones para el procesamiento de seales, tales como la de Convolucin,
Correlacin, Transformada de Fourier, Transformada de Laplace, etc.
Este documento se divide por captulos segn las unidades o mdulos impartidos en
las clases de comunicaciones. Primero, se hace un breve anlisis sobre el programa
Matlab y sus comandos bsicos, as como la Interfaz Grfica de Usuario, que es una
parte de Matlab en la que se trabaj en este proyecto. Luego se analiza la teora y
conceptos bsicos de modulacin anloga. Se revisan los conceptos de seales
elctricas y sistemas lineales, adems de los conceptos de Correlacin y Convolucin.
Se explican los conceptos de Modulacin AM, FM y PM y sus diversas variantes.
La siguiente parte se refiere a una introduccin a la modulacin digital, empezando
con conceptos bsicos de modulacin digital tales como Muestreo y Seales PAM.
Enseguida se revisan los conceptos bsicos de Modulacin Digital, con sus tres
variantes: PSK, FSK y QAM.
Despus se ven conceptos bsicos referentes a la Codificacin para Control de Errores
(codificacin de canal), en donde se revisan los diversos cdigos ms utilizados y sus
caractersticas, adems se exploran los cdigos cclicos, los cdigos de bloque y los
cdigos convolucionales.
Al final del documento se muestran y explican los resultados producidos del cdigo en
Matlab.



2

CAPTULO 2. Matlab
Hasta hace poco, la mayora de los usuarios de Matlab eran personas que tenan
conocimientos previos sobre lenguajes de programacin como Fortran o C, y que
decidieron cambiarse a Matlab una vez que este software se hizo suficientemente
popular [1]. En los ltimos aos, sin embargo, Matlab se ensea como el primer
lenguaje, sobre todo si se trata de clases en donde se manejan conceptos de
comunicaciones.
2.1 Introduccin a Matlab
MATLAB es un programa interactivo basado en matrices para clculos cientficos y
de ingeniera. Es una abreviatura de Matrix Laboratory, laboratorio matricial. En
muchas clases de ingeniera, la realizacin de clculos con un programa de
computacin matemtico como Matlab sustituye la programacin de computadoras
ms tradicional. Matlab se escribi originalmente en Fortran y despus se rescribi en
C. Originalmente, Matlab fue escrito para simplificar los clculos con matrices y
lgebra linear. Este software es un instrumento muy til al trabajar con matrices y
grficos. Brinda una eficiente base de clculo para un laboratorio de software
donde se exploran los conceptos y se prueban los diseos de sistemas [2].
El lenguaje que Matlab utiliza es de alto nivel. Entre otras cosas integra computacin,
visualizacin y programacin en un entorno de fcil utilizacin donde tanto los
problemas como las soluciones se expresan en una notacin matemtica familiar [3].
La interaccin en Matlab se realiza mediante instrucciones (comandos), funciones y
programas (scripts).
Las herramientas y utilidades de Matlab permiten diversas funcionalidades y estn
agrupadas en "paquetes" o cajas de herramientas (toolboxes). Las cajas de
herramientas de Matlab son libreras de funciones que personalizan este software para
resolver clases especficas de problemas. Estn escritas en cdigo de Matlab para
poder visualizar los algoritmos fuente y agregar nuevos. La extensa seleccin de

3

toolboxes de Matlab nos permite comparar tcnicas y escoger la apropiada para una
particular aplicacin. A Matlab se le pueden aadir paquetes especializados para
algunas tareas.
El sistema de graficacin de Matlab incluye una serie de comandos de muy alto nivel
para visualizacin de imgenes 2D y 3D, animaciones y presentaciones. Tambin
posee comandos de ms bajo nivel que permiten personalizar la presentacin una
figura. Adems permite que el usuario pueda construir una Interfaz Grfica de
Usuario (GUI). Otra de las herramientas que proporciona, es la de Simulink, que es
una aplicacin que permite simular en base a modelos y bloques de sistemas.
Cuando Matlab realiza un clculo, lo hace usando los valores que conoce al momento
en que el comando que lo solicita es evaluado.
Una funcin de Matlab tiene nombre, valor de retorno y argumentos. Una funcin se
llama utilizando su nombre en una expresin o utilizndolo como un comando ms.
Las funciones se definen en ficheros de texto *.m. Una caracterstica de Matlab es que
las funciones que no tienen argumentos no llevan parntesis, por lo que a simple vista
no siempre son fciles de distinguir de las simples variables. Los nombres de las
funciones de Matlab no son palabras reservadas del lenguaje.
Matlab se compone de cuatro ventanas principales:
Ventana de comandos (Comand Window). Es la ventana sobre la que se introducen
todos los comandos.
Espacio de trabajo (Workspace). Ventana donde aparece informacin sobre los
elementos que se han creado. Contiene el conjunto de variables y funciones de
usuario que en un determinado momento estn definidas en la memoria del programa.
Historial de comandos (Comand History). En esta ventana se pueden ver todos los
comandos introducidos.

4

Directorio Actual (Current Directory). Es el directorio donde estn todos los ficheros
*.m de los programas que se ejecutan.
Como cualquier otro lenguaje de computacin, Matlab tiene reglas para el nombre de
las variables. La simplicidad de Matlab implica pocas reglas sobre las variables, las
cuales son:
- Matlab hace distincin entre maysculas y minsculas.
- Las variables pueden contener hasta 31 caracteres.
- Las variables deben empezar con un caracter que sea una letra.
- Los caracteres de puntuacin no son permitidos.
Tipos de archivos
- Archivos m: Son archivos de texto ASCII, con la extensin .m que contienen
conjuntos de comandos o definicin de funciones, los cuales constituyen el
centro de la programacin en Matlab. Estos ficheros se crean y modifican con
cualquier editor de textos.
Existen dos tipos de ficheros .m, los ficheros de comandos (scripts) y las
funciones. Los primeros contienen un conjunto de comandos que se ejecutan
sucesivamente cuando se teclea el nombre del fichero en la lnea de comandos
de Matlab. Y las funciones permiten definir funciones totalmente anlogas a
las de Matlab, con su nombre, sus argumentos y sus valores de retorno.
- Archivos MAT: Son archivos que contienen datos binarios que se guardan
con extensin .mat.
- Archivos MEX: Son archivos Matlab ejecutables compilados a partir de
Fortran o C. Se guardan con la extensin .mex.

5

- Archivos MDL: Archivos con extensin .mdl. Corresponden a modelos
hechos con Simulink.
- Archivos fig: Son archivos .fig que corresponden a la parte grafica de un
programa hecho en la Interfaz Grfica de Usuario (GUI) de Matlab.
2.2 Comandos bsicos
Matlab cuenta con muchos comandos de acuerdo a cada necesidad de usuario,
algunos de los ms bsicos son:
clear - borra la variables que se hayan usado.
help - muestra la ayuda de las funciones y comandos de Matlab.
who, whos - muestra las variables introducidas con sus valores.
plot - grafica los puntos especificados.
cos - funcin coseno.
sin - funcin seno.
square - funcin cuadrada.
sawtooth - funcin diente de sierra.
abs - calcula la magnitud de nmeros complejos o el valor absoluto de nmeros
reales.
exp - exponencial: e
x
.
log - logaritmo natural.
log10 - logaritmo.
rem - residuo de una divisin.

6

fix - redondea hacia cero.
floor - redondea hacia -.
round - redondea hacia el entero ms cercano.
num2str(x,n) - convierte un nmero real x en su expresin por medio de una cadena de
caracteres, con cuatro cifras decimales por defecto (pueden especificarse ms cifras,
con un argumento opcional n).
str2double - convierte una cadena de caracteres representando un nmero real en el
nmero real correspondiente en formato de punto decimal con doble precisin.
length - calcula la longitud de un vector o matriz.
Todo lo que esta seguido del comando % es interpretado por Matlab como
comentario.
2.2.1 Operadores relacionales
El lenguaje de programacin de Matlab dispone de los siguientes operadores
relacionales:
< menor que
> mayor que
<= menor o igual que
>= mayor o igual que
== igual que
~= distinto que
2.2.1 Operadores lgicos

7

Los operadores lgicos de Matlab son los siguientes:
&& and
|| or
~ negacin lgica
2.3 Matrices
Matlab est diseado fundamentalmente para clculo matricial. En Matlab se trabaja
bsicamente con solo un tipo de objeto, una matriz numrica rectangular con posibles
entradas complejas; todas las variables son representadas con matrices. En algunos
casos, matrices de una fila y una columna interpretadas como escalares, o matrices de
una sola fila o una sola columna interpretadas como vectores.
Como la mayora de las calculadoras cientficas, Matlab ofrece muchas importantes
funciones para matemticas, ingeniera y las ciencias. Adems de funciones comunes,
Matlab ofrece cientos de funciones especializadas y algoritmos que son tiles para
resolver problemas especficos.
Como en casi todos los lenguajes de programacin, en Matlab las matrices y vectores
son variables que tienen nombres. Para definir una matriz no hace falta establecer de
antemano su tamao. Matlab determina el nmero de filas y de columnas en funcin
del nmero de elementos que se proporcionan (o se utilizan). Las matrices se definen
por filas; los elementos de una misma fila estn separados por blancos o comas,
mientras que las filas estn separadas por intro (Enter) o por caracteres punto y coma
(;). Un ejemplo es el siguiente:
A=[1 2 3; 4 5 6; 7 8 9]
A = 1 2 3
4 5 6

8

7 8 9
Matlab dispone de varias formas de definir matrices. El introducirlas por teclado slo
es prctico en casos de pequeo tamao y cuando no hay que repetir esa operacin
muchas veces. Matlab accede a los elementos de una matriz por medio de los ndices
de fila y de columna encerrados entre parntesis y separados por una coma.
Matlab cuenta con varias funciones y operaciones orientadas a definir con gran
facilidad matrices de tipos particulares.
2.4 Definicin de funciones
Las funciones en Matlab son programas que toman las variables que se les pasan
(variables de entrada), luego realiza clculos y manipulaciones con ellas y devuelve
los resultados (variables de salida). Estas funciones definidas se caracterizan porque la
primera lnea comienza por la palabra function, el formato es el siguiente:
function [variables de salida] = nombredefuncin(variables de entrada)
Puede haber funciones sin valor de retorno y tambin sin argumentos. Los argumentos
son los datos de la funcin y los valores de retorno son sus resultados. Si no hay
valores de retorno se omiten los corchetes y el signo igual (=); si slo hay un valor de
retorno no hace falta poner corchetes. Tampoco hace falta poner parntesis si no hay
argumentos.
En Matlab no se modifican los argumentos que recibe en la funcin, esta es una
diferencia que presenta con C, C++ y Java. Los valores de retorno son los que mandan
los resultados de una funcin. Estos valores pueden ser mltiples y matriciales. El
nmero de argumentos y el de valores de retorno puedes ser fijos o no, esto depende
de cmo el usuario llama a la funcin.
Las variables definidas dentro de una funcin son variables locales, esto significa que
son inaccesibles desde otras partes del programa y no interfieren con variables del

9

mismo nombre definidas en otras funciones o partes del programa. Estas variables
pertenecen al propio espacio de trabajo de la funcin y no son vistas desde otros
espacios de trabajo. Para que la funcin tenga acceso a variables que no han sido
pasadas como argumentos es necesario declarar dichas variables como variables
globales, tanto en el programa principal como en las distintas funciones que deben
acceder a su valor.
Los argumentos que recibe una funcin de Matlab se copian a variables locales si no
son modificados por dicha funcin. Esto tiene importantes consecuencias en trminos
de eficiencia y ahorro de tiempo de clculo. Sin embargo, si dentro de la funcin se
realizan modificaciones sobre los argumentos recibidos, antes se sacan copias de
dichos argumentos a variables locales y se modifican las copias.
Los valores de retorno se calculan dentro de la funcin, pero en Matlab no hace falta
calcular siempre todos los posibles valores de retorno de la funcin, sino slo los que
el usuario espera obtener en la sentencia de llamada a la funcin. En cualquier funcin
existen dos variables definidas de modo automtico, llamadas nargin y nargout, que
representan respectivamente el nmero de argumentos y el nmero de valores de
retorno con los que la funcin ha sido llamada.
La ejecucin de una funcin termina cuando se llega a su ltima sentencia ejecutable.
La sentencia return se utiliza para forzar a que una funcin termine de ejecutarse y
devuelva inmediatamente el control al entorno de llamada.
Matlab dispone de otra forma de pasar a una funcin un nmero variable de
argumentos por medio de la variable varargin, que es un vector de celdas (cell array).
Un vector de celdas es un vector cuyos elementos son cada uno de ellos una variable
de cualquier tipo. Esta variable recoge todos los argumentos a partir de una
determinada posicin.
De igual forma, una funcin puede tener un nmero indeterminado de valores de
retorno utilizando varargout, que es tambin un vector de celdas que agrupa los

10

ltimos valores de retorno de la funcin.
2.5 Interfaz Grfica de Usuario (GUI)
Matlab Guide es un entorno de programacin visual que ofrece Matlab para poder
realizar y ejecutar programas de simulacin, tiene las caractersticas bsicas de todos
los programas visuales como Visual Basic o Visual C++.
El lenguaje ms habitual para crear GUIs es Java, ya que tiene la enorme ventaja de
funcionar en cualquier mquina, sin embargo Java resulta muy lento para hacer
clculos eficientemente. En comparacin con Java, Matlab es ms poderoso al
realizar clculos grandes.
La GUI consta de dos archivos: uno .m que contiene el cdigo del programa, y otro
.fig que es la parte grfica. Las dos partes estn unidas a travs de las subrutinas de
llamada (callback). La cadena de invocacin es una cadena que consiste en un
comando, un conjunto de rdenes o una llamada de funcin. En esta cadena se
especifican todas las tareas de cmputo que deben ejecutarse al elegirse la opcin.
No siempre es necesario definir la propiedad callback, ya que algunos objetos no
ejecutan ningn comando de Matlab.
El archivo .m que se crea tiene una estructura predeterminada. Consta de un
encabezado y el cdigo correspondiente a las subrutinas. Este archivo es construido
automticamente por Matlab y las lneas de cdigo que aparecen son las que crean la
interfaz que aparece en el archivo .fig. El archivo de inicializacin define los
parmetros bsicos de la interfaz y crea un conjunto de identificadores (handles) para
cada uno de los objetos que vayan apareciendo sobre la interfaz.
Cada uno de los objetos de Matlab tiene un identificador nico. Algunos grficos
tienen muchos objetos, por lo tanto tienen mltiples handles. El objeto raz (pantalla)
es siempre nico y su identificador es el cero. El identificador de las ventanas es un
entero, que aparece en la barra de nombre de dicha ventana. Los identificadores de

11

otros elementos grficos son nmeros flotantes (float), que pueden ser obtenidos como
valor de retorno y almacenados en variables de Matlab.
El objeto ms general de una GUI es la pantalla (screen). Este objeto es la raz de
todos los dems objetos y slo puede haber un objeto pantalla. Una pantalla puede
contener una o ms ventanas (figures). A su vez cada una de las ventanas puede tener
uno o ms ejes de coordenadas (axes). Una ventana puede tener tambin controles
(uicontrol) tales como botones, barras de desplazamiento, botones de seleccin o de
opcin, etc.) y mens (uimenu). Finalmente, los ejes pueden contener los seis tipos de
elementos grficos que permite Matlab: lneas (line), rectngulos (rectangle),
polgonos (patches), superficies (surface), imgenes bitmap (image) y texto (text).
Todos los valores de las propiedades de los elementos de Matlab (ej. color, etiqueta,
valor, posicin, texto, etc.) y los valores de las variables del programa se guardan en
una estructura, los cuales son accedidos mediante un nico y mismo puntero. Una
estructura (struct) es una agrupacin de datos de tipo diferente bajo un mismo nombre.
Estos datos se llaman miembros (members) o campos (fields).
En una GUI, el flujo de datos est controlado por las acciones en la interfaz. Los
comandos para crear una interfaz con el usuario se escriben en un guin, la interfaz
invoca el guin que se ejecute, mientras la interfaz del usuario permanece en la
pantalla aunque no se haya completado la ejecucin del guin.
Cuando se interacta con un control, el programa registra el valor de esa opcin y
ejecuta los comandos prescritos en la cadena de invocacin. Al completarse la
ejecucin de las instrucciones de la cadena de invocacin, el control vuelve a la
interfaz para que pueda elegirse otra opcin del men. Este ciclo se repite hasta que
se cierra la GUI.
El control guarda un string que describe la accin a realizar cuando se invoca, puede
consistir en un solo comando de Matlab o una secuencia de comandos, o en una
llamada a una funcin [4].

12

Las Componentes principales de GUIDE son:
- Barra de Mens: Es donde se encuentran las funciones elementales de edicin
de GUIs.
- Paleta de Componentes: Contiene los controles (uicontrols) que se muestran
en la GUI.
- Barra de Herramientas: Es donde se encuentran los siguientes botones:
o Alineacin de Componentes (Alignment tool): esta opcin permite
alinear los componentes que se encuentra en el rea de trabajo (Layout
Area) de manera personalizada.
o Propiedades del Inspector (Property Inspector): Contiene todas las
propiedades de cada objeto en forma personalizada.
o Navegador de Objetos (Object Browser): Muestra todos los objetos
que se encuentran en la figura (en forma de rbol).
o Editor de Mens (Menu Editor): El redactor de Men crea mens de
ventana y mens de contexto.
o Editor de orden (Tab Order Editor): Es para editar el orden de los
objetos de la GUI.
o Editor de archivos M (M-File Editor): Despliega en pantalla el archivo
.m.
Controles de la GUI
Los controles de la interfaz con el usuario en Matlab se especifican con la orden
uicontrol, y se localizan en la parte izquierda de la pantalla principal de la GUI, son
los siguientes:

13


Figura 1. Controles de la GUI.
- Men desplegable (Popup Menu). Provee una lista de opciones.
- Botones (Push Button). Invoca un evento inmediatamente.
- Caja de listas (List Box). Muestra una lista deslizable.
- Casilla de verificacin (Check Box). Estn diseadas para realizar operaciones
de encendido/apagado. Indican el estado de una opcin o atributo.
- Botn de radio (Radio Button). Indica una opcin que puede ser seleccionada.
Cuando slo se usa un botn de radio, no existe ninguna diferencia funcional
con respecto a una casilla de verificacin. Los botones de radio en grupo son
mutuamente exclusivos (es decir, si un botn esta encendido, todos los dems
botones se apagan), mientras que las casillas de verificacin son
independientes entre s.
- Texto esttico (Static Text). Muestra un string de texto en una caja.
- Barra deslizadora (Slider). Usado para representar un rango de valores.
- Texto editable (Text Edit). Permite al usuario teclear una cadena de entrada.

14

- Panel de botones (Panel Button). Sirve para agrupar dispositivos.
- Botn de palanca (Toggle Button). Genera una accin que indica un estado
binario. (encendido o apagado).
- Grupo de botones (Button Group) Permite exclusividad de seleccin con los
radio button.
- Active x. Permite crear aplicaciones exportables.















15

CAPTULO 3. Conceptos bsicos de Comunicaciones.
Los elementos de un sistema de comunicacin son:
Fuente de informacin. La fuente de informacin puede ser anloga, por ejemplo: voz
o video o puede ser digital, por ejemplo: informacin binaria proveniente de una
computadora.
Codificacin de fuente. La codificacin de fuente es un proceso que convierte la
informacin de la fuente a digital, si esta es anloga y adems convierte esta
informacin binaria a otro cdigo, que requiere menos cantidad de bits por fraccin
de informacin.
Codificacin de canal. Esta codificacin agrega informacin redundante a la salida de
la codificacin de fuente, para asegurar su integridad, corregir errores y a veces su
seguridad.
Modulador digital. La modulacin realizada en esta parte se hace para adecuar la
informacin (banda base) al medio que se use para su transmisin. (pasa-banda)
Generalmente es una translacin de frecuencia o una translacin de nivel o ambas.
Canal de comunicacin. Medio fsico sobre el cual se enva la informacin de
transmisor a receptor. Este medio puede ser un cable, fibra ptica, el aire o un enlace
satelital.
De-modulador digital. Proceso inverso a la modulacin, se hace una translacin de
frecuencia de pasa-banda a banda base. La salida del de-modulador es una
aproximacin de la informacin original.
Decodificador de canal. Reconstruye la aproximacin de la salida del de-modulador a
la informacin original del modulador de canal, haciendo uso de la informacin
redundante agregada en el modulador de canal del transmisor.
Decodificador de fuente. Reconstruccin final de la informacin original de la fuente.

16

La diferencia entre la versin original de la fuente y la salida del decodificador de la
fuente es una medida de la distorsin del sistema de comunicacin.
3.1 Seales y sistemas
Seales. Es una cantidad elctrica que se define por una funcin que describe cmo se
desarrolla una variable fsica en el tiempo. Las seales estn definidas por tres
caractersticas principales: amplitud, fase y frecuencia. La amplitud es el valor escalar
instantneo que se indica en unidades, normalmente Volts de la seal. La frecuencia
es un valor que nos indica, asumiendo que una seal es peridica, el nmero de veces
que el periodo se repite en un intervalo de tiempo, las unidades de frecuencia son
Hertz. La fase es un valor que indica el valor instantneo de la amplitud dentro del
periodo de la seal.
Clasificacin de seales. Una seal puede ser aleatoria o determinstica, puede ser
peridica o no peridica, puede ser continua o puede ser discreta. Las seales
aleatorias son en las que hay cierto grado de incertidumbre por su valor de amplitud
en cualquier tiempo. Las seales determinsticas, son aquellas que no hay
incertidumbre con respecto a su valor en cualquier tiempo. Las seales peridicas son
aquellas que sus valores se repiten en un cierto periodo de tiempo. Las seales no
peridicas no repiten sus valores en el tiempo. Las seales discretas son aquellas que
tiene un rango de valores contable y cada uno de estos valores puede ser asignado a un
nmero real. Las seales continuas tienen un rango de valores infinito y presentan
cambios de valores que se pueden asignar a un nmero.
Ejemplos de seales:
Funcin Escaln Unitario. Es una funcin matemtica que tiene como caracterstica el
tener un valor de 0 para todos los valores negativos de su argumento, y de 1 para
todos los valores positivos de su argumento.

17





Funcin Rampa. Es una seal que cambia constantemente con el tiempo.





Funcin Sinc. Tiene una singularidad evitable en cero, que generalmente se redefine
especficamente como igual a 1.






Funcin Seno. Es aquella que asocia a cada ngulo el valor del seno correspondiente.

<
=
>
=
0 0
0
2
1
0 1
) (
t
t
t
t u
) ( ) (
0 0
0
) ( t tu d u
t
t t
t ramp = =

<
>
=
t
t sen
t c
t
t ) (
) ( sin =
Figura 3.1. Funcin Escaln
unitario.
Figura 3.2 Funcin Rampa.
Figura 3.3. Funcin Sinc.

18


y(t)=Asin(t)



Funcin Coseno. Aquella que asocia a cada ngulo el valor del coseno
correspondiente.

y(t)=cos(t)

Funcin Triangular. Presenta unas velocidades de subida y bajada (Slow Rate)
constantes.

y(t)=


Funcin Diente de Sierra.






Figura 3.4. Funcin Seno.
Figura 3.5. Funcin Coseno.
Figura 3.6. Funcin Triangular.
Figura 3.7. Funcin Diente de sierra

19

Funcin Cuadrtica.








3.2 Serie de Fourier
La Serie de Fourier sirve para representar seales continuas peridicas por medio de
una serie de componentes senoidales. Constituyen la herramienta matemtica bsica
del anlisis de Fourier empleado para analizar funciones peridicas a travs de la
descomposicin de dicha funcin en una suma infinitesimal de funciones senoidales
mucho ms simples (como combinacin de senos y cosenos con frecuencias enteras)
[5].
El espectro de frecuencia de esta serie muestra las componentes sinusoidales que
forman una seal de tiempo continuo dada. En general, el espectro de frecuencia es
una funcin compleja de la variable de frecuencia y es usualmente especificada en
trminos de un espectro de amplitud y uno de fase. En el caso de seales peridicas, el
espectro de frecuencia de la seal se puede generar mediante la representacin de la
seal como una suma de sinusoides, que se conoce como una Serie de Fourier. Esta
denominacin se conoce as en honor del fsico francs Jean Baptiste Fourier (1768
1830). Cabe sealar que tambin se puede generar una representacin del dominio de
la frecuencia de una seal no peridica. Esta representacin se define en trminos de la
Transformada de Fourier. En contraste con una seal peridica, los espectros de una
seal no peridica consisten en una continuacin de frecuencias.
Se busca poner cualquier funcin x(t) como un sumatoria de senos y cosenos, esto es,
como un sumatoria de

puesto que cualquier funcin senoidal se puede poner


Figura 3.8. Funcin Cuadrtica.

20

en forma de exponencial compleja. Para una seal peridica definimos el desarrollo en
serie de Fourier como:

A la vista de la exponencial compleja podemos observar que al variar los valores de k
tenemos una funcin peridica con periodo:

Los coeficientes del desarrollo en serie de Fourier son:


Por lo tanto, la Serie de Fourier se define:


3.3 Transformada de Fourier
Una caracterstica clave de la teora de las Series de Fourier de las seales peridicas
es la definicin de los espectros de amplitud y de fase de seales peridicas. Se sabe
que el espectro de amplitud de salida es igual al producto del espectro de amplitud de
la seal peridica de entrada por la funcin magnitud | H() | del sistema, donde
y el espectro de la fase de la salida es igual a la suma del espectro de la fase
de la seal peridica de entrada ms la funcin de la fase L H() del sistema.
La Transformada de Fourier se usa para representar una seal no peridica en tiempo

21

continuo como una superposicin de seales senoidales complejas [6].
La Transformada de Fourier muestra una secuencia en la que se aumenta el periodo de
una seal peridica.
La Transformada rpida de Fourier es simplemente un algoritmo rpido para la
evaluacin numrica de integrales de Fourier y su importancia radica en la rapidez de
clculo conseguida, importante en otro tipo de aplicaciones: ecualizacin y filtrado en
equipos de audio/vdeo en tiempo real, comunicaciones, etc.
La diferencia de velocidad de clculo entre la tradicional Transformada discreta y la
FFT aumenta segn aumenta el nmero de muestras a analizar.
Sea x(t) una funcin continua por partes en el intervalo [-T,T] para todo T > 0 y tal que

exista, la Transformada de Fourier se define como:



La Transformada F () describe la seal x(t) como una funcin de la frecuencia
senoidal y se llama la representacin de x(t), en el dominio de la frecuencia. Esta
ecuacin convierte la seal en el dominio del tiempo, en su representacin en el
dominio de la frecuencia.

Figura 3.9. Transformada de Fourier
Amplitud
(Potencia)
Medicin en el
dominio del tiempo
Medicin en el
dominio de la frecuencia

22

Propiedades de la Transformada de Fourier
Tabla 1. Propiedades de la Transformada de Fourier.
Linealidad a(x) + b(y) aX(j) + bY(j)
Translacin en el tiempo
x(t-t0) ( ) e
e
j X e
t j
0

Translacin en la frecuencia
( ) t x e
t je

x(j(-0))
Conjugacin x*(t) X*(-j )
Inversin en el tiempo x(-t) X(-j )
Cambio de escala en tiempo y
frecuencia
x(at)
|
.
|

\
|
a
j
X
a
e 1

Convolucin x(t)*y(t) X(j )Y(j )

3.4 Correlacin
Una herramienta til en anlisis de seales y sistemas es la Correlacin. La
Correlacin obtiene la informacin sobre las seales en base a promedios temporales y
su transformada de Fourier permite obtener funciones de densidad espectral de energa
o potencia, dependiendo de las caractersticas de las seales y sistemas bajo estudio.
Las herramientas basadas en Correlacin de seales y su Transformada de Fourier, son
usadas en el anlisis de procesos.
La Correlacin nos da una medida de la similitud entre dos seales. Es comparar las
caractersticas de una seal conocida con las de una seal desconocida.



23

Autocorrelacin. Es la correlacin de una seal consigo misma. Representa la
similitud entre una seal y ella misma desplazada. El mximo de una autocorrelacin
se obtiene cuando no hay desplazamiento (t = 0).
La Autocorrelacin se usa considerablemente en el anlisis de seales. Es
especialmente til en la deteccin o reconocimiento de seales enmascaradas por ruido
agregado. La Autocorrelacin suele emplearse para encontrar periodos. La frmula
para realizar la autocorrelacin de una seal x(t) es:


La Correlacin cruzada implica el cambiar de puesto de una seal y multiplicarse por
otra seal. La Correlacin cruzada expresa que tanta similitud tienen dos seales de
tiempo diferentes a(t) y b(t) para diferentes desplazamientos de tiempo.
3.5 Convolucin
La Convolucin nos ayuda a determinar la respuesta que un sistema ejerce en una
seal de entrada. Cualquier seal puede expresarse como una superposicin de
impulsos unitarios de diferentes amplitudes.
Un sistema invariante en el tiempo no cambia su comportamiento con el tiempo,
entonces la respuesta al impulso h(t) a una serie de impulsos desplazados d (t - t) se
puede expresar como h(t - t). Cuando esos impulsos desplazados los afectamos por la
amplitud de una seal f (t) podemos expresar una salida en trminos de este impulso
desplazado y la respuesta al impulso del sistema f1(t) [h(t) d (t- t )]= f1(t)h(t- t) =y1(t).
Luego, podemos expresar la salida y (t) en trminos de su respuesta al impuso y de su
entrada si integramos todos los puntos de la funcin, as quedara definida la Integral
de la Convolucin para sistemas invariantes en el tiempo.



24

Interpretacin grfica de la convolucin.
La interpretacin grfica de la convolucin permite visualizar los resultados de las ms
abstractas operaciones matemticas. Supngase que se quiere hallar la convolucin de
dos funciones dadas f
1
(t) y f
2
(t). Las operaciones que se efectan se basan en la
integral de la convolucin:
Primero se enumeran, paso a paso, las operaciones necesarias:
1. Reemplazar t por en f
1
(t), quedando f ().
2. Reemplazar t por (-) en f
2
(t). Esto hace girar a la funcin f
2
() alrededor del eje
vertical pasando por el origen del eje.
3. Trasladar todo el sistema de referencia de f (-) en una cantidad t. Entonces, la
traslacin t es la diferencia entre el sistema de referencia mvil y el fijo. El origen del
sistema mvil esta en = t; el origen fijo, en = 0. La funcin en el sistema mvil
representa f
2
( t -); la funcin en el sistema fijo, f
1
().
4. En cualquier desplazamiento relativo entre los ejes de referencia, por ejemplo, t
0
,
debe hallarse el rea bajo el producto de las dos funciones.
5. Este procedimiento debe repetirse para diferentes valores t = t
0
desplazando
progresivamente el sistema mvil y hallando los valores de la integral de convolucin
en esos valores de t. Para funciones continuas esto puede hacerse por integracin
directa. Para funciones continuas por tanto, el producto ser continuo por tramos y
deber integrarse sobre cada seccin continua.
6. Si el desplazamiento del sistema mvil es a lo largo del eje negativo (a la
izquierda), t es negativo. Si es sobre el eje positivo (a la derecha), t es positivo.
3.6 Modulacin y Demodulacin
Modulacin es el proceso de preparar la seal para envi por un medio de transmisin,

25

este proceso se puede llevar a cabo en banda base, es decir la banda de frecuencias
original de la seal o por medio de una translacin de frecuencia se puede hacer en lo
que se llama modulacin pasa banda, en este caso existe una translacin de frecuencia
de una banda de frecuencias baja a una banda de frecuencias alta. La figura 3.10
muestra la operacin de modulacin y su contraparte, la de- modulacin en la figura
3.11. En la modulacin se pasa la seal de una banda base (baja frecuencia) a una pasa
banda (alta frecuencia). En la demodulacin se pasa la seal de una pasa banda (alta
frecuencia) a una banda base (baja frecuencia). Tpicamente la modulacin se lleva a
cabo modificando alguna de las caractersticas de las seales; amplitud, frecuencia o
fase.
Debido a este proceso, la seal de alta frecuencia denominada portadora, sufrir la
modificacin de alguno de sus parmetros, siendo dicha modificacin proporcional a
la amplitud de la seal de baja frecuencia denominada moduladora.
A la seal resultante de este proceso se la denomina seal modulada y la misma es la
seal que se transmite.

Figura 3.10. Modulacin de una seal
La demodulacin es el proceso inverso a la modulacin.

Figura 3.11. Demodulacin de una seal

26

3.6.1 Modulacin en amplitud
Modulacin en amplitud es el proceso de cambiar la amplitud de una portadora de
frecuencia relativamente alta de acuerdo a la amplitud de la seal modulante
(informacin).
Con la modulacin en amplitud la informacin se imprime sobre la portadora en forma
de cambios de amplitud.
La onda modulante modula a la onda portadora tanto en sus partes positivas como
negativas, es decir, produce una seal con dos bandas laterales.
La seal modulada tendr una amplitud que ser igual al valor pico de la seal
portadora ms el valor instantneo de la seal modulada.
La seal modulada en amplitud es:

Tipos de modulacin AM.
Al modular en amplitud, el ancho de banda resultante es el doble del ancho de banda
de la informacin original, debido a la generacin de dos bandas laterales que
desafortunadamente contienen la misma informacin cada una de ellas. Por lo tanto, se
han desarrollado tcnicas para reducir el ancho de banda necesario y de ah han
resultado varios tipos de modulacin en amplitud, los cuales son los siguientes:
Modulacin en amplitud con doble banda lateral. (AM-DSB)
Este es el tipo de modulacin en la cual al hacer la multiplicacin de las dos seales se
generan las dos bandas laterales de igual tamao.
Modulacin en amplitud con banda lateral suprimida. (AM-SSB)

27

Para evitar que se tenga que usar el doble de ancho de banda requerido se usa la
modulacin AM-SSB, en este tipo de modulacin, por medio de un filtro se elimina
una de las bandas laterales, despus de la modulacin y se usa una sola banda lateral,
reduciendo por lo tanto el ancho de banda requerido.
Modulacin con banda lateral residual. (AM-VSSB)
En este tipo de modulacin se elimina solo parte de una de las bandas laterales, y se
usa esa parte para modular informacin adicional.
3.6.2 Modulacin en frecuencia
La modulacin en frecuencia se obtiene variando la frecuencia instantnea de la
portadora en funcin de la informacin. En este caso la seal modulada mantendr fija
su amplitud y el parmetro de la seal portadora que variar es la frecuencia, y lo
hace de acuerdo a cmo vare la amplitud de la seal moduladora.
La expresin matemtica de la seal modulada es:
V
p
(t) = V
p
sen[2 (f
p
+ f sen(2 f
m
t) ) t]
f se denomina desviacin de frecuencia y es el mximo cambio de frecuencia que
puede experimentar la frecuencia de la seal portadora. A la variacin total de
frecuencia desde la ms baja hasta la ms alta, se le conoce como oscilacin de
portadora.
3.6.3 Modulacin en fase
En este tipo de modulacin la amplitud de la portadora es constante y la caracterstica
que contiene la informacin es el ngulo de la fase instantnea de la seal portadora.
La seal modulada es:
V (t) = V
p
cos[ 2 f
p
t + sen(2 f
m
t) ]

28

La diferencia que hay con la seal modulada en frecuencia es que en la modulacin
en fase, es independiente de la frecuencia.
3.7 Decibeles
Es la dcima parte del Bel, que es utilizado en sistemas de comunicacin para medir
la relacin de dos magnitudes (elctricas y acsticas). Es una unidad de medida
adimensional y logartmica.
En sistemas de comunicacin muy a menudo es necesario confrontar las relaciones
entre las mediciones de varios niveles de seal y medir niveles exactos de seal a
travs de todo el sistema. Es deseable que los clculos para determinar esas relaciones
o clculos exactos sean lo ms simple posible para evitar la posibilidad de error. Para
llevar a cabo esto se ha seleccionado un sistema de clculo basado en el decibel (dB).
El decibel es una cantidad que indica una relacin en lugar de una cantidad en s, por
ejemplo, nos indica que una cantidad es 5 veces mayor que otra o que una cantidad es
10 veces mayor que otra. El dB es una relacin entre dos cantidades que se miden con
un mismo parmetro. Ej. Potencia o Voltaje.
Cuando se consideran las condiciones normales en un sistema, se encuentra que una
cantidad q1 es mayor que una cantidad q2 nos referimos a una ganancia de seal y
cuando una cantidad q1 es menor a una cantidad q2 nos referimos a una prdida de
seal y como usamos valores logartmicos (dB), un signo positivo indicar una
ganancia y un signo negativo indicar una prdida.
El dB es usado en un sistema para representar solamente prdida o ganancia.
Dado que los niveles de seal en los sistemas de comunicacin son muy pequeos y
estn representados por relaciones en lugar de cantidades fijas, se hace necesario
encontrar una forma de representar estos valores. La representacin en Decibeles es
una manera sencilla y que abarca una amplia gama de valores en una cierta escala.
Debido a esto se usan los valores en una escala logartmica. Aunque esto parezca

29

complicado, es una manera sencilla de representar valores muy dispares y con una
exactitud aceptable. As un valor en Decibeles es una representacin logartmica de
una relacin de dos valores. Para expresar ganancia de potencia directamente se usa
esta ecuacin:
Ganancia de potencia en dB =10 log
10


En donde P
1
es la potencia de la seal en la entrada del sistema, y P
2
la potencia a la
salida del mismo.
Para expresar ganancia de potencia en trminos de voltaje y corriente se usan estas
ecuaciones:
Ganancia de voltaje en dB =20 log
10


Ganancia de corriente en dB =20 log
10


En donde V
1
es el voltaje de la seal en la entrada del sistema, V
2
el voltaje a la salida
del mismo, I
1
es la corriente de la seal en la entrada del sistema, y I
2
la corriente a la
salida del mismo.
Otro estndar que se usa muy comnmente es el de dBm. Esta seal de referencia para
mediciones de seal representa una relacin de una seal de un valor fijo de 1 miliWatt
o 1 x 10
-3
Watts y otra seal desconocida.
dB =10 log
10






30

CAPTULO 4. Modulacin Digital
La Modulacin es la alteracin sistemtica de una onda portadora de acuerdo con el
mensaje (seal modulada). En donde la seal de entrada es una seal digital binaria.
4.1 Muestreo
Es el proceso de extraer una seal discreta de una seal en tiempo continuo. Sea x(t)
una seal continua en el tiempo y sea el periodo de muestreo T
s
> 0 un nmero fijo. A
partir de x(t), la seal discreta:
x(n)=x(nT
s
)
S la seal es muestreada a una velocidad Fs (muestras/s) se obtiene que:


Teora de muestreo.
Si m(t) es una seal que tiene una banda de frecuencias limitada, tal que la frecuencia
mxima de esta seal es f
M
. Si hacemos que los valores de m (t) sean validos solo a
intervalos regulares separados por los tiempos T
s
1/2 f
M
, es decir, la seal es
peridicamente muestreada cada T
s
segundos. Entonces, las muestras m (nTs), donde
n es un entero, determinan completamente la seal y la seal puede ser reconstruida
con esas muestras sin ninguna distorsin.
El tiempo T
s
es llamado el tiempo de muestreo. El teorema muestreo indica que la
velocidad de muestreo debe ser lo suficientemente rpida, de manera que al menos
dos muestras sean tomadas en el periodo correspondiente al componente espectral de
mxima frecuencia encontrada en la seal (velocidad Nyquist).
4.2 Modulacin por amplitud de pulsos (PAM)

31

Describe la conversin de seales analgicas en seales de pulsos donde la amplitud
del impulso indica la informacin analgica. Esta seal PAM (pulse-amplitude
modulation) se puede convertir en una seal digital PCM (Pulse-code modulation) de
banda base, la que a su vez se modula sobre una portadora de sistemas de
comunicacin digital pasa banda. Por consiguiente, el proceso de conversin
analgica a PAM es el primer paso en la conversin de una forma de onda analgica
en una seal PCM digital.
El teorema de muestreo, permite reproducir una forma de onda analgica con valores
de muestreo de dicha forma de onda y funciones ortogonales (senx/x). El objetivo de
la sealizacin PAM es proporcionar otra forma de onda con apariencia de pulsos, y
que aun as contenga la informacin que estaba presente en la forma de onda
analgica.



Figura 3.12. Seal PAM
Como se usan pulsos, se puede esperar que el ancho de banda de la forma de onda
PAM sea ms ancha que el de la forma de onda analgica. No obstante, los pulsos
son ms prcticos de utilizar en sistemas digitales. La velocidad de los pulsos f
s
, en el
caso de PAM es la misma que la requerida por el teorema de muestreo, es decir, f
s
>
2B, donde B es la frecuencia ms alta en la forma de onda analgica y 2B se llama
tasa (relacin) de Nyquist.
Existen dos clases de seales PAM: PAM que utiliza muestreo natural (compuerta) y
la PAM que utiliza muestreo instantneo para producir un pulso de cresta plana. Las
de cresta plana son ms tiles para la conversin en PCM; sin embargo, las de
muestreo son ms fciles de generar y usar en otras aplicaciones.

32

En la modulacin de amplitud de pulsos, la amplitud de un tren de pulsos de ancho
constante vara en proporcin a los valores muestreados de la seal moduladora.
Usualmente, los pulsos se toman a intervalos de tiempo equidistantes.
4.3 Tipos de Modulacin Digital
Modulacin por amplitud (Amplitude Shift Keying ASK). Tipo de modulacin en la
cual una seal digital binaria, es representada con variaciones de amplitud, es decir un
nivel v
1
(t) si la seal es cero y una seal v
2
(t) si la seal es uno.
Modulacin por frecuencia (Frequency Shift Keying FSK). Tipo de modulacin en la
cual una seal digital binaria, es representada con variaciones de frecuencia, es decir
una frecuencia f
1
si la seal es cero y una frecuencia f
2
si la seal es uno.
Modulacin por fase (Phase Shift Keying PSK). Tipo de modulacin en la cual una
seal digital binaria, es representada con variaciones de fase, es decir una fase
1
si la
seal es cero y una fase
2
si la seal es uno.
Modulacin de amplitud en cuadratura (Quadrature Amplitude Modulation QAM). Se
trata de un caso especial de PAM (Pulse Amplitude Modulation), es la superposicin
de dos portadoras en cuadratura moduladas en amplitud con la misma frecuencia pero
desfasadas 90
0
.






ASK
FSK
PSK
QAM
Figura 4.1. Tipos de Modulacin Digital.

33

Diagrama de constelacin
Es un mtodo de representar los estados de smbolo en un modem de paso de banda
modulado de portadora en trminos de su amplitud y fase. Tpicamente, el eje
horizontal se toma como referencia para los smbolos que estn en fase con la
portadora cos
c
t ), y el eje vertical representa la componente de frecuencia en
cuadratura, sen
c
t). Se utiliza para representar diferentes tipos de seales digitales.
La fase de la seal es representada por el ngulo alrededor del crculo y la amplitud
por la distancia del origen al centro del crculo.
4.1 Modulacin PSK
PSK con mltiples valores (M-ary PSK)
En BPSK se transmite cada bit individualmente, en QPSK se transmite un smbolo
que representa 2 bits. Si continuamos con esta tendencia, se puede ampliar la cantidad
de bits representados por un smbolo, es decir representar N bits con un smbolo,
extendidos sobre el tiempo NT
b
y con 2N =M smbolos. Representando los smbolos
con formas de onda de duracin NT
b
= T
s
y con diferencia de fase igual a 2/M.
PSK binaria (BPSK). En este tipo de modulacin, la seal transmitida es una onda
senoidal de amplitud fija A. Tiene una fase fija cuando la seal es un 1 y una fase
180 diferente cuando la seal es 0.
PSK en cuadratura (QPSK). Esta forma de modulacin genera una secuencia de
smbolos, en lugar de una secuencia de bits, es decir, adems de la fase se usan las
seales de cuadratura sen(t) y cos(t), para la modulacin. El cambio de fase y las
seales de cuadratura nos dan la posibilidad de tener cuatro combinaciones de salida:
la salida sen(t) con cambios de fase de 180 y la salida cos(t) con cambios de fase de
180.
As como BPSK cambia la fase en 180, QPSK lo hace en 90. El desplazamiento de
fase en cuadratura (QPSK) es una extensin del mtodo de PSK simple. En QPSK la

34

seal puede tomar uno de los cuatro ngulos de fase posibles, mutuamente en
cuadratura, cada uno corresponde a una condicin de entrada de datos particular.
Con el formato de datos NRZ (No Return to Zero), en el cual cada palabra es dividida
en pares de bits en lugar de bits individuales, hay cuatro modos posibles de paridad
binaria 1 y 0. Estos son: 00, 01, 10, 11. Cualquier palabra de informacin con un
nmero par de bits puede ser representado por una combinacin de estos pares de
bits. Uno de los cuatro ngulos de fase es asignado a cada uno de estos pares de bits.
La modulacin QPSK utiliza cuatro seales senoidales, para codificar dgitos
binarios. En el transmisor los dgitos binarios son tomados de a dos a la vez,
instruyendo al modulador, cul de las cuatro seales enviar (dependiendo de la forma
de la constelacin elegida).
QPSK comparado con el BPSK ofrece el doble de bits de informacin por portadora
de cambio de fase, encuentra amplia aplicacin en sistemas de transmisin de datos
de portadora- modulada de alta-velocidad.
8-PSK. Es casi idntico a QPSK con la excepcin que la fase de la forma de onda de
la salida vara entre ocho posiciones.
16-PSK. Es una tcnica de codificacin M-ario, en donde M = 16; hay 16 diferentes
fases de salida posibles. Un modulador de 16-PSK acta en los datos que estn
entrando en grupos de 4 bits (2
4
= 16), llamados quadbits (bits en cuadratura). La fase
de salida no cambia, hasta que 4 bits han sido introducidos al modulador.


Figura 4.2. Diagramas de constelacin de PSK. a) BPSK. b) QPSK
b) a)

35

4.2 Modulacin QAM
En QAM, los tonos son representados como la sumatoria de dos seales que estn en
fase o fuera de fase con respecto a un reloj. Estas seales son llamadas I (en fase) y Q
(por cuadratura).
4-QAM. La modulacin 4-QAM contiene 4 valores binarios: 00, 01, 10, 11. Los
cuales corresponden a una determinada fase, el cambio de fase entre uno y otro es de
90.
8-QAM. Los datos se dividen en grupos de 3 bits: 000 hasta 111. Los flujos de bits I,
Q y C cada uno con una tasa de bits igual a un tercio de la tasa de datos que estn
entrando. Los bits I y Q determinan la polaridad de la seal PAM y el canal C
determina la magnitud.
As como con el 8-PSK, los datos que estn entrando se dividen en grupos de tres bits
(tribits): los flujos de bits I, Q y C, cada uno con una tasa de bits igual a un tercio de
la tasa de datos que estn entrando.
16-QAM. As como el 16-PSK, el 16-QAM es un sistema M-ario, en donde M= 16.
Acta sobre los datos de entrada en grupos de cuatro (2
4
= 16).


a) b)

36


























Figura 4.3. Diagramas de constelacin de QAM. a) 4-
QAM. b) 8-QAM. c) 16-QAM. d) 32-QAM.
c) d)

37

CAPTULO 5. Codificacin para control de errores.
5.1 Fundamentos y definiciones
La codificacin de canal o codificacin para control de errores: consiste en ' mapear'
(aadir redundancia) a la secuencia de datos entrante en una secuencia de entrada al
canal y realizar el ' mapeo' inverso a la salida del canal en una secuencia de datos tal
que los efectos del ruido estn minimizados. La introduccin de redundancia en la
codificacin del canal tiene como finalidad mejorar la fiabilidad de la transmisin.
Proporcin de error en bits (BER): se define como la relacin entre el nmero de bits
errneos recibidos respecto al nmero total de bits transmitidos.
Proporcin residual de error: se define como la relacin entre el nmero de bits
errneos no detectados sobre el total de bits emitidos. Mide la capacidad de detectar
errores.
Peso de Hamming: est representado por W(c) donde c es una palabra de cdigo, y se
define como el nmero de bits de esa palabra diferentes de cero.
Distancia de Hamming: es la distancia entre dos palabras de cdigo de igual longitud y
se define como el nmero de bits (posicin a posicin) en los que se diferencian las
dos palabras.
Tipos de cdigos:
Cdigos sistemticos: aquellos cdigos en los que la palabra de informacin aparece
de forma explcita en la palabra codificada.
Cdigos no sistemticos: aquellos cdigos en los que la palabra de informacin no
aparece de forma explcita en la palabra codificada.
Cdigos de bloque: (tienen el mismo significado que en el caso de la codificacin de
la fuente) aquellos cdigos en los que todas las palabras tienen la misma longitud y la

38

codificacin se hace de forma esttica.
Cdigos lineales: aquellos en los que cualquier combinacin lineal de palabras de
cdigo vlida (por ejemplo la suma mdulo 2) produce otra palabra vlida.
Cdigos cclicos: aquellos en los que cualquier desplazamiento cclico de una palabra
de cdigo da lugar a otra palabra de cdigo.
Cdigos de paridad: su funcionamiento se basa en aadir un bit a la secuencia a enviar
de forma que el nmero de "1's" sea par o impar, dependiendo del tipo de paridad:
- si la paridad es par, el nmero final de "1's" debe ser par.
- si la paridad es impar, el nmero final de "1's" debe ser impar.
Cdigos: Denominemos S={S , S , S ... S } al conjunto de smbolos de un alfabeto
dado. Se define un cdigo como la correspondencia de todas las secuencias posibles
de smbolos de S a secuencias de smbolos de algn otro alfabeto X={x , x , x ,...x }. S
recibe el nombre de alfabeto fuente y X el de alfabeto cdigo. Como esto es demasiado
general para resultar de utilidad, ser necesario acotar ms esta definicin. Y la
primera propiedad de un cdigo es que sea un cdigo de bloque.
Un cdigo bloque es aquel que asigna cada uno de los smbolos del alfabeto fuente S a
una secuencia fija de smbolos del alfabeto cdigo X. Esas secuencias fijas reciben el
nombre de palabras cdigo. Un cdigo bloque se denomina no singular si todas sus
palabras son distintas.
Cdigos unvocamente decodificables: la extensin de orden n de un cdigo bloque es
la que hace corresponder los smbolos S con las palabras de cdigo X, es el cdigo
bloque que hace corresponder las secuencias de smbolos de la fuente (S ,S ....S ) con
las secuencias de las palabras de cdigo ( X , X ...X ). Es decir, la extensin de orden n
de un cdigo bloque es tambin un cdigo bloque. Adems, un cdigo bloque es
unvocamente decodificable si, y solamente s, su extensin de orden n es no singular

39

para cualquier n finito.
Con un cdigo unvocamente decodificable nos aseguramos que dos secuencias
cualesquiera de smbolos de la fuente de igual longitud dan lugar a secuencias de
smbolos cdigo distintas. Un cdigo unvocamente decodificable se denomina
instantneo cuando es posible decodificar las palabras de una secuencia sin precisar el
conocimiento de los smbolos siguientes.
Distancia mnima de un cdigo: se establece como la distancia de Hamming ms
pequea entre dos combinaciones cualesquiera del cdigo.
Cdigos detectores de error: Los cdigos detectores estn basados en no aprovechar
todas las combinaciones posibles de ceros y unos para formar palabras pertenecientes
al cdigo. As, si se produce algn error en la transmisin, la palabra resultante podra
no pertenecer al cdigo y de esta forma sabramos que se ha producido un error.
Para detectar el error en un dgito binario es condicin necesaria que el cdigo posea
una distancia mnima estrictamente mayor que uno. Y la condicin necesaria y
suficiente para detectar un error en k dgitos binarios, es que la distancia mnima sea
de k+1.
Estos cdigos se forman a partir de uno de distancia mnima uno o superior, al cual se
le aade el denominado dgito de paridad (normalmente como dgito binario ms
significativo). Este dgito deber tomar el valor apropiado (0 o 1) para que el nmero
de unos de la combinacin resultante sea par o impar dependiendo de si queremos
construir un cdigo de paridad par o un cdigo de paridad impar.
Cdigos correctores de error: La condicin necesaria y suficiente para que un cdigo
sea corrector de error en k dgitos binarios, es que su distancia mnima sea de 2k+1.
5.2 Cdigos de bloque
5.2.1 Cdigos de bloque lineales sistemticos

40

Un cdigo de bloque lineal sistemtico ser capaz de detectar X-1 bits errneos, donde
X viene dado por la distancia de Hamming mnima entre 2 palabras cualesquiera del
cdigo, y ser capaz de corregir ( X-1)/2 bits errneos.
Estos cdigos cumplen la siguiente propiedad:
La suma mdulo-2 de dos palabras del cdigo da lugar a otra palabra de cdigo.
En la especificacin de estos cdigos se utiliza la siguiente notacin ( n,k ):
n es el tamao de la palabra codificada
k es el tamao del mensaje original. Estos k bits se envan sin alteracin.
Los n-k bits restantes son los bits de paridad. Es la redundancia mediante la cual se
detectan y corrigen los errores.
La forma de una palabra de cdigo de un cdigo de bloque lineal sistemtico es la
siguiente:
m
0
m
1
. . . m
k-1
b
0
b
1
b
2
. . . b
n-k-1

Donde m
0
.......................m
k-1
son los bits del mensaje original y b
0
.......................b
n-
k-1
son los bits de paridad que se aaden como redundancia.
De esta forma, podemos expresar una palabra de cdigo como:
c
0
c
1
. . . c
nk-1
c
n-k
. . . c
n-1

El clculo de los bits de paridad se realiza de la siguiente forma:
b
i
= P
0i
m
0
+ P
1i
m
1
+ . . . + P
k-1i
m
k-1

Donde los P
ij
deben ser tales que la matriz generadora del cdigo tenga filas
independientes y las ecuaciones de paridad sean iguales.

41

Para realizar la codificacin se utiliza una notacin matricial. Consideraremos la
palabra original, la palabra formada por los bits de paridad y la palabra de cdigo
como vectores:
m = (m
0
m
1
. . . m
k-1
)
b = (b
0
b
1
. . . b
n-k-1
)
c = (c
0
c
1
. . . c
n-1
)
Tambin se utiliza la matriz de coeficientes:
P=


Para realizar la codificacin se utiliza la matriz generadora:
G = [ Ik,k | P ]
Siendo Ik,k la matriz identidad de tamao k * k.
De esta forma podemos obtener cada palabra de cdigo a partir de cada palabra de
mensaje original realizando la siguiente multiplicacin:
c = m G
Para realizar la decodificacin, en destino se recibe un vector (c) de tamao n y lo que
se puede hacer es repetir la operacin realizada en la codificacin: se toman los
primeros k bits y se calcula la redundancia usando la matriz generadora y se
comprueba si la redundancia obtenida es igual a la redundancia recibida.
Otra opcin ms eficiente es la basada en el concepto de sndrome. En este proceso se
utiliza la matriz de chequeo de paridad, que se define de la siguiente forma:
H = [P
t
| I]

42

H tiene la propiedad de que slo las palabras de cdigo verifican que al multiplicarlas
por H
t
el resultado es el vector nulo. Esta propiedad ser utilizada para la deteccin y
correccin de errores.
A cada palabra que el receptor recibe a travs del canal la denominaremos palabra
recibida r. Una palabra recibida la podemos expresar como:
r = c + e
Donde c es la palabra de cdigo enviada por el emisor y e es una palabra de error.
Cada componente e
i
de la palabra de error vale 1 si hay un error en esa posicin y 0 si
no lo hay.
El receptor para realizar la codificacin utiliza la matriz H para calcular el vector de
sndrome de error a partir de la palabra recibida. El vector de sndrome de error se
obtiene de la siguiente forma:
s = r H
t
El vector de sndrome tiene tantos elementos como bits de paridad se estn usando, y
slo depende de la secuencia de error y no de la palabra de cdigo transmitida. Si en la
transmisin no se ha producido un error, el sndrome es el vector nulo:
s = r H
t
= 0
Si se ha producido un error la multiplicacin de la palabra recibida por H
t
nos da un
vector que es igual a una de las filas de H
t
. La posicin que ocupa esa fila es la
posicin donde hay un error. Todas estas operaciones se hacen en mdulo-2 (sin
acarreo).
5.2.2 Cdigo Hamming
Un cdigo de Hamming es un cdigo de bloque lineal. Al igual que en los cdigos de

43

bloque lineales sistemticos, podemos denotar un cdigo de Hamming mediante un
par (n ,k). Sin embargo los valores de n y k debern verificar una serie de condiciones:
- n es la longitud de la palabra de cdigo.
- k es el nmero de bits de datos de la palabra original sin codificar.
- el nmero de bits de paridad ser m = n - k, pero deber cumplirse la siguiente
relacin entre la longitud de la palabra de cdigo y el nmero de bits de paridad:
n = 2
m
- 1 con m >= 3
Segn esto tambin se cumplir la siguiente relacin entre el nmero de bits de datos y
el nmero de bits de paridad:
k = 2
m
- m - 1
Por lo tanto, a cada palabra original se le aadirn unos bits de paridad para obtener la
palabra de cdigo, de forma que estos bits de paridad sirvan posteriormente para
encontrar y corregir errores que se produzcan en la transmisin.
Cada uno de los bits de paridad que aadimos a una palabra original va a afectar a
unas determinadas posiciones de la nueva palabra de cdigo, de forma que tomarn un
valor adecuado para que se cumpla el criterio de paridad (par o impar) preestablecido
en las sub-combinaciones afectadas por cada uno de estos bits de paridad.
El siguiente paso consistir en determinar a qu posiciones de los bits de las palabras
de cdigo afecta cada bit de paridad. Para ello, se construyen todas las combinaciones
posibles con m bits de paridad y se interpreta cada una en binario natural.
Cada bit de paridad va a afectar a aquellas posiciones en las que ese bit vale 1.
Bit de paridad Posiciones
b
1
................. 1,3,5,7,..........

44

b
2
................. 2,3,6,7,..........
...
b
m
................. 2
m
, 2
m+1
,2
m+2
....
Por ltimo se determina qu posiciones de cada palabra de cdigo ocupar cada bit de
paridad. Los bits de paridad se colocan en aquellas posiciones en las que no se vean
afectados por otros bits de paridad. Estas posiciones sern:
Bit de paridad Posicin
b
1
................... 20
b
2
................... 21
b
3
................... 22
.....
De esta forma queda completado el proceso de construccin de un cdigo de
Hamming.
En el proceso de decodificacin, el receptor recibe una palabra de un cdigo de
Hamming, y deber comprobar si es correcta o no, y en el caso de que no fuera
correcta deber comprobar en que bit se produjo el error y corregir ese error.
Para comprobar si la palabra recibida es correcta, el receptor debe utilizar los bits de
paridad de la palabra y hacer con ellos un control de paridad. Para realizar el control
de paridad, se crea una palabra que tendr un bit por cada uno de los bits de paridad
utilizados. Cada uno de los bits de esta palabra toma el valor 0 o 1 dependiendo de si
el nmero de unos de las posiciones de la palabra de cdigo afectadas por su
correspondiente bit de paridad cumplen o no el criterio de paridad establecido.
Interpretando la combinacin resultante en binario natural se tendrn dos

45

posibilidades:
- que sea un 0, lo cual quiere decir que no se han producido errores en la transmisin.
- que se corresponda a un nmero distinto de 0, lo cual quiere decir que durante la
transmisin ha variado el bit situado en la posicin indicada por ese nmero.
Una vez obtenida la palabra de cdigo correcta, basta con quitar los bits de paridad
para obtener la palabra original enviada por el emisor.
5.3 Cdigos Cclicos
Los cdigos cclicos son una subclase de los cdigos de bloque lineales. Son fciles de
codificar y cumplen la propiedad de linealidad y la de propiedad de que cualquier
desplazamiento cclico de una palabra del cdigo tambin pertenece al cdigo.
Al igual que en los cdigos de bloque lineales sistemticos y en los cdigos de
Hamming, se denota un cdigo cclico mediante un par (n,k), donde n es la longitud de
las palabras de cdigo y k es la longitud de una palabra original.
Para el manejo de estos cdigos se utiliza una notacin polinomial, de forma que una
palabra de cdigo C = (c
0
......,c
n-1
) se interpreta como un polinomio, y cada uno de los
bits de la palabra de cdigo ser uno de los coeficientes de este polinomio:
C(x) = c
0
+ c
1x
+ . . . + c
n-1xn-1

A su vez, una palabra original m = (m
0
,......, m
k-1
) se interpreta como el polinomio:
m(x) = m
0
+ m
1x
+ . . . + m
k-1xk-1

Para generar C(x) a partir de m(x) se usa el polinomio generador g(x) que es un factor
de ( x + 1)
n
. Su grado es n-k. La obtencin de la palabra codificada se hace de la
siguiente forma:
C(x) = m(x) g(x)

46

As se tiene que un cdigo cclico queda perfectamente determinado por su polinomio
generador.
Para realizar el control de errores se utiliza el polinomio de chequeo de paridad, que es
un polinomio de grado k tal que:
g(x) H(x) = (x + 1)
n

Los pasos para hacer una codificacin CRC son:
1) Expresar el mensaje en forma de cadena binaria
2) Escoger un polinomio divisor (polinomio generador)
3) Agregar al mensaje tantos ceros, como bits tenga el polinomio generador
4) Efectuar la divisin del mensaje entre el polinomio generador
5) Agregar el residuo de la divisin (checksum), al mensaje original
6) Tras la recepcin, se divide la cadena recibida entre el polinomio generador, si la
transmisin fue correcta el residuo de la divisin deber ser cero. De no ser nulo el
residuo, significa que hubo errores durante la transmisin.
5.4 Cdigos convolucionales
Se diferencian de los cdigos de bloque en su forma estructural y las propiedades para
corregir errores. Los cdigos de bloque suelen tener limitada la capacidad de
correccin de errores alrededor de 1 o 2 smbolos errneos por palabra de cdigo.
Estos cdigos son buenos para utilizar en canales con baja probabilidad de error.
Los cdigos convolucionales son adecuados para usar sobre canales con mucho ruido
(alta probabilidad de error). Estos cdigos son lineales, donde la suma de dos palabras
de cdigo cualesquiera tambin es una palabra de cdigo. Y al contrario que con los
cdigos lineales, se prefieren los cdigos no sistemticos.

47

El sistema tiene memoria: la codificacin actual depende de los datos que se envan
ahora y que se enviaron en el pasado.
Un cdigo convolucional queda especificado por tres parmetros (n,k,m) :
n es el nmero de bits de la palabra codificada.
k es el nmero de bits de la palabra de datos.
m es la memoria del cdigo o longitud restringida.
El cdigo convolucional es generado introduciendo un bit de datos y dando una
revolucin completa al conmutador. Inicialmente se supone que los registros
intermedios contienen ceros.














48

CAPTULO 6. Resultados
6.1 Serie de Fourier
Es un programa que grafica una seal elegida por el usuario y la Serie de Fourier de
una dicha seal con n armnicas, que son tambin introducidas por el usuario.

Figura 6.1a. Inicializacin (Serie de Fourier).

Este programa se implement con una serie de comandos bsicos de Matlab y
operaciones para realizar la suma (de acuerdo a la frmula) dentro de un ciclo for.
El programa se implementa con un ciclo if para elegir la seal a calcular:
si seal == 1
graficar parbola
si seal == 2
graficar recta
si seal == 3
graficar cuadrada
si seal == 4
graficar triangular
si seal == 5
graficar diente de sierra
fin
De acuerdo a la seal que se eligi, se hace el clculo de la suma de n armnicas
mediante un ciclo for:

49

= valor calculado
desde m=1 hasta n

= valor calculado

= valor calculado
suma = suma+( (m)*cos(m*t))+( (m)*sen(m*t))
fin
El valor de suma ser el valor de la serie de Fourier. Este valor se grafica con respecto
al tiempo.
6.1.1 Elementos del programa

1. n: armnicas de la Serie de Fourier.
2. Seal: es la seal a la cual se le grafica la Serie de Fourier. Las seales a elegir
son: parbola, recta, cuadrada, triangular y diente de sierra.
3. Coeficientes de la Serie de Fourier: es donde se muestran los coeficientes de
la Serie de Fourier calculados de acuerdo a la seal elegida.
4. Grafica de la Serie de Fourier: es donde se grafica la seal que representa la
Serie de Fourier de acuerdo a n y la seal elegida.
6.1.2 Ejemplo
Con la funcin y=t
2
, los valores de los coeficientes de Fourier son:
Figura 6.1b. Elementos del programa (Serie de Fourier).

50

=
2
/3

(-1)
n
b
n
=

= 0

Figura 6.1c. Ejemplo (Serie de Fourier).
6.2 Transformada de Fourier
Es un programa que grafica una seal elegida por el usuario y su Transformada de
Fourier.

Figura 6.2a. Inicializacin (Transformada de Fourier).

El programa se implementa con ciclos if para elegir la seal a calcular:

si seal == 1
graficar coseno
si seal == 2

51

graficar diente de sierra
si seal == 3
graficar sinc
si seal == 4
graficar cuadrada
si seal == 5
graficar exponencial
si seal == 6
graficar impulso
si seal == 7
graficar seno
fin

Despus de elegir la seal a graficar, se calcula la Transformada de Fourier con la
funcin fft:
Transformada de Fourier= abs (fft (seal, puntos a graficar))
6.2.1 Funcin fft (x, N)
Es una funcin de Matlab que regresa la Transformada Discreta de Fourier (DFT) del
vector x, realizada con el algoritmo de la transformada rpida de Fourier (FFT). x
es un vector de nmeros complejos ordenados desde k=0...N-1. La longitud del vector
x debe ser una potencia de 2. N es el nmero de puntos con el que se hace la FFT.
6.2.2 Elementos del programa

Figura 6.2b. Elementos del programa (Transformada de Fourier).


52

1. Seal. Es donde se elige la seal a graficar.
2. Grafica de seal. Es donde se grafica la seal elegida.
3. Transformada de Fourier. Es donde se grafica la Transformada de Fourier de
la seal elegida.
6.2.3 Ejemplo

Figura 6.2c. Ejemplo del programa (Transformada de Fourier).

6.3 Convolucin y Correlacin de seales

Es un programa que grafica dos seales y la Convolucin o Correlacin de stas.


Figura 6.3a. Inicializacin (Convolucin y Correlacin).


53

En el programa se desarrollaron varias opciones para elegir el tipo, la operacin y las
seales a las que se grafica la Convolucin o Correlacin.
Con ciclos if se selecciona el tipo de seal a elegir y la operacin a realizar:
si seal == seal CT
mostrar en men desplegable seales continuas en el tiempo
si no
mostrar en men desplegable seales discretas en el tiempo
fin

si operacin == Convolucin
grfica == conv (x(t), h(t))
si no
grfica == xcorr (x(t), h(t))
fin

Las opciones de seales que muestran los mens desplegables son:

x(t) para seales continuas:
x=t 0 < t < 3
x=1 0 < t < 3
x=sen(t) -3 < t < 3
x=1 -1 < t < 1

h(t) para seales continuas:

h=1 -1 < t < 1
h=1 0 < t < 3
h=-t 0 < t < 3
h=sen(t) -3 < t < 3

x(t) para seales continuas:

1.



2.



3.



4.



54

5.



h(t) para seales discretas:
1.



2.



3.




4.


5.


6.3.1 Funcin conv (x,h)
Hace la convolucin de los vectores x y h. El vector resultante tiene un tamao igual
a la longitud de x + la longitud de h-1.
6.3.2 Funcin xcorr (x,h)
Hace la correlacin de los vectores de M elementos x y h. Devuelve un vector de 2M-
1 elementos.
6.3.3 Elementos del programa


Figura 6.3b. Elementos del programa (Convolucin y Correlacin).

55

1. Tipo de seal. Es donde se elige el tipo de seal. Seal CT: seal contina en
el tiempo. Seal DT: seal discreta en el tiempo.
2. Operacin. Es donde se elige el tipo de operacin: Convolucin o
Correlacin.
3. Seal x(t) o x(n). Es donde se elige la seal x(t) si la seal es continua, o x(n)
si la seal es discreta.
4. Seal h(t) o h(n). Es donde se elige la seal h(t) si la seal es cont inua, o h(n)
si la seal es discreta.
5. Graficar Convolucin o Correlacin. Es el botn que grafica la Convolucin o
Correlacin segn los parmetros especificados.
6. Grfica de seal x. Es donde se grafica la seal x(t) o x(n).
7. Grfica de seal h. Es donde se grafica la seal h(t) o h(n).
8. Grfica de seal y(t). Es donde se grafica la seal resultante.
6.3.4 Ejemplo

Figura 6.3c. Ejemplo (Convolucin y Correlacin).

56

6.4 Modulacin AM, FM y PM
Es un programa que grafica una seal anloga moduladora a elegir y su respectiva
seal modulada en Amplitud (AM), en Frecuencia (FM) o en Fase (PM).

Figura 6.4a. Inicializacin (Modulacin AM, FM y PM).

El programa esta implementado con ciclos if para elegir la operacin a realizar:

si Modulacin == AM
modulada= amod(moduladora, frecuencia de la portadora,1000, 'am')
si Modulacin == FM
modulada= amod(moduladora, frecuencia de la portadora,1000, ' fm')
si Modulacin == PM
modulada= amod(moduladora, frecuencia de la portadora,1000, 'pm' )

6.4.1 Funcin amod(x,fc,fs, 'method')
Usa la seal x para modular una seal portadora con frecuencia Fc (Hz) usando la
modulacin especificada en method: am para modulacin en amplitud, fm para
modulacin en frecuencia y pm para modulacin en fase. La seal portadora y x
tienen una frecuencia de muestreo Fs (Hz).
6.4.2 Elementos del programa


57


Figura 6.4b. Elementos del programa (Modulacin AM, FM y PM).
1. Am. Amplitud de la seal moduladora.
2. fc. Frecuencia de la seal portadora.
3. fm. Frecuencia de la seal moduladora.
4. Modulacin. Tipo de modulacin a graficar: AM, FM o PM.
5. Moduladora. Tipo de seal a modular: Diente de sierra, Cuadrada, Seno o
Coseno.
6. Grfica de seal moduladora. Es donde se grafica la seal moduladora.
7. Grfica de seal modulada. Es donde se grafica la seal modulada.
6.4.3 Ejemplo de modulacin AM

58


Figura 6.4c. Ejemplo (Modulacin AM).

6.4.4 Ejemplo de modulacin FM

Figura 6.4d. Ejemplo (Modulacin FM).
6.4.5 Ejemplo de modulacin PM

Figura 6.4e. Ejemplo (Modulacin PM).

59


6.5 Conversin dB a Watts y Watts a dB
Es un programa que realiza la conversin de dB a Watts, de Watts a dB, de dBm a
Watts y de Watts a dBm.

Figura 6.5a. Inicializacin (Decibeles y Watts).

El cdigo consiste en ciclos if que se emplean para elegir la operacin a realizar:

si Convertir == dB a Watts
Watts= 10 ^ (dB/10)
si Convertir == Watts a dB
dB= 10log
10
(potencia de salida / potencia de entrada)
si Convertir == dBm a Watts
Watts=10 ^ (dB/10)
si Convertir == Watts a dBm
dB=10*log
10
(potencia de salida / .001)
fin

6.5.1 Elementos del programa

Figura 6.5b. Elementos del programa (Decibeles y Watts).

60

1. Men de conversiones. Es donde se elige la operacin a realizar.
2. Convertir. Es el botn que, al ser presionado, hace la conversin elegida.
3. Decibeles. Es donde se introducen los decibeles para hacer las conversiones:
dB a Watts o dBm a Watts.
4. Potencia de entrada. Es donde se introducen los Watts de la potencia de
entrada para la conversin de Watts a dB
5. Potencia de salida. Es donde se introducen los Watts de la potencia de salida
para las conversiones: Watts a dB o Watts a dBm.
6.5.2 Ejemplo
dB= 10log
10
(potencia de salida / potencia de entrada)
dB=10log
10
(5/3)
dB=2.218


Figura 6.5c. Ejemplo (Decibeles y Watts).
6.6 Muestreo de seales
Es un programa que grafica una seal muestreada con frecuencia, muestras y
frecuencia de muestreo como parmetros de entrada.

61


Figura 6.6a. Inicializacin (Muestreo de seales).

El cdigo del programa consiste en ciclos if para cambiar de seal, de 5 a elegir en un
men:
Si seal == seno
seal =seno(2*pi*Frecuencia de la seal*(muestras / Frecuencia de muestreo))
Si seal == coseno
seal =coseno(2*pi*Frecuencia de la seal*(muestras / Frecuencia de muestreo))
Si seal == cuadrada
seal =cuadrada(2*pi*Frecuencia de la seal*(muestras / Frecuencia de muestreo))
Si seal == diente de sierra
seal =diente de sierra(2*pi*Frecuencia de la seal*(muestras / Frecuencia de
muestreo))
Si seal == rectangular
seal =rectangular(2*pi*Frecuencia de la seal*(muestras / Frecuencia de muestreo))

6.6.1 Elementos del programa

Figura 6.6b. Elementos del programa (Muestreo de seales).

62

1. n. Es el nmero de muestras que se van a graficar.
2. Frecuencia. Es la Frecuencia a la que se quiere graficar la seal.
3. Men de seales. Es donde se elige la seal a muestrear.
4. Frecuencia de Muestreo. Es donde se vara la Frecuencia de muestreo.
6.6.2 Ejemplo

Figura 6.6c. Ejemplo (Muestreo de seales).
6.7 Muestreo de seal PAM
Es un programa que grafica una seal PAM muestreada con una frecuencia de
muestreo introducida por el usuario.

Figura 6.7a. Inicializacin (Muestreo seal PAM).


63

El cdigo de este programa consiste en ciclos if para elegir la seal a muestrear:
si seal == seno
seno(2*pi*10t)
si seal== coseno
coso(2*pi*10t)
si seal == diente de sierra
diente de sierra(2*pi*10t)
si seal == triangular
triangular(2*pi*10t)
si seal == sinc
sinc(2*pi*10t)
si seal == exponencial
exponencial(2*pi*10t)
fin
Para graficar la seal muestreada se implemento un ciclo for:
desde i =1 hasta t
si (mod(i, frecuencia de muestreo) ==1)
z =x (i)
fin
n(i)=z
fin
seal muestreada = t , n
6.7.1 Elementos del programa

Figura 6.7b. Elementos del programa (Muestreo de seal PAM).

64

1. Frecuencia de muestreo. Es donde se introduce la Frecuencia de muestreo de
la seal.
2. Men de seales. Es donde se elige la seal a muestrear.
3. Grfica de la seal muestreada. Es donde se grafica la seal original y la seal
muestreada.
6.7.2 Ejemplo

Figura 6.7c. Ejemplo (Muestreo de seal PAM).

6.8 Modulacin PSK y QAM
Es un programa que grafica una seal binaria aleatoria y su modulacin PSK o QAM.

Figura 6.8a. Inicializacin (Modulacin digital).

65

Este programa consiste en generar una seal binaria aleatoriamente. Para esto, y con
el propsito de separar la seal con smbolos (M), se gener una seal decimal.
Luego se us un ciclo for para convertir la seal decimal a binaria:
n= cantidad de smbolos a enviar
k=log
2
(M);
seal = round(rand(1,n)*(M-1))
seal binaria=[]
desde r=1 hasta length(seal)
conversin=fliplr(dec2binvec(seal(r),k))
seal binaria=[seal binaria conversion]
fin
Luego se utiliz un ciclo if para hacer la modulacin:
Si tipo de modulacin == psk
[y,t]=dmod(senial,1,1,100,'psk',M)
Si no
[y,t]=dmod(senial,1,1,100,'qask',M)
fin
6.8.1 Funcin dmod(x, Fc, Fd, Fs, 'method')
Modula la seal x con Frecuencia de la seal portadora Fc (Hz) y Frecuencia de
smbolos de la fuente Fd (Hz). La Frecuencia de muestreo es Fs (Hz), donde Fs > Fc
y Fs/Fd es un nmero positivo entero. La modulacin es segn se especifique en
method: ask para modulacin en amplitud, psk para modulacin en pase, fsk para
modulacin en frecuencia, qask para modulacin en amplitud y fase.
6.8.2 Elementos del programa

66


Figura 6.8b. Elementos del programa (Modulacin digital).
1. Tipo de modulacin. Es donde se elige el tipo de modulacin: psk o qam.
2. M. Es donde se elige los smbolos a modular: 2, 4, 8, 16, 32, 64.
3. No. de smbolos a enviar. Es donde se especifica el nmero de smbolos a
enviar.
4. Seal. Es donde se muestra la seal que se va a modular.
5. Generar seal. Es el botn que al ser presionado genera y grafica una seal
digital para ser modulada, esta seal se genera aleatoriamente cada vez que se
presione este botn.
6. Modular. Es el botn que grafica la seal modulada.
7. Grfica de seal digital. Es donde se grafica la seal digital generada.
8. Grfica de seal modulada. Es donde se grafica la seal modulada.
6.8.3 Ejemplo de modulacin PSK

Figura 6.8c. Ejemplo (Modulacin PSK).

67

6.8.4 Ejemplo de modulacin QAM

Figura 6.8d. Elementos del programa (Modulacin QAM).
6.9 Codificacin de Bloque Lineal
Es un programa que realiza la Codificacin de Bloque Lineal de una palabra
introducida por el usuario. Adems simula la deteccin de un error en la palabra
fuente y muestra la posicin de este error mediante la matriz H y el sndrome.

Figura 6.9a. Inicializacin (Codificacin de bloque lineal).
La primer parte del cdigo de este programa consiste en ciclos if para definir los
valores de los parmetros n, k y la matriz paridad P segn la opcin elegida en el
men (n, k):
si men == 1
n=4, k=2, P= [1 1; 1 0]
si men == 2

68

n=5, k=2, P= [0 1 1; 1 0 1]
si men == 3
n=6, k=3, P= [1 1 1; 0 1 1; 1 1 0]
si men == 4
n=7, k=4, P= [1 1 0; 0 1 1; 1 0 1; 1 1 1]
si men == 5
n=7, k=5, P= [1 0; 0 1; 1 1; 1 0; 1 1]
si men == 6
n=9, k=6, P= [0 1 0; 1 0 0; 0 1 1; 1 1 0; 0 0 1; 1 0 1]
si men == 7
n=11, k=7, P= [0 1 0 1; 1 1 0 1; 1 0 1 0; 1 0 1 1; 1 1 1 0; 0 1 1 1; 0 0 0 1]
si men == 8
n=11, k=8, P= [0 1 0; 1 1 0; 1 0 1; 1 0 0; 1 1 1; 0 1 0; 0 1 1; 1 0 0]
Luego de establecer los parmetros, se define la matriz generadora y se codifica el
mensaje:
G = [eye (k) P]
Palabra cdigo = encode (m,n,k,' linear',G)

Al final se usa un ciclo if para revisar si se quiere simular un error, el cual se crea
aleatoriamente:

H = [P' eye (n-k)]
si error == 1
vector error = [randerr (1,k) zeros (1,n-k)]
palabra recibida = bitxor (palabra cdigo, vector error)
sindrome = rem (r*H', 2)
H transpuesta = H'
Dentro del ciclo if se crea un ciclo for para encontrar la posicin del error:
desde j=1 hasta n
fila = H transpuesta (j,:)
si fila == sndrome
contador = contador + 1
si contador == 1
posicin de error=j;
fin
fin
fin

69

6.9.1 Funcin encode (msg, n, k, 'method', genmat)
Es una funcin de Matlab que codifica el mensaje msg usando el mtodo de
codificacin especificado en method: linear, cyclic y hamming. La longitud de la
palabra cdigo es n y la longitud del mensaje es k.
6.9.2 Elementos del programa

Figura 6.9b. Elementos del programa (Codificacin de bloque lineal).
1. Palabra. Es donde se introduce la palabra a codificar.
2. Agregar un error. Es donde se elige si se quiere agregar un error
aleatoriamente.
3. Codificar. Es el botn que al ser presionado codifica la palabra.
4. n, k. Es donde se eligen los valores de n y k de 8 opciones: 4,2; 5,2; 6,3; 7,4;
7,5; 9,6; 11,7; y 11,8.
5. Palabra cdigo. Es donde se muestra la palabra codificada.
6. Sndrome, H y posicin de error. Es donde se muestra el sndrome, la matriz
transpuesta H y la posicin de error si se seleccion Agregar un error.
6.9.3 Ejemplo

70


Figura 6.9c. Ejemplo (Codificacin de bloque lineal).
6.10 Codificacin Hamming
Es un programa que realiza la Codificacin Hamming de una palabra introducida por
el usuario. Este programa simula la deteccin de un error mediante los controles de
paridad.

Figura 6.10a. Inicializacin (Codificacin Hamming).
El cdigo de la primer parte consiste en sumar la cantidad de unos que tiene la
palabra:
suma de b8 = sum(b8)
suma de b4 = sum(b4)
suma de b2 = sum(b2)

71

suma de b4 = sum(b1)
Luego se establecen los valores de los controles de paridad mediante un ciclo if y la
funcin mod:
si mod (suma de bx, 2) == 0
cx = 0
si no
cx = 1
fin
c=[b15 b14 b13 b12 b11 b10 b9 c4 b7 b6 b5 c3 b3 c2 c1]

Para agregar un error al codificar se implemento un ciclo if de la siguiente manera:
Si error == 1
vector de error = randerr (1, n)
palabra recibida = bitxor (c, vector de error)
A esta palabra recibida se le suman la cantidad de unos que tiene y se establecen los
nuevos controles de paridad. Luego para saber la posicin del error se convierten
estos controles de paridad a decimales:
controles de paridad = [ce4 ce3 ce2 ce1]
posicin de error = binvec2dec (fliplr (controles de paridad))

6.10.1 Elementos del programa

Figura 6.10b. Elementos del programa (Codificacin Hamming).

72

1. Palabra. Es donde se introduce la palabra a codificar.
2. Agregar un error. Es donde se elige si se quiere agregar un error
aleatoriamente.
3. Codificar. Es el botn que al ser presionado codifica la palabra.
4. m. Es donde se elige el valor de m: 3 o 4.
5. Dgitos binarios de control. Es donde se muestran los dgitos de control, segn
se haya elegido en el men m.
6. Palabra cdigo. Es donde se muestra la palabra codificada.
7. Posicin de error y Controles de paridad. Es donde se muestra la posicin de
error y los controles de paridad si se seleccion Agregar un error.
6.10.2 Ejemplo

Figura 6.10c. Ejemplo (Codificacin Hamming).
6.11 Codificacin Cclica
Es un programa que realiza la Codificacin Cclica de una palabra introducida por el
usuario. Tambin simula la deteccin de un error mediante el sndrome.

73


Figura 6.11a. Inicializacin (Codificacin Cclica).
Primero se us un ciclo if para definir los valores de los parmetros n y k segn la
opcin elegida en el men (n, k):
si men == 1
n= 4, k=3
si men == 2
n= 7, k=4
si men == 3
n= 18, k=6
si men == 4
n= 24, k=8
Para crear el polinomio generador se utiliz la funcin cyclpoly y la codificacin se
hizo multiplicando este polinomio con el mensaje:
Polinomio generador = cyclpoly (n, k, ' min')
c = mod (conv (polinomio generador, mensaje), 2)
Para generar un error aleatoriamente en la palabra recibida se implement de la
misma manera que en las anteriores codificaciones:
si error == 1
vector de error = [randerr (1,k) zeros (1,n-k)]
palabra recibida = bitxor (c, vector de error)
posicin de error = find (e)
fin

6.11.1 Funcin cyclpoly (n, k, 'opt')

74

Es una funcin que regresa el vector fila que representa el polinomio generador de un
cdigo cclico teniendo una palabra fuente de longitud k y para una palabra cdigo de
longitud n. La salida de esta funcin depende del argumento opt: min (polinomio
generador con menor peso), max (polinomio generador con mayor peso) y all (todos
los polinomios generadores).
6.11.2 Elementos del programa

Figura 6.11b. Elementos del programa (Codificacin Cclica).
1. Men n, k. Es donde se eligen los valores de n y k: 4, 3; 7, 4; 18, 6 y 24, 8.
2. Palabra. Es donde se introduce la palabra a codificar.
3. Agregar un error. Es donde se elige si se quiere agregar un error
aleatoriamente.
4. Codificar. Es el botn que al ser presionado hace la codificacin de la palabra.
5. Polinomio cdigo. Es donde se muestra el polinomio cdigo.
6. Polinomio generador. Es donde se muestra el polinomio generador de la
palabra.
7. Sndrome. Es donde se muestra el sndrome.
6.11.3 Ejemplo

75


Figura 6.11c. Ejemplo (Codificacin Cclica).
6.12 Codificacin Convolucional
Es un programa que realiza la Codificacin Convolucional de una palabra introducida
por el usuario.

Figura 6.12a. Inicializacin (Codificacin Convolucional).
Este programa esta implementado con un ciclo for para ir recorriendo la posicin en la
palabra, y dentro de este ciclo se us un ciclo if para hacer las operaciones segn la
memoria elegida m:
desde i= longitud del mensaje hasta 1
s = [mensaje(i), y]
y = s (1: m-1)
si m == 2
o1=s(1)

76

o2=bitxor (s(1), s(2))
o3=[]
si m==3
o1=bitxor (s(1), s(3))
o2=bitxor (s(1), s(2))
o3=[]
si m==4
o1=bitxor (s(1), s(2))
o2=s (4)
o3=bitxor (s(1), s(3))
fin
c=[o1 o2 o3 c]
fin
6.12.1 Elementos del programa

Figura 6.12b. Elementos del programa (Codificacin Convolucional).
1. m. Es donde se elige la memoria que va a tener la codificacin: 2, 3 o 4.
2. Palabra. Es donde se introduce la palabra a codificar.
3. Codificar. Es el botn que ejecuta la codificacin.
4. Dibujo del codificador. Es donde se muestra el dibujo del codificador.
5. Palabra cdigo. Es donde se muestra la palabra codificada.
6.12.2 Ejemplo

77


Figura 6.12c. Ejemplo (Codificacin Convolucional).

















78

CAPTULO 7. Conclusiones
Matlab es un programa muy poderoso, por lo cual en este proyecto se quiso
aprovechar al mximo esta herramienta de programacin para aplicaciones en los
conceptos de las clases de comunicaciones.
Realizar ejemplos de muchos de los temas de comunicaciones a veces se vuelve un
proceso complejo y tedioso, adems de que hay riesgo de que se cometan errores en
los procedimientos o en las respuestas. Si se desarrollan estos ejemplos en Matlab, se
puede estar seguro que la respuesta es correcta. Matlab que ayuda a desarrollar
muchos problemas complejos de comunicaciones y ofrece una forma sencilla de
visualizar conceptos que de otra forma sera muy difcil observar en la realidad. Otra
de las ventajas que ofrece Matlab es el ahorro de tiempo y esfuerzo considerable.
El propsito de crear los programas en una GUI fue el facilitar el proceso prctico de
utilizacin, ya que a travs de sta, el usuario puede llevar a cabo dist intas funciones
sin necesidad de trabajar dentro de Matlab. Los programas estn diseados con el
propsito de facilitar el anlisis y entendimiento de muchos de los temas de
comunicaciones. Los programas presentados adems de demostrar una gran rapidez,
resultan simples en su comprensin. La importancia de este proyecto se basa en
facilitar los procesos para resolucin de problemas de comunicaciones que requieren
que se resuelvan a papel y lpiz, pero con solo entender lo que se necesita realizar,
podemos lograr estos clculos utilizando de manera esencial la herramienta Matlab.
Matlab es una excelente opcin para el anlisis y simulacin de sistemas de
comunicaciones por la facilidad con la que se pueden visualizar los resultados, por la
sencillez de las instrucciones y por su variedad en las aplicaciones.



79

Referencias
[1] Amos Gilat. Matlab una introduccin con ejemplos prcticos. Revert. Barcelona.
2005.
[2] Haykin, Simon. Seales y Sistemas. Limusa Wiley. Mxico, D.F. 2004. Pag. 21.
[3]
http://carreras.frba.utn.edu.ar/matematica/matapp/cursos/Primer_Curso_Final_2004.p
df, 26 de Septiembre.
[4] http://amasd.upb.edu.co/es/pregrado/programacion/Matlab6_GUI.pdf, 27 de
Septiembre.
[6] www.astormastering.com.ar/Clase_1_Introduccin_al_analisis_espectral.pdf, 3 de
Octubre.
[7] Lathi B. P. Sistemas de Comunicacin. McGrawHill. Edo de Mxico. 1986.
Haykin Simon. Communication systems. Limusa Wiley. Mxico, D.F. 2001.
Wayne Tomasi. Sistemas de Comunicaciones Electrnicas. Prentice-Hall. Mxico.
2003.
Proakis J. K. Digital communications. Mcgraw-Hill. New York. 2001.
http://www.mathworks.com, 10 de Agosto.









80

APNDICE A. Archivo .m: Serie de Fourier

function varargout = Serie_Fourier(varargin)
% SERIE_FOURIER Grafica la serie de fourier de distintas seales con
% distinto nmero de armnicas.
% x = seal
% t = tiempo
% n = nmero de armnicas
% a, b, serie = coeficientes de la Serie de Fourier
%
%

% Cdigo de inicializacin
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @Serie_Fourier_OpeningFcn, ...
'gui_OutputFcn', @Serie_Fourier_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end

function Serie_Fourier_OpeningFcn(hObject, eventdata, handles,
varargin)
handles.output = hObject;
[x,map]=imread('none.jpg','jpg');
axes(handles.axes2)
image(x),colormap(map),axis off
guidata(hObject, handles);

function varargout = Serie_Fourier_OutputFcn(hObject, eventdata,
handles)
varargout{1} = handles.output;

% --- Clculo y graficacin de la Serie de Fourier
function popupmenu1_Callback(hObject, eventdata, handles)
grafica=get(hObject,'Value');
t=-pi:pi/1000:pi;
n=str2num(get(handles.n,'String'));
a=zeros(1,n);
b=zeros(1,n);
if grafica==1
[x,map]=imread('none.jpg','jpg');
axes(handles.axes2)
image(x),colormap(map),axis off

81

t=0;
x=0;
serie=0;
elseif grafica==2
serie=(pi^2)/3;
for m=1:n
a(m)=(4/(m^2))*((-1)^m);
b(m)=0;
serie=serie+(a(m)*cos(m*t))+(b(m)*sin(m*t));
end
[x,map]=imread('parabola.jpg','jpg');
axes(handles.axes2)
image(x),colormap(map),axis off
x=t.^2;
elseif grafica==3
serie=0;
for m=1:n
a(m)=0;
b(m)=(2/m)*(-1)^(m+1);
serie=serie+(a(m)*cos(m*t))+(b(m)*sin(m*t));
end
[x,map]=imread('recta.jpg','jpg');
axes(handles.axes2)
image(x),colormap(map),axis off
x=t;
elseif grafica==4
serie=0;
for m=1:n
a(m)=0;
b(m)=-2/(m*pi);
serie=serie+(a(m)*cos(m*t))+(b(m)*sin(m*t));
end
[x,map]=imread('diente.jpg','jpg');
axes(handles.axes2)
image(x),colormap(map),axis off
x=sawtooth(t);
elseif grafica==5
serie=0;
for m=1:n
a(m)=0;
b(m)=(2/(m*pi))*(1-(-1)^m);
serie=serie+(a(m)*cos(m*t))+(b(m)*sin(m*t));
end
[x,map]=imread('cuadrada.jpg','jpg');
axes(handles.axes2)
image(x),colormap(map),axis off
x=square(t);
elseif grafica==6
serie=0;
for m=1:n
a(m)=(4/((m^2)*(pi^2)))*((-1)^m-1);
b(m)=0;
serie=serie+(a(m)*cos(m*t))+(b(m)*sin(m*t));
end

82

[x,map]=imread('triangular.jpg','jpg');
axes(handles.axes2)
image(x),colormap(map),axis off
x=sawtooth(t,.5);
end
axes(handles.axes1)
plot(t,x,'b','LineWidth',2);
hold on
plot(t,serie,'r','LineWidth',2);
xlabel('t', 'Fontsize', 12)
ylabel('f(t)', 'Fontsize', 12)
title('Serie de Fourier con n armonicas','Fontsize', 12)
grid on
hold off
guidata(hObject,handles)

% ------------------------------------------------------------------
--
function popupmenu1_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%-------------------------------------------------------------------
--
function n_Callback(hObject, eventdata, handles)
%-------------------------------------------------------------------
--
function n_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'),
get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
%-------------------------------------------------------------------
--
function n_KeyPressFcn(hObject, eventdata, handles)
set(handles.popupmenu1,'Value',1);




NOTA: Todos los archivos .m de los programas que se realizaron cuentan con el
mismo cdigo de inicializacin y funciones CreateFcn que el mostrado en el
programa Serie de Fourier; por lo tanto, en los casos donde no se muestren estas
funciones ser debido a que son similares a este programa y slo se mostrar la parte
ms importante del cdigo de cada uno de los programas.






83

APNDICE B. Archivo .m: Transformada de Fourier

function popupmenu1_Callback(hObject, eventdata, handles)
grafica=get(hObject,'Value');
p=256;
t=0:59;
f=(0:p-1)/p;
if grafica==1
x=0;
elseif grafica==2
x=cos(2*pi*t/10);
elseif grafica==3
x=sawtooth(2*pi*t/10);
elseif grafica==4
x=sinc(2*pi*t/10);
elseif grafica==5
x=square(2*pi*t/10);
elseif grafica==6
x=(t<0).*0+(t>=0).*exp(2*pi*t/10);
elseif grafica==7
x=(t<-1).*0+(t>1).*0+(t>=-1).*1+(t<=1).*1;
elseif grafica==8
x=sin(2*pi*t/10);
end
tf=abs(fft(x,p));
axes(handles.axes1)
plot(t,x)
title('Seal original')
xlabel('t')
ylabel('x(t)')
grid on
axes(handles.axes2)
plot(f,tf)
title('Transformada de Fourier')
xlabel('w');
ylabel('|F(w)|')
grid on
guidata(hObject, handles);














84

APNDICE C. Archivo .m: Convolucin y Correlacin de seales

function popupmenu1_Callback(hObject, eventdata, handles)
grafica=get(hObject,'Value');
t=handles.t;
% graficas
if grafica==1
handles.x=(t<0&t>3).*0+(t>=0&t<=3).*t;
elseif grafica==2
handles.x=ustep(t);
elseif grafica==3
handles.x=(t<-1&t>1).*0+(t>=-1&t<=1).*1;
elseif grafica==4
handles.x=sin(t);
end
% graficar x(t)
axes(handles.axes1)
plot(t,handles.x,'LineWidth',2)
xlabel('t')
ylabel('x(t)')
grid on
guidata(hObject,handles)

function popupmenu2_Callback(hObject, eventdata, handles)
grafica2=get(hObject,'Value');
t=handles.t;
% graficas
if grafica2==1
handles.h=(t<-1&t>1).*0+(t>=-1&t<=1).*1;
elseif grafica2==2
handles.h=ustep(t);
elseif grafica2==3
handles.h=(t<0&t>3).*0+(t>=0&t<=3).*-t;
elseif grafica2==4
handles.h=sin(t);
end
% graficar h(t)
axes(handles.axes2)
plot(t,handles.h,'LineWidth',2)
xlabel('t')
ylabel('h(t)')
grid on
guidata(hObject,handles)

function popupmenu3_Callback(hObject, eventdata, handles)
grafica3=get(hObject,'Value');
%graficas
if grafica3==1
handles.x=[1 1 1 1 1];
handles.tiempox=0:1:4;
elseif grafica3==2
handles.x=[2 1 1 1];
handles.tiempox=0:1:3;
elseif grafica3==3

85

handles.x=[1 2];
handles.tiempox=0:1:1;
elseif grafica3==4
handles.x=[1 1 1];
handles.tiempox=-1:1:1;
elseif grafica3==5
handles.x=2;
handles.tiempox=0;
end
% graficar x(t)
axes(handles.axes1)
stem(handles.tiempox,handles.x,'LineWidth',2)
xlabel('n')
ylabel('x(n)')
grid on
guidata(hObject,handles)

function popupmenu4_Callback(hObject, eventdata, handles)
grafica4=get(hObject,'Value');
% graficas
if grafica4==1
handles.h=[2 1 1 1];
handles.tiempoh=0:1:3;
elseif grafica4==2
handles.h=[1 1 1 1 1];
handles.tiempoh=0:1:4;
elseif grafica4==3
handles.h=[1 2 3];
handles.tiempoh=1:1:3;
elseif grafica4==4
handles.h=[1 1 1];
handles.tiempoh=-1:1:1;
elseif grafica4==5
handles.h=2;
handles.tiempoh=0;
end
% graficar h(t)
axes(handles.axes2)
stem(handles.tiempoh,handles.h,'LineWidth',2)
xlabel('n')
ylabel('h(n)')
grid on
guidata(hObject,handles)

function graficar_Callback(hObject, eventdata, handles)
x=handles.x;
h=handles.h;
op=get(handles.convolucion,'Value');
tipo_s=get(handles.ct,'Value');
if op==1
y = conv(x,h);
else
y = xcorr(x,h);
end

86


if tipo_s==1
lx=length(x)-1;
lh=length(h)-1;
n=-lh:lx;
axes(handles.axes3)
plot(n./1000,y./1000,'LineWidth',2) % graficar seal CT
xlabel('t')
ylabel('y(t)')
else
axes(handles.axes3)
stem(y,'LineWidth',2) % graficar seal DT
xlabel('n')
ylabel('y(n)')
end
grid on
guidata(hObject,handles)































87

APNDICE D. Archivo .m: Modulacin AM, FM y PM

function popupmenu1_Callback(hObject, eventdata, handles)
grafica1=get(hObject,'Value');
t=handles.t;
Am=str2double(get(handles.edit_Am,'String'));
fm=str2double(get(handles.edit_fm,'String'));
fc=str2double(get(handles.edit_fc,'String'));
if grafica1==2
moduladora=Am*sawtooth(2*pi*fm*t);
elseif grafica1==3
moduladora=Am*square(2*pi*fm*t);
elseif grafica1==4
moduladora=Am*sin(2*pi*fm*t);
elseif grafica1==5
moduladora=Am*cos(2*pi*fm*t);
else
moduladora=0;
end
tipo_mod=get(handles.popupmenu3,'Value');
if tipo_mod==1
axes(handles.axes1)
plot(t,moduladora,'Color','r','LineWidth',2)
title('Seal moduladora');
ylabel('A');
xlabel('Tiempo');
grid on;
axes(handles.axes2)
senial = amod(moduladora,fc,1000,'am');
plot(t,senial)
hold on;
plot(t,(moduladora)+Am,'--','Color','r');
hold off;
title('Seal AM ');
ylabel('Amplitud');
xlabel('Tiempo');
grid on
elseif tipo_mod==2
axes(handles.axes1)
plot(t,moduladora,'Color','r','LineWidth',2)
title('Seal moduladora');
ylabel('A');
xlabel('Tiempo');
grid on;
axes(handles.axes2)
senial = amod(moduladora,fc,1000,'fm');
plot(t,senial)
hold on;
plot(t,moduladora,'--','Color','r');
hold off;
title('Seal FM ');
ylabel('Frecuencia');
xlabel('Tiempo');
grid on

88

elseif tipo_mod==3
axes(handles.axes1)
plot(t,moduladora,'Color','r','LineWidth',2)
title('Seal moduladora');
ylabel('A');
xlabel('Tiempo');
grid on;
axes(handles.axes2)
senial = amod(moduladora,fc,1000,'pm');
plot(t,senial)
hold on;
plot(t,moduladora,'--','Color','r');
hold off;
title('Seal PM ');
ylabel('Fase');
xlabel('Tiempo');
grid on
end
guidata(hObject, handles);






























89

APNDICE E. Archivo .m: Conversin dB a Watts y Watts a dB

function convertir_Callback(hObject, eventdata, handles)
w_db=get(handles.w_db,'Value');
db_w=get(handles.db_w,'Value');
w_dbm=get(handles.w_dbm,'Value');
dbm_w=get(handles.dbm_w,'Value');
if db_w==1
db=str2double(get(handles.db,'String'));
ans_w=10^(db/10);
set(handles.resultado2,'String',ans_w);
elseif w_db==1
p1=str2double(get(handles.p1,'String'));
p2=str2double(get(handles.p2,'String'));
ans_db=10*log10(p2/p1);
set(handles.resultado1,'String',ans_db);
elseif dbm_w==1
db=str2double(get(handles.db,'String'));
ans_w=10^(db/10);
set(handles.resultado2,'String',ans_w);
elseif w_dbm==1
p1=.001;
p2=str2double(get(handles.p2,'String'));
ans_db=10*log10(p2/p1);
set(handles.resultado1,'String',ans_db);
end
guidata(hObject, handles);























90

APNDICE F. Archivo .m: Muestreo de seal

function slider1_Callback(hObject, eventdata, handles)
F_muestreo=round(100*get(hObject,'Value'));
set(handles.text_fm,'string',num2str(F_muestreo));
muestras=str2double(get(handles.edit_n,'string'));
F=str2double(get(handles.edit_f,'string'));
n=0:muestras-1;
if (get(handles.radiobutton1,'Value')==1)
x=sin(2*pi*F*(n./F_muestreo));
elseif(get(handles.radiobutton2,'Value')==1)
x=cos(2*pi*F*(n./F_muestreo));
elseif(get(handles.radiobutton3,'Value')==1)
x=square(2*pi*F*(n./F_muestreo));
elseif(get(handles.radiobutton4,'Value')==1)
x=sawtooth(2*pi*F*(n./F_muestreo));
elseif(get(handles.radiobutton5,'Value')==1)
x=sawtooth((2*pi*F*(n./F_muestreo)),.5);
end
axes(handles.axes1)
stem(n,x,'Linewidth',1.5)
title('Seal muestreada ')
xlabel('n')
ylabel('x(n)')
grid on
guidata(hObject, handles);
























91

APNDICE G. Archivo .m: Muestreo de seal PAM

function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
Ts = 1/10000;
t=0:Ts:.2;
if hObject==handles.b1
x= sin(2*pi*10*t);
elseif hObject==handles.b2
x= cos(2*pi*10*t);
elseif hObject==handles.b3
x= sawtooth(2*pi*10*t);
elseif hObject==handles.b4
x= sawtooth(2*pi*10*t,.5);
elseif hObject==handles.b5
x= sinc(2*pi*10*t);
elseif hObject==handles.b6
x= exp(2*pi*10*t);
end
f=str2double(get(handles.frec,'String'));
n = zeros(1,length(t));
for i =1:length(t)
if(mod(i,f)==1) % ciclo para que x cambie cada f veces
z =x(i);
end
n(i)=z;
end
plot(t,x,'--')
hold on
plot(t,n,'black','Linewidth',1.5);
xlabel('t');
ylabel('y(n)');
hold off
guidata(hObject, handles);


















92

APNDICE H. Archivo .m: Modulacin PSK y QAM

function Mn_Callback(hObject, eventdata, handles)
axes(handles.axes2)
cla reset
set(handles.text_senial,'String','');
set(handles.modular,'Enable','off');
m1=get(hObject,'Value');
if m1==2
handles.M=2;
elseif m1==3
handles.M=4;
elseif m1==4
handles.M=8;
elseif m1==5
handles.M=16;
elseif m1==6
handles.M=32;
elseif m1==7
handles.M=64;
end
guidata(hObject, handles);

function generar_Callback(hObject, eventdata, handles)
set(handles.modular,'Enable','on');
n=str2double(get(handles.n,'String'));
u=[];
M=handles.M;
k=log2(M);
handles.senial = round(rand(1,n)*(M-1));
binaria=[];
for r=1:length(handles.senial)
conver=fliplr(dec2binvec(handles.senial(r),k));
binaria=[binaria conver];
end
binaria2=reshape(dec2bin(handles.senial,k).',1,k*n);
set(handles.text_senial,'String',binaria2);
for i=1:(k*n)
if binaria(i)==1
u=[u ones(1,100)];
elseif binaria(i)==0
u=[u zeros(1,100)];
end
end
axes(handles.axes2)
cla reset
axes(handles.axes1)
plot(u,'Linewidth',1.5)
guidata(hObject, handles);

function modular_Callback(hObject, eventdata, handles)
tipo=get(handles.tipo_mod,'Value');
senial=handles.senial;
M=handles.M;

93

if tipo==1
[y,t]=dmod(senial,1,1,100,'psk',M);
else
[y,t]=dmod(senial,1,1,100,'qask',M);
end
axes(handles.axes2)
plot(t,y,'Linewidth',1.5);
guidata(hObject, handles);







































94

APNDICE I. Archivo .m: Codificacin de Bloque Lineal

function codificar_Callback(hObject, eventdata, handles)
error=get(handles.check_error,'Value');
ka=get(handles.popupmenu_k,'Value');
count=0;
if ka==1
k=2;
n=4;
P=[1 1; 1 0];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m=[m_0 m_1];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==2
k=2;
n=5;
P=[0 1 1; 1 0 1];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m=[m_0 m_1];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==3
k=3;
n=6;
P=[1 1 1; 0 1 1; 1 1 0];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m_2= str2double(get(handles.edit3,'String'));
m=[m_0 m_1 m_2];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1)) || ...
((m_2~=0) && (m_2~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end

elseif ka==4
k=4;
n=7;
P=[1 1 0; 0 1 1; 1 0 1; 1 1 1];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m_2= str2double(get(handles.edit3,'String'));
m_3= str2double(get(handles.edit4,'String'));
m=[m_0 m_1 m_2 m_3];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1)) || ...
((m_2~=0) && (m_2~=1)) || ((m_3~=0) && (m_3~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==5
k=5;

95

n=7;
P=[1 0; 0 1; 1 1; 1 0; 1 1];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m_2= str2double(get(handles.edit3,'String'));
m_3= str2double(get(handles.edit4,'String'));
m_4= str2double(get(handles.edit5,'String'));
m=[m_0 m_1 m_2 m_3 m_4];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1)) ||...
((m_2~=0) && (m_2~=1)) || ((m_3~=0) && (m_3~=1)) || ((m_4~=0)..
&& (m_4~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==6
k=6;
n=9;
P=[0 1 0; 1 0 0; 0 1 1; 1 1 0; 0 0 1; 1 0 1];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m_2= str2double(get(handles.edit3,'String'));
m_3= str2double(get(handles.edit4,'String'));
m_4= str2double(get(handles.edit5,'String'));
m_5= str2double(get(handles.edit6,'String'));
m=[m_0 m_1 m_2 m_3 m_4 m_5];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1)) || ...
((m_2~=0) && (m_2~=1)) || ((m_3~=0) && (m_3~=1)) || ((m_4~=0)...
&& (m_4~=1)) || ((m_5~=0) && (m_5~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==7
k=7;
n=11;
P=[0 1 0 1; 1 1 0 1; 1 0 1 0; 1 0 1 1; 1 1 1 0; 0 1 1 1; 0 0 0
1];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m_2= str2double(get(handles.edit3,'String'));
m_3= str2double(get(handles.edit4,'String'));
m_4= str2double(get(handles.edit5,'String'));
m_5= str2double(get(handles.edit6,'String'));
m_6= str2double(get(handles.edit7,'String'));
m=[m_0 m_1 m_2 m_3 m_4 m_5 m_6];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1)) || ...
((m_2~=0) && (m_2~=1)) || ((m_3~=0) && (m_3~=1)) || ((m_4~=0)..
&& (m_4~=1)) || ((m_5~=0) && (m_5~=1)) || ((m_6~=0) && (m_6~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==8
k=8;
n=11;
P=[0 1 0; 1 1 0; 1 0 1; 1 0 0; 1 1 1; 0 1 0; 0 1 1; 1 0 0];
m_0= str2double(get(handles.edit1,'String'));
m_1= str2double(get(handles.edit2,'String'));
m_2= str2double(get(handles.edit3,'String'));

96

m_3= str2double(get(handles.edit4,'String'));
m_4= str2double(get(handles.edit5,'String'));
m_5= str2double(get(handles.edit6,'String'));
m_6= str2double(get(handles.edit7,'String'));
m_7= str2double(get(handles.edit8,'String'));
m=[m_0 m_1 m_2 m_3 m_4 m_5 m_6 m_7];
if ((m_0~=0) && (m_0~=1)) || ((m_1~=0) && (m_1~=1)) || ...
((m_2~=0) && (m_2~=1)) || ((m_3~=0) && (m_3~=1)) || ((m_4~=0)...
&& (m_4~=1)) || ((m_5~=0) && (m_5~=1)) || ((m_6~=0) && ...
(m_6~=1)) || ((m_7~=0) && (m_7~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
end
G = [eye(k) P];
c = encode(m,n,k,'linear',G);
H=[P' eye(n-k)];
if error==1
e=[randerr(1,k) zeros(1,n-k)];
r=bitxor(c,e);
s=rem(r*H',2);
Htran=H';
for j=1:1:n
fila=Htran(j,:);
if fila==s
count=count+1;
if count==1
pos_error=j;
end
end
end
set(handles.text_pos,'String',num2str(pos_error));
set(handles.text7,'Visible','on');
set(handles.text9,'Visible','on');
set(handles.text_H,'String',num2str(H'));
else
r=c;
s=rem(r*H',2);
end
set(handles.text10,'Visible','on');
set(handles.text_sin,'String',num2str(s));
set(handles.text_c,'String',num2str(r));
guidata(hObject, handles);











97

APNDICE J. Archivo .m: Codificacin Hamming

function codificar_Callback(hObject, eventdata, handles)
menu_m=get(handles.popupmenu1,'Value');
error=get(handles.check_error,'Value');
if menu_m==1
m=3;
m1=str2num(get(handles.edit1,'String'));
m2=str2num(get(handles.edit2,'String'));
m3=str2num(get(handles.edit3,'String'));
m4=str2num(get(handles.edit4,'String'));
elseif menu_m==2
m=4;
m1=str2num(get(handles.edit1,'String'));
m2=str2num(get(handles.edit2,'String'));
m3=str2num(get(handles.edit3,'String'));
m4=str2num(get(handles.edit4,'String'));
m5=str2num(get(handles.edit5,'String'));
m6=str2num(get(handles.edit6,'String'));
m7=str2num(get(handles.edit7,'String'));
m8=str2num(get(handles.edit8,'String'));
m9=str2num(get(handles.edit9,'String'));
m10=str2num(get(handles.edit10,'String'));
m11=str2num(get(handles.edit11,'String'));
end
n=2^m-1;
%operaciones codigo hamming
if menu_m==1
if ((m1~=0) && (m1~=1)) || ((m2~=0) && (m2~=1)) || ((m3~=0) &&
(m3~=1)) || ((m4~=0) && (m4~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
else
b7=m1;
b6=m2;
b5=m3;
b3=m4;
b4=[b7 b6 b5];
b2=[b7 b6 b3];
b1=[b7 b5 b3];
unosb4=sum(b4);
unosb2=sum(b2);
unosb1=sum(b1);
if mod(unosb4,2)==0
c3=0;
else
c3=1;
end
if mod(unosb2,2)==0
c2=0;
else
c2=1;
end
if mod(unosb1,2)==0
c1=0;

98

else
c1=1;
end
c=[b7 b6 b5 c3 b3 c2 c1];
if error==1
e=randerr(1,n);
r=bitxor(c,e);
unos_ce1=sum([r(1,7) r(1,5) r(1,3) r(1,1)]);
unos_ce2=sum([r(1,7) r(1,6) r(1,3) r(1,2)]);
unos_ce3=sum([r(1,7) r(1,6) r(1,5) r(1,4)]);
if mod(unos_ce1,2)==0
ce1=0;
else
ce1=1;
end
if mod(unos_ce2,2)==0
ce2=0;
else
ce2=1;
end
if mod(unos_ce3,2)==0
ce3=0;
else
ce3=1;
end
con_par=[ce3 ce2 ce1];
pos=binvec2dec(fliplr(con_par));
cs1=[r(1,7) r(1,6) r(1,5)];
ccs3=r(1,4);
cs2=r(1,3);
ccs2=r(1,2);
ccs1=r(1,1);
else
cs1=[b7 b6 b5];
ccs3=c3;
cs2=b3;
ccs2=c2;
ccs1=c1;
end
end
elseif menu_m==2
if ((m1~=0) && (m1~=1)) || ((m2~=0) && (m2~=1)) || ((m3~=0) &&
(m3~=1)) || ((m4~=0) && (m4~=1)) || ((m5~=0) && (m5~=1)) ||
((m6~=0) && (m6~=1)) || ((m7~=0) && (m7~=1)) || ((m8~=0) && (m8~=1))
|| ((m9~=0) && (m9~=1))|| ((m10~=0) && (m10~=1)) || ((m11~=0) &&
(m11~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
else
b15=m1;
b14=m2;
b13=m3;
b12=m4;
b11=m5;
b10=m6;

99

b9=m7;
b7=m8;
b6=m9;
b5=m10;
b3=m11;
b8=[b9 b10 b11 b12 b13 b14 b15];
b4=[b5 b6 b7 b12 b13 b14 b15];
b2=[b3 b6 b7 b10 b11 b14 b15];
b1=[b3 b5 b7 b9 b11 b13 b15];
unosb8=sum(b8);
unosb4=sum(b4);
unosb2=sum(b2);
unosb1=sum(b1);
if mod(unosb8,2)==0
c4=0;
else
c4=1;
end
if mod(unosb4,2)==0
c3=0;
else
c3=1;
end
if mod(unosb2,2)==0
c2=0;
else
c2=1;
end
if mod(unosb1,2)==0
c1=0;
else
c1=1;
end
c=[b15 b14 b13 b12 b11 b10 b9 c4 b7 b6 b5 c3 b3 c2 c1];
if error==1
e=randerr(1,n);
r=bitxor(c,e);
unos_ce1=sum([r(1,15) r(1,13) r(1,11) r(1,9) r(1,7)...
r(1,5) r(1,3) r(1,1)]);
unos_ce2=sum([r(1,15) r(1,14) r(1,11) r(1,10) r(1,7)...
r(1,6) r(1,3) r(1,2)]);
unos_ce3=sum([r(1,15) r(1,14) r(1,13) r(1,12) r(1,7)...
r(1,6) r(1,5) r(1,4)]);
unos_ce4=sum([r(1,15) r(1,14) r(1,13) r(1,12) r(1,11)..
r(1,10) r(1,9) r(1,8)]);
if mod(unos_ce1,2)==0
ce1=0;
else
ce1=1;
end
if mod(unos_ce2,2)==0
ce2=0;
else
ce2=1;

100

end
if mod(unos_ce3,2)==0
ce3=0;
else
ce3=1;
end
if mod(unos_ce4,2)==0
ce4=0;
else
ce4=1;
end
con_par=[ce4 ce3 ce2 ce1];
pos=binvec2dec(fliplr(con_par));
cs1=[r(1,15) r(1,14) r(1,13) r(1,12) r(1,11) r(1,10)...
r(1,9)];
cs2=[r(1,7) r(1,6) r(1,5)];
cs3=r(1,3);
ccs4=r(1,4);
ccs3=r(1,3);
ccs2=r(1,2);
ccs1=r(1,1);
else
cs1=[b15 b14 b13 b12 b11 b10 b9];
cs2=[b7 b6 b5];
cs3=b3;
ccs4=c4;
ccs3=c3;
ccs2=c2;
ccs1=c1;
end
end
end
guidata(hObject, handles);


















101

APNDICE K. Archivo .m: Codificacin Cclica

function codificar_Callback(hObject, eventdata, handles)
ka=get(handles.popupmenu1,'Value');
error=get(handles.check_error,'Value');
if ka==1
n=4;
k=3;
m1=str2num(get(handles.edit1,'String'));
m2=str2num(get(handles.edit2,'String'));
m3=str2num(get(handles.edit3,'String'));
mens=[m1 m2 m3];
if ((m1~=0) && (m1~=1)) || ((m2~=0) && (m2~=1)) || ((m3~=0)...
&& (m3~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==2
n=7;
k=4;
m1=str2num(get(handles.edit1,'String'));
m2=str2num(get(handles.edit2,'String'));
m3=str2num(get(handles.edit3,'String'));
m4=str2num(get(handles.edit4,'String'));
mens=[m1 m2 m3 m4];
if ((m1~=0) && (m1~=1)) || ((m2~=0) && (m2~=1)) || ((m3~=0)...
&& (m3~=1)) || ((m4~=0) && (m4~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==3
n=18;
k=6;
m1=str2num(get(handles.edit1,'String'));
m2=str2num(get(handles.edit2,'String'));
m3=str2num(get(handles.edit3,'String'));
m4=str2num(get(handles.edit4,'String'));
m5=str2num(get(handles.edit5,'String'));
m6=str2num(get(handles.edit6,'String'));
mens=[m1 m2 m3 m4 m5 m6];
if ((m1~=0) && (m1~=1)) || ((m2~=0) && (m2~=1)) || ((m3~=0)...
&& (m3~=1)) || ((m4~=0) && (m4~=1)) || ((m5~=0) && (m5~=1))...
|| ((m6~=0) && (m6~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
elseif ka==4
n=24;
k=8;
m1=str2num(get(handles.edit1,'String'));
m2=str2num(get(handles.edit2,'String'));
m3=str2num(get(handles.edit3,'String'));
m4=str2num(get(handles.edit4,'String'));
m5=str2num(get(handles.edit5,'String'));
m6=str2num(get(handles.edit6,'String'));
m7=str2num(get(handles.edit7,'String'));
m8=str2num(get(handles.edit8,'String'));

102

mens=[m1 m2 m3 m4 m5 m6 m7 m8];
if ((m1~=0) && (m1~=1)) || ((m2~=0) && (m2~=1)) || ((m3~=0)...
&& (m3~=1)) || ((m4~=0) && (m4~=1)) || ((m5~=0) && (m5~=1))...
|| ((m6~=0) && (m6~=1)) || ((m7~=0) && (m7~=1)) || ((m8~=0)...
&& (m8~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
end
end
pol_gen = cyclpoly(n,k,'min');
c = mod(conv(pol_gen,mens),2);
if error==1
e=[randerr(1,k) zeros(1,n-k)];
r=bitxor(c,e);
pos=find(e);
set(handles.text9,'Visible','on');
set(handles.text_e,'String',num2str(pos));
else
r=c;
set(handles.text9,'Visible','off');
set(handles.text_e,'String','');
end
[q res]=deconv(r,pol_gen);
s=mod(abs(res),2);
set(handles.text_g,'String',num2str(pol_gen));
set(handles.text_c,'String',num2str(r));
set(handles.text_s,'String',num2str(s));
guidata(hObject, handles);























103

APNDICE L. Archivo .m: Codificacin Convolucional

function codificar_Callback(hObject, eventdata, handles)
c=[];
m=handles.m;
u1=str2num(get(handles.edit1,'String'));
u2=str2num(get(handles.edit2,'String'));
u3=str2num(get(handles.edit3,'String'));
u4=str2num(get(handles.edit4,'String'));
mje=[u1 u2 u3 u4];
lmje=length(mje);
y=zeros(1,m-1);
if ((u1~=0) && (u1~=1)) || ((u2~=0) && (u2~=1)) || ((u3~=0)...
&& (u3~=1)) || ((u4~=0) && (u4~=1))
errordlg('Introduzca nmeros binarios',' Palabra Fuente ');
else
for i=lmje:-1:1
s=[mje(i),y];
y=s(1:m-1);
if m==2
o1=s(1);
o2=bitxor(s(1),s(2));
o3=[];
elseif m==3
o1=bitxor(s(1),s(3));
o2=bitxor(s(1),s(2));
o3=[];
elseif m==4
o1=bitxor(s(1),s(2));
o2=s(4);
o3=bitxor(s(1),s(3));
end
c=[o1 o2 o3 c];
end
end
set(handles.text_c,'String',num2str(c));
guidata(hObject, handles);

You might also like