apuntes de clase - max.esimez.ipn.mx · cap´ıtulo 1 elementos el´ectricos 1.1 resistencia. una...

108
Apuntes de Clase Dr. Maximino Pe˜ na Guerrero [libroApuntes.tex], 22.JN.17

Upload: hathuy

Post on 20-Sep-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Apuntes de Clase

Dr. Maximino Pena Guerrero

[libroApuntes.tex], 22.JN.17

Page 2: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Indice general

1. Elementos Electricos 71.1 Resistencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2 Divisores de voltaje . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.3 Divisores de corriente . . . . . . . . . . . . . . . . . . . . . . . . . . 91.4 Fasor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5 Radian. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.6 Capacitancia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.7 Inductancia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.8 Reactancia inductiva. . . . . . . . . . . . . . . . . . . . . . . . . . . 121.9 Reactancia capacitiva. . . . . . . . . . . . . . . . . . . . . . . . . . . 121.10 Valor medio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.11 Valor eficaz. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.12 Valor eficaz con senos y cosenos. . . . . . . . . . . . . . . . . . . . . 131.13 Relacion entre valores p, pp, rms, y m. . . . . . . . . . . . . . . . . 14

2. Elementos Acusticos 162.1 Acustica. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.2 Resistencia acustica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.3 Inertancia acustica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 162.4 Complianza acustica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.5 Impedancia acustica. . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3. Fısica del Sonido 193.1 Velocidad. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.2 Aceleracion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193.3 Analisis de cuerda compuesta . . . . . . . . . . . . . . . . . . . . . . 193.4 Oscilador simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.5 Vibracion armonica simple. . . . . . . . . . . . . . . . . . . . . . . . 203.6 Frecuencia de un oscilador armonico simple. . . . . . . . . . . . . . . 223.7 Condiciones iniciales de un sistema masa-resorte. . . . . . . . . . . . 22

4. Entrada de Audio. 294.1 Estructura de datos hardware de entrada. . . . . . . . . . . . . . . . 294.2 Captura de sonido con MATLAB. . . . . . . . . . . . . . . . . . . . 31

1

Page 3: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

INDICE GENERAL 2

5. Salida de Audio. 335.1 Reproduccion de sonido con MATLAB. . . . . . . . . . . . . . . . . 33

6. Archivos WAV. 346.1 Formato de archivos de sonido WAV . . . . . . . . . . . . . . . . . . 346.2 Reproduccion de un archivo WAV con MATLAB. . . . . . . . . . . . 35

7. Prediccion Lineal 377.1 La prediccion lineal . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

8. Filtros Digitales 418.1 Transformada Z. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.2 Eigenfuncion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.3 Definicion de Z. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418.4 Ecuacion de diferencias. . . . . . . . . . . . . . . . . . . . . . . . . . 438.5 Ecuacion estandard para DSP. . . . . . . . . . . . . . . . . . . . . . 448.6 Transformacıon Bilineal BLT. . . . . . . . . . . . . . . . . . . . . . . 44

9. Filtros Analogicos 459.1 Filtro pasa alto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

9.1.1 Funcion de transferencia en funcion de ω. . . . . . . . . . . . 459.1.2 Funcion de transferencia en funcion de s. . . . . . . . . . . . 469.1.3. Factor de calidad Q para un circuito serie RLC. . . . . . . . . 47

10.Escribiendo Textos con LATEX 4910.1 Compilar un proyeto de libro en TEX. . . . . . . . . . . . . . . . . . 4910.2 Crear referencias cruzadas. . . . . . . . . . . . . . . . . . . . . . . . 5010.3 Compilacion del archivo principal LATEX. . . . . . . . . . . . . . . . 5010.4 Impresion de fichas de trabajo. . . . . . . . . . . . . . . . . . . . . 5010.5 Impresion de fichas bibliograficas. . . . . . . . . . . . . . . . . . . . 5110.6 Instalacion MusicTEX en Linux. . . . . . . . . . . . . . . . . . . . . 5110.7 Instalacion MusicTEX Mac OSX. . . . . . . . . . . . . . . . . . . . 5210.8 Instalacion MusixTEX Mac OSX. . . . . . . . . . . . . . . . . . . . 53

11.Programando con Java. 5411.1 instalacion en MS-Windows. . . . . . . . . . . . . . . . . . . . . . . 5411.2 Instalacion en Linux. . . . . . . . . . . . . . . . . . . . . . . . . . . 55

12.Programando Sonido con MatLab. 5612.1 Captura de audio. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

13.Programando con SAPI 5813.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5813.2 Ejmplo: holasapi.cpp . . . . . . . . . . . . . . . . . . . . . . . . . . 58

Page 4: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

INDICE GENERAL 3

14.Programando con SDL 6014.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

15.Detecion del pitch 6115.1 El Pitch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6115.2 Filtros Latice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

16.Cadenas de Markov 6416.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

17.Redes Neuronales 6517.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

18.Funciones y Macros en C 6618.1 Codigo fuente comun en Win32 (miwin.h). . . . . . . . . . . . . . . 6618.2 Aritmetica compleja. . . . . . . . . . . . . . . . . . . . . . . . . . . 66

18.2.1 Estructura. . . . . . . . . . . . . . . . . . . . . . . . . . . . 6618.2.2 Impresion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6618.2.3 Leectura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6718.2.4 Suma. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6718.2.5 Resta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6718.2.6 Producto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6718.2.7 Division. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6718.2.8 Magnitud. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6818.2.9 Operaciones. . . . . . . . . . . . . . . . . . . . . . . . . . . 68

18.3 Convertir hexadecimal a cadena de bits -h2bits(). . . . . . . . . . . 6818.4 Poner bit n de x en cero -setbit0(). . . . . . . . . . . . . . . . . . . 6918.5 Poner bit n de x en uno -setbit1(). . . . . . . . . . . . . . . . . . . 6918.6 Probar bit n de x -getbit(). . . . . . . . . . . . . . . . . . . . . . . . 6918.7 Driver de sonido MIDI Win32 -klsnd(). . . . . . . . . . . . . . . . . 7018.8 Leer un byte de memoria Win32 -peekw(). . . . . . . . . . . . . . . 7118.9 Escribir un byte en memoria Win32 -pokew(). . . . . . . . . . . . . 7218.10 Vaciar memoria (emulacion con un buffer) -dump(). . . . . . . . . 73

19.Programando graficas con OpenGL. 7519.1 Poner un punto OpenGL -gsetpnt(). . . . . . . . . . . . . . . . . . . 7519.2 Manejo del raton OpenGL -graton(). . . . . . . . . . . . . . . . . . 7519.3 Obtener flechas del teclado OpenGL -gflechas(). . . . . . . . . . . . 7519.4 Servicio timer OpenGL -gtimer(). . . . . . . . . . . . . . . . . . . . 7619.5 Graficar spline OpenGL -gspline(). . . . . . . . . . . . . . . . . . . 76

20.Programando con C/C++ 7820.1 Crear un proyecto MFC vacıo en forma manual desde Win32. . . . 7820.2 Editar nuevos archivos dentro de un proyecto MFC vacıo Win32. . . 7920.3 Anexar archivos existentes a un proyecto MFC vacıo Win32. . . . . 7920.4 Anexar un contenedor de dialogo a un proyecto MFC manual Win32. 80

Page 5: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

INDICE GENERAL 4

20.5 Crear proyecto MFC vacıo basado en DIALOG con Wizard. . . . . 8120.6 Crear un proyecto esqueleto MFC completo. . . . . . . . . . . . . . 8120.7 Crear boton en contenedor DIALOG. . . . . . . . . . . . . . . . . . 8220.8 Crear variable miembro de boton. . . . . . . . . . . . . . . . . . . . 8220.9 Crear la funcion de un boton. . . . . . . . . . . . . . . . . . . . . . 8220.10 Crear un componente bitmap en DIALOG . . . . . . . . . . . . . 8220.11 Compilar con lınea de comandos una aplicacion DIALOG existente. 8320.12 Enviar un mensaje Win32 . . . . . . . . . . . . . . . . . . . . . . . 8420.13 Enviar mensaje WM PAINT. . . . . . . . . . . . . . . . . . . . . . 84

21.Programando con MIDI 8621.1 ¿Que es una nota? . . . . . . . . . . . . . . . . . . . . . . . . . . . 8621.2 Constante de Bach . . . . . . . . . . . . . . . . . . . . . . . . . . . 8621.3 Octava MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8721.4 Tono MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8821.5 Escala cromatica MIDI . . . . . . . . . . . . . . . . . . . . . . . . . 8821.6 Escala MIDI en modo mayor . . . . . . . . . . . . . . . . . . . . . . 8921.7 Escala MIDI en modo menor. . . . . . . . . . . . . . . . . . . . . . 9021.8 Acorde MIDI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

22.Sistemas Digitales 9222.1 Representacion posicional de un numero. . . . . . . . . . . . . . . . 92

Diccionario de Terminos 96

A. Programas Fuente 98A.1 Protocolo de ventana Win32: mwinh.h . . . . . . . . . . . . . . . . . 98A.2 Graficar archivo con datos de punto flotante MFC: gr.c . . . . . . . 99

A.2.1 Archivo de recursos: gr.rc . . . . . . . . . . . . . . . . . . . 103A.2.2 Archivo de cabecera: resource.h . . . . . . . . . . . . . . . 105A.2.3 Archivo de cabecera: resource.hm . . . . . . . . . . . . . . 106

A.3 Entrada de sonido: entrada.c . . . . . . . . . . . . . . . . . . . . . 106

Page 6: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Indice de figuras

1.1. Circuito con un resistor . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2. Circuito malla con un resistor . . . . . . . . . . . . . . . . . . . . . . 71.3. Circuito con divisor de corriente . . . . . . . . . . . . . . . . . . . . . 91.4. Fasor electrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5. Fasor de la inductancia . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.1. Oscilador simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.1. Estructura de datos hardware de sonido . . . . . . . . . . . . . . . . 294.2. Descripcion de WAVEFORMATEX . . . . . . . . . . . . . . . . . . . 294.3. Estructura de datos software de sonido . . . . . . . . . . . . . . . . . 304.4. Descripcion de WAVEFORMATEX . . . . . . . . . . . . . . . . . . . 31

6.1. Formato de encabezado un archivo de sonido WAV . . . . . . . . . . 36

8.1. Cırculo unitariop en el plano-z complejo. . . . . . . . . . . . . . . . . 42

9.1. Filtro pasa alto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459.2. Filtro pasa bajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489.3. Filtro pasa banda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489.4. Red de cruce de tres vias . . . . . . . . . . . . . . . . . . . . . . . . . 48

15.1. Filtro dependiente de sus valores de entrada y salida. . . . . . . . . . 63

21.1. Nombres, sımbolos, variables, y teclas de un piano (octava 4). . . . . 9021.2. Acorde de DO mayor (CM). . . . . . . . . . . . . . . . . . . . . . . . 91

5

Page 7: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Indice de tablas

1.1. Tabla de valores de una onda . . . . . . . . . . . . . . . . . . . . . . 15

6.1. Primeros bytes de encabezado de un archivo de sonido WAV . . . . . 36

21.1. Correspondencia entre: frecuencia (hertz) de nota(i), posicion en oc-tava(j), y tono. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

21.2. Relacion n entre octavas(j), notas(i) y tonos(n), dado por n = j(12) + i. 89

6

Page 8: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 1

Elementos Electricos

1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-

nerse al paso de la corriente electrica. La expresion matematica (Exp. 1.1) que rige el

comportamiento de un circuito electrico con una resistencia (Fig. 1.1) se conoce co-

mo Ley de Ohm.

V = I · R

donde R es la resistencia en ohms; V es el voltaje en volts, e I es la corriente en

amperes.

V

IR

Figura 1.1: Circuito con un resistor

1.2 Divisores de voltaje

E

IR1 V1

R2 V2

Figura 1.2: Circuito malla con un resistor

7

Page 9: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 8

Ejemplo: Calcular el voltaje en V2.

E = V1 + V2

si V1 = IR1 entonces

E = IR1 + V2

pero si I = V2/R2 entonces

E =V2

R2R1 + V2

dividiendo ambos terminos entre V2

E

V2=

V2/

R2

R1

V2/+

V2/

V2/

queda

E

V2=

R1

R2+ 1

pero si hacemos R2/R2 = 1

E

V2=

R1

R2+

R2

R2

simplificamos

E

V2=

R1 +R2

R2

invertimos terminos

V2

E=

R2

R1 +R2

despejamos V2 tenemos finalmente que

V2 =ER2

R1+R2Ejemplo: Calcular el voltaje en VR1 .

E = V1 + V2

si V2 = I · R2 entonces

E = V1 + I ·R2

pero si I = V1/R1 entonces

E = V1 +V1

R1R2

dividiendo ambos terminos entre V1

E

V1=

V1/

V1/+

V1/

R1

R2

V1/

Page 10: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 9

queda

E

V1= 1 +

R2

R1

pero si hacemos R1/R1 = 1

E

V1=

R1

R1+

R2

R1

simplificamos

E

V1=

R1 +R2

R1

invertimos terminos

V1

E=

R1

R1 +R2

despejamos V1 tenemos finalmente que

V1 =ER1

R1+R2

en general tenemos que

Vn =ERn

R1+R2+...+Rn

1.3 Divisores de corriente De acuerdo con el circuito de la Figura 1.3, calcular la

corriente en I1, la corriente en I2, y la corriente total It.

I

It

I1

V1R1

V

I2

R2 V2

Figura 1.3: Circuito con divisor de corriente

Desarrollo: La corriente total It en el circuito sera

It = I1 + I2

de acuerdo con la ley de Ohm (I = VR ) tenemos que la corriente total It sera

It =V1

R1+

V2

R2

Page 11: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 10

utilizando el algoritmo para sumar fracciones

a =b

c+

d

e=

( c/ec/ )b + ( ce/e/ )d

ce=

eb+ cd

ce

pero en el circuito el voltaje V es el mismo en ambas resistencias (V = V1 = V2)

It =V

R1+

V

R2=

(R1/R2

R1/)V + (R1R/2

R2/)V

R1R2

It =R2V +R1V

R1R2

It =V (R2 +R1)

R1R2

despejando V

ItV

=V/(R2 +R1)

V/R1R2

1

V=

R2 +R1

It(R1R2)

finalmente

V = It(R1R2)R1+R2

(1.1)

Notese que R1R2R1+R2

es el paralelo de las dos resistenciac R1 y R2 que ve la fuente de corriente I.

Ejemplo: Calcular I1.

sabemos que V1 = I1 ·R1

I1R1 =It(R1R2)

R1 +R2

despejando I1

I1 =It(R1/R2)

R1/(R1 +R2)

finalmente tenemos

I1 =ItR2

R1+R2

Ejemplo: Calcular I2.

Sabemos que V2 = I2 ·R2

I2R2 =It(R1R2)

R1 +R2

despejando I1

I2 =It(R1R2/)

(R1 +R2)R2/

Page 12: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 11

finalmente tenemos

I2 =ItR1

R1+R2

1.4 Fasor. Si movemos un alambre de cobre cerca del campo megnetico producido

por un iman natural (o un electroiman), entonces se genera una corriente electrica en

dicho conductor. De acuerdo con los experimentos de Miguel Faraday (1837-1901),

podemos medir una cierta cantidad de voltaje en los extremos del alambre. Para fa-

cilitar el analisis matematico de este fenomeno, la ingenierıa electrica ha dado nom-

bre a este concepto, fasor.

AO

X

Fasor

Figura 1.4: Fasor electrico

De esta forma tenemos que un fasor es un vector rotatorio que tiene una mag-

nitud y una velocidad angular constante. Ası, dicho fasor sirve como una representa-

cion simbolica de un conductor que gira dentro de un campo magnetico, como puede

ser la bobina del rotor de un motor electrico [Jac73, 299].

1.5 Radian. Un radian. es aquella distancia angular A X que recorre un fasor cuan-

do su extremo libre X recorre una distancia lineal igual a la longitud OX del fasor

[Jac73, 308]. Ası,

1 rad. =360

2π= 57,3o

1o =2π

360= 0,017 rad.

Page 13: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 12

1.6 Capacitancia. Otro concepto es la capacitancia. Entonces, la capacitancia es

una constante numerica que representa la capacidad de un capacitor para almacenar

una carga electrica [?, 160]. Pero tambien es la ”... propiedad de un circuito electri-

co que se opone a cualquier cambio en el voltaje en ese circuito.”[?, 162].

1.7 Inductancia. Una inductancia es la ”...propiedad de un circuito electrico que

se opone a cualquier cambio en la corriente que pasa por ese circuito [p:261]. [...] Un

circuito tiene una inductancia de un henrio cuando la corriente que cambia a la ve-

locidad de un ampere por segundo induce una fuerza contraelectromotrız de un volt

en ese circuito”[?, 262].

R

L

wL

XL =√

R2 + jwL

Figura 1.5: Fasor de la inductancia

1.8 Reactancia inductiva. Una reactancia inductiva es aquella ”...oposicion origi-

nada por una inductancia al flujo de una corriente alterna. ... Un circuito de ca tiene

una reactancia inductiva de un ohm cuando una corriente alterna que tiene un valor

efectivo de un ampere y que fluye por la inductancia, produce una caida de voltaje

inductivo con un valor efectivo de un volt en la inductancia”[Jac73, 325-326]. Enton-

ces, la reactancia inductiva esta dada por:

XL = 2πfL

donde XL es la reactancia inductancia en ohms, L es el valor de la inductancia en

henrios, y f es la frecuencia trabajo en hertz donde la inductancia tiene efecto .

1.9 Reactancia capacitiva. Podemos definir la reactancia capacitiva como ”...opo-

Page 14: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 13

sicion creada por una capacitancia al flujo de la corriente alterna [Jac73, 262]. ... Un

circuito de ca tiene una rectancia capacitiva de un ohm cuando una corriente alterna

con un valor efectivo de un ampere origina una diferencia de potencial alterma con

un valor de un volt en la capacitancia.”, es decir

XC =1

2πfC

donde XC es la reactancia capacitiva en ohms, C es el valor de la capacitancia en

farads, y f es la frecuencia trabajo en hertz adonde dicha capacitancia tiene su efecto.

1.10 Valor medio. De acuerdo con Edminister [Edm70, 16], el valor medio Ym de

una funcion periodica y(t) de periodo T esta dado por la expresion

Ymed =1

T

∫ T

0y(t) dt (1.2)

1.11 Valor eficaz. Cuando circula una corriente de intensidad i(t) por un elemento

resistivo puro de resistencia R, este disipa una potencia p(t) con un valor medio P .

Esta misma potencia P la puede disipar una corriente constante de intensidad I cir-

culando por dicha R. En estas condiciones, diremos que i(t) tiene un valor eficaz Ief

equivalente a la corriente constante I. Lo mismo diriamos respecto de la tension efi-

caz Vef . Matematicamente, dada la funcion y(t) de periodo T , su valor eficaz (rms)

sera por definicion

Yef =

√1

T

∫ T

0y(t)2 dt (1.3)

El valor eficaz de las funciones a sin(ωt) y a cos(ωt) durante un periodo es a√2.

1.12 Valor eficaz con senos y cosenos. Por otro lado, el valor eficaz de una fun-

cion de senos y cosenos, es decir, el valor eficaz de una funcion y(t) = a0+(a1 cosωt+

a2 cos 2ωt+ · · ·) + (b1 sinωt+ b2 sin 2ωt+ · · ·) estara dada por

Yef =

a20 +1

2(a21 + a22 + · · ·) + 1

2(b21 + b22 + · · ·) (1.4)

Page 15: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 14

llamando A al valor eficaz de la funcion a1 cosωt, y de acuerdo con lo anterior,

A1 =a1√2, o bien A2

1 =a212 , por lo tanto

Yef =√a20 + (A2

1 + A22 + · · ·) + (B2

1 +B22 + · · ·) (1.5)

Ejemplo.1 Hallar el valor eficaz de la funcion y = 50 + 30 sinωt.Solucion.

Y 2ef =

1

∫ 2π

0(2500 + 3000 sinωt+ 900 sen2 ωt)d(ωt)

=1

2π[2500 + 0 + 900 sin2 π]

= 2950

Yef = 54,3

otro metodo

Yef =

√(50)2 +

1

2(302)

=√2950

Yef = 54,3

Ejemplo.2 Hallar el valor eficaz de la funcion de tension v = 50 + 141,4 sinωt+ 35,5 sin 3ωtSolucion.

Vef =

√(50)2 +

1

2(141,4)2 +

1

2(35,5)2

Vef = 114,6

1.13 Relacion entre valores p, pp, rms, y m. La siguiente tabla nos da una re-

lacion entre los valores pico, pico-pico, eficaz, y valor medio, de una onda senoidal

[Pen77].

1Problema 2.11 del [Edm70]2Problema 2.12 del [Edm70]

Page 16: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 1. ELEMENTOS ELECTRICOS 15

Para obtener estoPromedio Pico Pico-Pico R.M.S.

Promedio 1.000 1.572 3.144 1.111Multiplicar Pico 1.636 1.000 2.000 0.707por esto Pico-Pico 0.318 0.500 1.000 0.353

R.M.S. 0.849 1.414 1.828 1.000

Tabla 1.1: Tabla de valores de una onda

Page 17: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 2

Elementos Acusticos

2.1 Acustica. Podemos definir la acustica como la ciencia que estudia las vibracio-

nes de los infrasonidos (abajo de 20 Hz.), de los sonidos (20-20 Khz), y los ultraso-

nidos (arriba de 20 Khz.). O bien, de una manera mas formal como ”... la genera-

cion, transmision, y recepcion de la energia en la forma de vibraciones de ondas en la

materia”[Kin67, 1].

2.2 Resistencia acustica. Analoga a la resistencia electrica, la resistencia acusti-

ca es un dispositivo acustico que disipa energıa en forma de calor, debido a la friccion ¿Que esla resis-tenciaacustica?

de las moleculas de un fluido. [Kin67, 191]. En un resonador Helmholtz, la radiacion

de la energıa del sonido sera:

R =ρ0ck2

dondeR = es la resistenica acustica en ohms acusticos.c = 343 m/seg es la velocidad termodinamica del sonido.ρ0c = 428 rails es la impedancia caracterısticarail = pa · k/mρ = 1,21 Kg/seg. constante de densidad acustica.k = es la constante de un resorte.

2.3 Inertancia acustica. Analoga a la inductancia electrica, es la masa M que tie- ¿Que esla iner-tanciaacustica?

ne un elemento acustico y que se opone a qualquier cambio de variacion en el movi-

16

Page 18: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 2. ELEMENTOS ACUSTICOS 17

miento de las partıculas del medio [Kin67, 190]. Entonces la inertancia acustica es:

M =m

S2

sustituyendo m por ρ0l′ de un resonador helmholts,

M =ρ0l′S

S2,

simplificando S,

M =ρ0l′

S.

dondeM = inertancia acustica en ohms acusticos Ωac.m = masa efectiva del elemento acustico en kgs.S = area transversal del orificio en mts2.ρ = 1,21Kg/seg. constante de densidad acustica.l′ = longitud efectiva del cuello en mts

(un poco mayor que la longitud real l).

2.4 Complianza acustica. Analogo a la capacitancia electrica (carga que aparece

en un capacitor por unidad de voltaje aplicado), la complianza (elasticidad) acustica ¿Que esla com-plianzaacustica?

C de un elemento acustico .es el volumen de desplazamiento X que produce la apli-

cacion de una unidad de presion”[Kin67, 191]. Para un volumen V de en un resona-

dor Helmholtz, dicha complianza acustica sera:

C =V

ρ0c2

dondeC = complianza acustica en m4sec2/kg farads acuaticos,V = es el volumen (en mts3) del recinto .m = es la masa del elemento (en kg). .ρ0c = 428 rails es la impedancia caracterısticarail = pa · k/mρ = 1,21 Kg/seg. constante de densidad acustica.

donde C esta en m4sec2/kg unidades (farads acuaticos, V es el volumen (en

mts3) del recinto, y m es la masa del elemento (en kg).

2.5 Impedancia acustica. Las unidades de la impedancia acustica es el ohm acusti-

co definido como:

Page 19: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 2. ELEMENTOS ACUSTICOS 18

presion.

velocidad de volumen.=

newtons/m2

m3/seg=

kg

m4/seg

Page 20: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 3

Fısica del Sonido

3.1 Velocidad. Dada una funcion y = f(x), podemos interpretar se derivada como

el ritmo de cambio de y con respecto a x. De esta forma, la velocidad es el cambio de

la posicion que experimenta un cuerpo con respecto al tiempo 1.

v =dy

dt

3.2 Aceleracion. De la misma forma, si a = f(v), podemos interpretar la derivada

de la velocidad como aceleracion. Entonces, la aceleracion es el ritmo de cambio de

la velocidad que experimenta un cuerpo con respecto el tiempo 2.

con respecto a la velocidad

a =dv

dt

con respecto a la posicion

a =d2y

dt2

3.3 Analisis de cuerda compuesta Estudiar el movimiento ondulatorio y la trans-

mision de energıa en la vibracion transversal de una cuerda compuesta. 3

1Ridnik V. I., ¿Que es la mecanica cuantica?, MIR, 1977, p.1122idem, Rıdnik3Problema 1.20, del [Set78, 22].

19

Page 21: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 20

Solucion:

Para tener en cuenta el cambio de fase y el cambio en la densidad de masa de

la cuerda, utilizaremos la exponencial compleja para representar las ondas progresi-

vas armonicas de la cuerda.

y1(x, t) = Aeiω(t−xa1

) +Beiω(t−xa1

) (3.1)

y2(x, t) = Ceiω(t−xa2

) (3.2)

Donde: a1 =√

S(ρL)1

, a1 =√

S(ρL)1

, S es la tension de la cuerda, y ρL es la masa por

unidad de longitud de la cuerda.

El termino Aeiω(t−xa1

) de la expresion (3.1), es una onda incidente moviendose

en la direccion positiva de x con una velocidad a1.

De de misma expresion (3.1), Beiω(t−xa1

) es la onda reflejada que viaja en una

direccion negativa de x con una velocidad a1. y2(x, t) es la onda en movimiento que

se transmite en direccion positiva de x con velocidad a2.

3.4 Oscilador simple. De acuerdo con la Figura 3.1, un oscilador simple es un dis-

positivo compuesto por una masa m que esta sujeta a un resorte y restringida a mo-

verse de manera paralela a dicho resorte; la masa vibrara si se desplaza ligeramente

de una posicion de equilibrio y se suelta.

L L

Figura 3.1: Oscilador simple.

3.5 Vibracion armonica simple. Una vibracion armonica simple es una funcion

senoidal en el tiempo que resulta del desplazamiento de una particula a partir de su

posicion de equilibrio. Sus caracterısticas son: una fuerza restauradora inversaimen-

te proporcional (Ley de Hooke), no hay atenuacion de movimiento, y la frecuencia de

vibracion es independiente de la ampliatud.

Page 22: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 21

Consideremos un oscilador simple y supongamos que la fuerza f del resorte se

puede expresar por la ecuacion

f = −sx (3.3)

donde x es el desplazamiento da la masa m desde la posicion en reposo, s es la cons-

tante de rigidez del resorte o elsaticidad, y el signo menos (-) indica que la fuerza es

directamente opuesta al desplazamiento.

Sustituyendo (3.3) en la expresion general de movimiento lineal la cual dice que

la “fuerza es igual a la masa por la aceleracion (f = ma)”, tenemos

f = md2x

dt2(3.4)

si igualamos (3.3) y (3.4) tenemos

−sx = md2xdt2

dividiendo ambos miembros entre m

−sxm = m/

m/d2xdt2

reordenando e igualando con cero

0 = smx+ d2x

dt2

finalmente tenemosd2x

dt2+

s

mx = 0 (3.5)

Esta expresion es una ecuacion diferencial lineal de segundo orden cuya solucion

puede obtenerse por varios metodos. El primero de ellos supone una sulucion del tipo

x = A1 cos γt

Diferenciamos y sustituimos en la expresion (3.5) observamos que es similar si

γ la hacemos igual a√

sm tenemos

x = A1γ sin√

s

mt (3.6)

Page 23: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 22

que tambien es una solucion. La solucion general completa es la suma de esas dos so-

luciones, entonces

x = A1γ cos√

s

mt + A2γ sin

√s

mt (3.7)

donde A1 y A2 son constantes arbitrarias; Si sustituimos la relacion√

sm por la fre-

cuencia angular ω0, entonces la ecuacion (3.7) quedara como

x = A1 cosω0t + A2 sinω0t (3.8)

3.6 Frecuencia de un oscilador armonico simple. Recordemos que la frecuen-

cia f0 de vibracion de un oscilador armonico simple estara relacionada con el valor

de la constante de frecuancia angular ω0 mediente la ecuacion ω0 = 2πf0, esto es

f0 =ω02π = 1

√sm

cuyo periodo sera

T = 1f0.

3.7 Condiciones iniciales de un sistema masa-resorte. Una condicion inicial

es la manera con la cual la masa m de un sistema masa-resorte comienza su movi-

miento [Kin67, 4]. Es en este momento cuando se determinaran las constantes A1,

A2. Por ejemplo, si en un tiempo t = 0 la masa m tiene un desplazamiento inicial x0

y una velocidad v0, entonces el movimiento subsecuente de la masa m tambien que-

dara determinado de acuerdo con los valores de A1 y A2 iniciales.

Sustituyendo x = x0 y t = 0 en la expresion (3.8) veremos que A1 = x0. Dife-

renciando esta misma expresion (3.8) y sustitiyendo v0 quedara como

v0 = −ω0A1 sin(0) + ω0A2 cos(0) (3.9)

de manera que v0 tiene que ser igual a ω0A2, por lo tanto A2 =v0ω0, ademas la expre-

sion (3.8) se convertira en

x = x0 cosω0t +v0ω0

sinω0t (3.10)

Page 24: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 23

Por otro lado, es posible obtener de otra manera la expresion (3.8). Esto se lo-

gra haciendo A1 = −A sin θ, donde A y θ son dos nuevas constantes arbitrarias. Sus-

tituyendo A1 por −A sin θ en dicha expresion (3.8), y simplificando tendremos que

x = A cos(ω0t + φ) (3.11)

donde A es la amplitud del movimiento y φ es el angulo de fase inical de dicho mo-

vimiento. Veremos que los valores de A y φ estaran determinados por las condiciones

iniciales usuales, los cuales seran

A =

(

x20 +

v20ω20

) 12

, y φ = tan−1

(−v0ω0x0

)

(3.12)

Ejemplo.4 Dados dos resortes de rigidez s y dos cuerpos de masa m, encontrar las frecuen-

cias de resonancia de las siguientes figuras: Solucion fa = 12π

√2sm ; fb = 1

√s

2m ; fc = 12π

√s

2m ;

fd = 12π

√2sm ;

MMM

M

s

s

s

s

sss

(c) (d)(b)(a)

M

Solucion (a). Sabemos que cuando se encuentran conectados dos resortes en paralelo, la elastanciatotal kt de ambos resortes sera la suma de cada uno de ellos (como capacitores en paralelo) de acuer-do como lo indican las expresiones kt = k1 + k2. Si k1 = k2, entonces kt = 2k. la expresion de equi-librio para este circuito sera

k1

∫µ(t)dt+ k2

∫µ(t)dt+m

dµ(t)

dt= 0

kt

∫µ(t)dt+m

dµ(t)

dt= 0

2k

∫/ d/x(t)

dt/dt+m

d2x(t)

dt2= 0

2kx(t) +md2x(t)

dt2= 0 · · · · · · · · · (a)

4Problema 1.1 del [Kin93] pg. 94 y 577.

Page 25: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 24

tambien sabemos que la sulucion es

x(t) = A cosωt

dx(t)

dt= −Aω sinωt

d2x(t)

dt2= −Aω2 cosωt

sustituyenfo en (a)

2k A cosωt+m(−Aω2 cosωt) = 0

2k A cosωt−mAω2 cosωt = 0

dividiendo ente A cosωt

2k A cosωt

A cosωt− mAω2 cosωt

A cosωt= 0

esto es

2k −mω20 = 0

ω20m = 2k

ω20 =

2k

m

finalmente

ω0 =√

2km rad/seg

la frecuencia de resonancia es

f = 12π

√2km

si k = s

f = 12π

√2sm

Solucion (b). Sabemos que cuando se encuentran conectados dos masas en serie, la masa total mt

de ambos resortes sera la suma de cada uno de ellos (como capacitores en paralelo) de acuredo co-mo lo indican las expresiones mt = m1 +m2. Si m1 = m2, entonces mt = 2m. la expresion de equi-librio para este circuito sera

k

∫µ(t)dt+m1

dµ(t)

dt+m2

dµ(t)

dt= 0

k

∫µ(t)dt +mt

dµ(t)

dt= 0

k

∫µ(t)dt+ 2m

dµ(t)

dt= 0

k

∫/ dx(t)

dt/dt/ + 2m

d2x(t)

dt2= 0

kx(t) + 2md2x(t)

dt2= 0 · · · · · · · · · (b)

Page 26: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 25

sabemos que

x(t) = A cosωt

dx(t)

dt= −Aω sinωt

d2x(t)

dt2= −Aω2 cosωt

sustituyenfo en (b)

kA cosωt+ 2m(−Aω2 cosωt) = 0

kA cosωt− 2mAω2 cosωt = 0

dividiendo ente A cosωt

k A cosωt

A cosωt− 2mAω2 cosωt

A cosωt= 0

esto es

k − 2mω20 = 0

2ω20m = k

ω20 =

k

2m

finalmente

ω0 =√

k2m rad/seg

la frecuencia de resonancia es

f = 12π

√k2m

si k = s finalmente tenemos resuelto el inciso b.

f = 12π

√s

2m hz

Solucion (c). Sabemos que cuando se encuentran conectados dos resortes en serie, la elastancia totalkt de ambos resortes sera menor que el menor valor de uno de ellos (como capacitores en serie) de acu-redo como lo indican las expresiones kt =

11k1

+ 1k2

, o bien 1kt

= 1k1

+ 1k2, pero tambien sera kt =

k1·k2k1+k2

.

Si k1 = k2, entonces

1

kt=

1

k+

1

k1

kt=

1 + 1

k1

kt=

2

kkt1

=k

2

kt = k2

Page 27: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 26

otra forma, si k1 = k2, entonces kt sera

kt =k1 · k2k1 + k2

kt =k · kk + k

kt =k2

2k

kt =k2

Por lo tanto, la expresion de equilibrio del circuito anterior sera :

k1

∫µ(t)dt+ k2

∫µ(t)dt+m

dµ(t)

dt= 0

kt

∫µ(t)dt+m

dµ(t)

dt= 0

k

2

∫d/x(t)

dt/dt+m

d2x(t)

dt2= 0

k

2x(t) +m

d2x(t)

dt2= 0 · · · · · · · · · (c)

sabemos que

x(t) = A cosωt

dx(t)

dt= −Aω sinωt

d2x(t)

dt2= −Aω2 cosωt

sustituyenfo en (c)

k

2A cosωt+m(−Aω2 cosωt) = 0

k

2A cosωt−mAω2 cosωt = 0

dividiendo ente A cosωt

k

2

A cosωt

A cosωt− mAω2 cosωt

A cosωt= 0

esto es

k

2−mω2

0 = 0

mω20 =

k

2

ω20 =

k

2m

finalmente

ω0 =√

k2m rad/seg

Page 28: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 27

la frecuencia de resonancia es

f = 12π

√k2m

si k = s finalmente tenemos resuelto (c)

f = 12π

√s

2m hz

Solucion (d). Al igual que en la sulucion (a), puesto que el circuito es el mismo (los dos resortes seencuentran conectados en el mismo nodo), sabemos que cuando se encuentran conectados dos resor-tes en paralelo, la elastancia total kt de ambos resortes sera la suma de cada uno de ellos (como ca-pacitores en paralelo) de acuredo como lo indican las expresiones kt = k1 + k2. Si k1 = k2, entonceskt = 2k. la expresion de equilibrio para este circuito sera

k1

∫µ(t)dt + k2

∫µ(t)dt+m

dµ(t)

dt= 0

kt

∫µ(t)dt+m

dµ(t)

dt= 0

2k

∫/ d/x(t)

dt/dt+m

d2x(t)

dt2= 0

2kx(t) +md2x(t)

dt2= 0 · · · · · · · · · (d)

tambien sabemos que la sulucion es

x(t) = A cosωt

dx(t)

dt= −Aω sinωt

d2x(t)

dt2= −Aω2 cosωt

sustituyenfo en (d)

2k A cosωt+m(−Aω2 cosωt) = 0

2k A cosωt−mAω2 cosωt = 0

dividiendo ente A cosωt

2k A cosωt

A cosωt− mAω2 cosωt

A cosωt= 0

esto es

2k −mω20 = 0

ω20m = 2k

ω20 =

2k

m

finalmente

ω0 =√

2km rad/seg

Page 29: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 3. FISICA DEL SONIDO 28

la frecuencia de resonancia es

f = 12π

√2km

si k = s

f = 12π

√2sm

Page 30: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 4

Entrada de Audio.

4.1 Estructura de datos hardware de entrada. Antes de capturar el sonido es

necesario llenar la estructura WAVEFORMATEX que muestramos en la Figura (4)

con la informacion del proceso de captura de senales digitales.

typedef struct

WORD wFormatTag; // tipo de formato de sonido.WORD nChannels; // mono o estereoDWORD nSamplesPerSec; // relacion de muestreo.DWORD nAvgBytesPerSec; // Relacion Tx de datosWORD nBlockAlign; // bloques dep. del tipo.WORD wBitsPerSample; // n bits por muestra.WORD cbSize; // informacion extra.

WAVEFORMATEX;

Figura 4.1: Estructura de datos hardware de sonido

CAMPO DESCRIPCIONwFormatTag Tipo de formato de onda.nChannels Numero de canales utilizados (1 o 2).nSamplesPerSec Numero de muestras por segundo.1

nAvgBytesPerSec Relacion de transferencia de datos.2

nBlockAlign Numero de bloques alineados.3

wBitsPerSample Bits por muestra para el formato especificado.4

cbSize Informacion extra cuando el formato no es PCM.5

Figura 4.2: Descripcion de WAVEFORMATEX

29

Page 31: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 4. ENTRADA DE AUDIO. 30

1 Si wFormatTag tiene la bandera WAVE FORMAT PCM, entonces losvalores estandard (en Khz.) de las muestras pueden ser 8, 11.025,22.05, 44.1.

2 Si wFormatTag tiene la bandera WAVE FORMAT PCM, entoncesnAvgBytesPerSec = (nSamplesPerSec)·(nBlockAlign).

3 Es la unidad mınima de datos para el tipo de formato.

4 Si wFormatTag tiene la bandera WAVE FORMAT PCM, entoncesnBlockAlign= (nChannels)·(wBitsPerSample)/8.

5 Si wFormatTag tiene la bandera WAVE FORMAT PCM,wBitsPerSample debe ser igual a 8 o 16; [Pet99].

Otra estructura que se debe llenar es WAVEHDR, la cual se muestra en la Figura

(4) y donde se definen los parametros que identifican un buffer de sonido en memo-

ria RAM.

typedef struct

LPSTR lpData; // direccion del buffer.DWORD dwBufferLength; // tama~no del buffer.DWORD dwBytesRecorded; // n bytes grabados.DWORD dwUser; // datos de usuario.DWORD dwFlags; // banderas de control.DWORD dwLoops; // n repeticiones.struct wavehdr_tag *lpNext. // si estan encoladas.DWORD reserved; // otra informacion.

WAVEHDR;

Figura 4.3: Estructura de datos software de sonido

Page 32: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 4. ENTRADA DE AUDIO. 31

CAMPO DESCRIPCIONlpData Direccion del buffer en RAM.dwBufferLength Numero de bytes del buffer.dwBytesRecorded Numero de datos de entrada.1

dwUser Datos especificados por el usuario.dwFlags Banderas del driver acerca del buffer.2

dwLoops Numero de repeticiones del proceso.struct wavehdr tag *lpNext si hay estructuras encoladas.reserved Reservado para informacion extra.

Figura 4.4: Descripcion de WAVEFORMATEX

1 Se establece cuando la estructura se utiliza como entrada (cuantosbytes llegaron).

2 BANDERAS:

WHDR BEGINLOOP Indica que es el primer buffer en la cola (solo para bufferde salida).

WHDR DONE Indica que ha finalizado el buffer y esta regresando a laaplicacion.

WHDR ENDLOOP Indica que es el ultimo buffer en la cola (solo para bufferde salida).

WHDR INQUEUE Indica que el buffer esta en la cola listo para su reproduc-cion;

WHDR PREPARED Indica que el buffer esta preparado como entrada o salida.

En el anexo se presenta el codigo fuente de un programa llamado entrada.c

que permite realizar la captura de sonido en maquinas MSWindows.

4.2 Captura de sonido con MATLAB. MATLAB contiene varias funciones que

permite procesar sonido utilizando el sistema de audio que vine integrado en una

computadora digital moderna. Asegurese que haya un microfono conectado a la ter-

jeta de sonido, o bien utilizar el microfono integrado. Tambien asegurese que el soni-

do se pueda escuchar en el altavoz de la maquina.

Para la captura de audio utilizaremos la funcion wavrecord(n,s,c,d), donde

n es la cantidad de muestras de audio, s es la frecuencia de muestreo y c es el nume-

ro de canales, y d es el numero de bits por muestra. Ejemplo: capturar y depositar

Page 33: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 4. ENTRADA DE AUDIO. 32

en el vector x 16000 datos, a 8000 muestras por segundo, monocanal, y con datos de

16 bits por muestra [Mcl09, p: 8].

x = wavrecord(16000,8000,1,’double’);

Page 34: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 5

Salida de Audio.

5.1 Reproduccion de sonido con MATLAB. Para reproducir el sonido utilizar

la funcion sound(x, s), donde x es el vector de datos que contiene el sonido, y s es la

frecuencia de muestras por segundo. Ejemplo: reproducir el sonido que se encuentra

en el vector x.

sound(x);

o bien, reproducir x a 8000 muestras por segundo:

sound(x,8000);

Tambien es posible utilizar la funcion wavplay(x, s) para el mismo proposito.

Ejemplo: Ejemplo: reproducir el sonido que se encuentra en el vector x.

wavplay(x);

o bien, reproducir x a 8000 muestras por segundo:

wavplay(x,8000);

Es conveniente, ademas de escuchar el sonido, obtener una grafica del vector x,

lo cual se logra con la funcion plot(x). Ejemplo, graficar el sonido de x:

plot(x);

33

Page 35: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 6

Archivos WAV.

6.1 Formato de archivos de sonido WAV

Este formato, desarrollado por Microsoft a principios de los 90’s, permite alma-

cenar datos sin compactar en un archivo digital. En la Tabla (6.1), se presenta el de-

talle de este tipo de archivos. Consideremos una matriz de m x n donde n (0H-FH)

son las filas, y m (0H-FH) son las columnas. Los elementos de la matriz son numeros

hexadecimales que constituyen cada uno de los campos que definen las caracteristi-

cas de un archivo .wav. A continuacion describimos cada uno de dichos campos.

El primer campo de la matriz ocupa los elementos 00, 01, 02 y 03. En ellos se en-

cuentran los cuatro numeros que identifican a un archivo de sonido WAV. Agrupando-

los en cuatro bytes corresponderan a una cadena de caracteres ASCII que contienen

la palabra RIFF”la cual es conocida como ”numero magico”. Dichos numeros en he-

xadecimal son: 52H, 49H, 46H, y 46H.

El siguiente campo corresponde al tamno del archivo que contiene el sonido

WAV. Estos numeros corresponden a la secuencia B0, B1, B2, y B3, los cuales ocu-

pan los elementos de la matriz 04, 05, 06, 07. Notese que primero se lee el byte me-

nos significativo, y hasta el ultimo se lee el byte mas significativo.

Continuando con nuestra descripcion, el siguiente campo numerado con los ele-

mentos 08,09,0A y 0B de la matriz contienen una cadena de caracteres ASCII que co-

rresponde a la palabra ”WAVEcuya secuencia de numeros en hexadecimal son 57H,

34

Page 36: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 6. ARCHIVOS WAV. 35

41H, 56H, y 45H.

En cuanto al siguente campo numerado con 0CH,0DH,0EH y 0FH, contiene una

secuencia de cracteres ASCII que corresponden a la palabra ”fmt ”. Notese que dicha

palabra termina con un espacio en blanco. Entonces, su secuencia de numeros hxa-

decimales seran 66, 6D, 74 y 20. Este ultimo corresponde al caracter espacio (20H).

Ahora bien, el campo que sigue se encuentra en las posiciones 10,11, 12 y 13 de

la matriz. En ellas se encuantra un numero entero de 4 bytes que nos especifica el ta-

mano del bloque. Este numero contiene la secuancia B0, B1, B2, y B3 semejante en

orden a como se ha descrito en el campo Tamano del Archivo. Es evidente que su va-

lor variara de acuerdo con un archivo.wav determinado.

Por otra parte, el siguiente campo (elementos 14 y 15) contienen un numero en-

tero formado por 2 bytes (B0 y B1) para indicar el tipo de formato. Si este numero

es igual a cero, entonces indica que el archivo se ha grabado de manera monoaural

(un solo microfono). Pero si dicho entero es igual a uno, entonces el sonido se graba-

do con dos microfonos, es decir, en estereofonıa.

Campo 7: bytes 16 y 17 contiene nuevamente un numero entero de 2 bytes, des-

criben el numero de canales; Campo 8: bytes 18, 19, 1A y 1B contiene un numero en-

tero de 4 bytes que nos indica la frecuencia de muestreo. Puede valer 11,025, 22,050

o 44,100 Hz; Campo 9: bytes 1C, 1D, 1E y 1F numero entero de 4 bytes que nos in-

dica el numero de bytes por segundo que debemos intercambiar con la tarjeta de so-

nido para una grabacion o reproduccion; Campo 10: bytes 20 y 21 numero de 2 by-

tes que nos muestra los Bytes por muestra. Pueden ser 1=8 bits mono, 2=8 bits es-

tero o 16 mono o 4=16 bits estereo; Campo 11: bytes 22 y 23 numero de 2 bytes pa-

ra representar los bits por muestra. Pueden ser 8 o 16. Campo 12: bytes 24, 25, 26 y

27 contiene la palabra data en codigo ASCII; Por ultimo el campo 13: bytes 28, 29,

2A y 2B contiene un numero entero de 4 bytes que representa la cantidad de datos

wav que tenemos en nuestro archivo. Finalizando este campo, los demas son ocupa-

dos por los datos de audio correspondientes.

Page 37: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 6. ARCHIVOS WAV. 36

0 1 2 3 4 5 6 7 8 9 A B C D E F

0 52 49 46 46 B0 B1 B2 B3 57 41 56 45 66 62 74 201 B0 B1 B2 B3 B0 B1 B0 B1 B0 B1 B2 B3 B0 B1 B2 B3

2 B0 B1 B0 B1 64 61 76 61 B0 B1 B2 B3 d0 d0 d1 d23 d3 d4 d5 d6 d7 d8 d9 d10 d12 d13 d14 d15 d16 d17 d18 d194

Tabla 6.1: Primeros bytes de encabezado de un archivo de sonido WAV

0 4 bytes [52][49][46][46] Identificador de archivo [RIFF]1 4 bytes [B0][B1][B2][B3] Tamano del archivo2 4 bytes [57][41][56][45] Tipo de archivo [WAVE]3 4 bytes [66][62][74][20] Bloque [Fmt ]4 4 bytes [B0][B1][B2][B3] Tamano bloque encabezado5 2 bytes [B0][B1] Tipo de fotrmato (0=monaural, 1=estereo)6 2 bytes [B0][B1] Numero de canales7 4 bytes [B0][B1][B2][B3] Relacion de muestreo8 4 bytes [B0][B1][B2][B3] Bytes por segundo9 2 bytes [B0][B1] Bytes por muestra (1=8 bits mono, 2=8 bits estereo.

o 16 mono, 4=16 bits estereo)10 2 bytes [B0][B1] Bits por muestra11 4 bytes [64][61][74][61] Bloque [data]12 4 bytes [B0][B1][B2][B3] Numero de datos...

...n x data

Figura 6.1: Formato de encabezado un archivo de sonido WAV

6.2 Reproduccion de un archivo WAV con MATLAB. Por otro lado, para

leer un archivo.wav utilizar la funcion wavread(file), donde file es el nombre del ar-

chivo. Ejemplo: leer el archivo max.wav y depositar los datos en el vector x.

x = wavread(’file.wav’);

Page 38: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 7

Prediccion Lineal

7.1 La prediccion lineal

LPC (Linear Prediction Code) tiene las siguientes ventajas: 1) Proporciona un

modelo edecuado para las senales de voz humana (senales estacionarias vs. sonidos

sordos). 2) Permite obtener los parametros que muestran un espectro suavizado de

la senal de voz. 3) Es un metodo preciso, rapido, y adecuado para implementarse en

sistemas computacionales.

Funciona buscando el mınimo error que se produce al extrapolar el valor de una

muestra de voz x(n) partiendo de la informacion que proporcionan las k muestras an-

teriores x(n − 1), x(n − 2), . . ., x(n − k), para esto se utilizan los metodos lineales.

[Ber00, 144].

x(n) =k∑

i=1

ai · x(n− i) (7.1)

donde:

Para calculan los coeficientes ai minimizando el error, se aplica mınimos cua-

drados. Primero se forma el error cuadratico medio L dentro de un intervalo n que se

desea considerar (de un maximo de N muestras).

L =∑

n

e2(n) = x(n)−k∑

i=1

ai · x(n− i) (7.2)

37

Page 39: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 7. PREDICCION LINEAL 38

0 ≤ n ≤ N − 1

donde:

x(n) muestra actualx(n) muestra predicha

n intervalo de muestrasi ındice de una muestra anteriork maximo de muestras anterioresai coeficiente de una muestraN tamano de un conjunto de muestrasL mınimo valor cuadratico medio

Para calcular el valor mınimo de L se deriva con respecto a cada una de las va-

riables aj | 1 ≤ j ≤ k

∂L

∂aj= 0 1 ≤ j ≤ k (7.3)

derivando la ecuacion [7.2]

∂L

∂aj=

∂aj

n

(

x(n)−k∑

i=1

ai · x(n− i)

)2

= 0

ordenando∑

n

∂L

∂aj=∑

n

∂aj

(

x(n)−k∑

i=1

ai · x(n− i)

︸ ︷︷ ︸v

)2

= 0

notese que:

dcdx = 0 dvn

dx = n · vn−1 dvdx

∂aj(v) =

∂aj

(x(n) −

k∑

x=1

ai · x(n− i)

)

=∂

∂aj

(x(n)

)− ∂

∂aj

( k∑

i=0

ai · x(n− i)

)

=∂

∂aj

(x(n)

)−

k∑

i=1

∂aj

(ai · x(n− i)

)

=

0︷ ︸︸ ︷∂x(n)

∂aj−(

1︷ ︸︸ ︷k∑

i=1

∂ai∂aj

)x(n− i)

︸ ︷︷ ︸si aj = ai

Page 40: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 7. PREDICCION LINEAL 39

∂aj(v) = x(n− j)

∂L

∂aj=∑

n

(2)∂

∂aj

(

x(n)−k∑

i=1

ai · x(n− i)

)2−1

·(

x(n)−k∑

i=1

ai · x(n− i)

)

= 0

∂L

∂aj= −2

n

x(n− j)

(

x(n)−k∑

i=1

ai · x(n− i)

)

= −2∑

n

x(n− j) · e(n) = 0

∂L

∂aj=

n

x(n− j) · e(n) = 0 1 ≤ j ≤ k

Esta expresion anterior tambien se puede desarrollar como:

n

x(n− j) ·(

x(n)−k∑

i=1

ai · x(n− i)

)

=∑

n

x(n− j) · x(n)−k∑

i=1

ai ·∑

n

·x(n− j) · x(n− i)

=

∣∣∣∣∣ Cj0 −k∑

j=1

ai · Cji

donde :

Cji =∑

n

x(n− j) · x(n− i)

1

Una forma de limitar el valor de n en la sumatoria es anular las muestras que

no esten en el intervalo 0 ≤ n ≤ N − 1. Esto es equivalente a colocar una ventana

rectangular en dicho intervalo. Por lo tanto, si Cij = Cji = r|i−j|, entonces los valo-

res de r|i−j| son los coeficientes de una matrız de autocorrelacion cuya propiedad son

la simetrıa. Esto quiere decir que los elementos de la diagonal son iguales (matrız

1[Val77]Val77 Valkenburg M.E. Van, Analisis de Redes, Limusa, 1977. 636 pgs.

Page 41: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 7. PREDICCION LINEAL 40

Toeplitz). Para resolverla se pueden utilizar tanto el metodo de descomposicion Cho-

lesky o bien el algoritmo de Levinson-Durbin. A esto se conoce como el metodo de au-

tocorrelacion, de esta manera,

k∑

i=1

rn(|j − i|) · ai = rn(j) 1 ≤ j ≤ k

o de manera matricial,

⎢⎢⎢⎢⎢⎢⎢⎣

rn(0) rn(1) rn(2) . . . rnk − 1rn(1) rn(0) rn(1) . . . rn(k − 2)rn(2) rn(1) rn(0) . . . rn(k − 3)...

......

. . ....

rn(k − 1) rn(k − 2) rn(k − 3) . . . rn(0)

⎥⎥⎥⎥⎥⎥⎥⎦

⎢⎢⎢⎢⎢⎢⎢⎣

a1a2a3...ak

⎥⎥⎥⎥⎥⎥⎥⎦

=

⎢⎢⎢⎢⎢⎢⎢⎣

rn(1)rn(2)rn(3)...

rn(k)

⎥⎥⎥⎥⎥⎥⎥⎦

(7.4)

Ejemplo. Desarrollar la ecuacion [7.1] para k=5:

x(n) =5∑

i=1

ai · x(n− i)

x(0) = a1x(0 − 1) + a2x(0 − 2) + a3x(0 − 3) + a4x(0 − 4) + a5x(0− 5)

= a1x(−1) + a2x(−2) + a3x(−3) + a4x(−4) + a5x(−5)x(1) = a1x(1 − 1) + a2x(1 − 2) + a3x(1 − 3) + a4x(1 − 4) + a5x(1− 5)

= a1x(0) + a2x(−1) + a3x(−2) + a4x(−3) + a5x(−4)x(2) = a1x(2 − 1) + a2x(2 − 2) + a3x(2 − 3) + a4x(2 − 4) + a5x(2− 5)

= a1x(1) + a2x(0) + a3x(−1) + a4x(−2) + a5x(−3)x(3) = a1x(3 − 1) + a2x(3 − 2) + a3x(3 − 3) + a4x(3 − 4) + a5x(3− 5)

= a1x(2) + a2x(1) + a3x(0) + a4x(−1) + a5x(−2)x(4) = a1x(4 − 1) + a2x(4 − 2) + a3x(4 − 3) + a4x(4 − 4) + a5x(4− 5)

= a1x(3) + a2x(2) + a3x(1) + a4x(0) + a5x(−1)x(5) = a1x(5 − 1) + a2x(5 − 2) + a3x(5 − 3) + a4x(5 − 4) + a5x(5− 5)

= a1x(4) + a2x(3) + a3x(2) + a4x(1) + a5x(0)

Page 42: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 8

Filtros Digitales

8.1 Transformada Z. La transformada Z es un metodo matematico desarrollado

para el analisis de senales en el tiempo discreto y de sistemas. Es una genarlizacion

de la Transformada de Fourier Discreta en el tiempo (DTFT, Discrete-Time Fou-

rier Transform). Es la contraparte de la transformada de Laplace para el analisis de

senales en el tiempo contınuo y de sistemas. Se utiliza para resolver: (1) los coeficien-

tes constantes de una ecuacion de diferencias, (2) calcular la respuesta de un sistema

lineal inavariante en el tiempo a una entrada de dato, y (3) en el diseno de filtros li-

neales [Hay99, 142].

8.2 Eigenfuncion. Es una palabra alemana (eigenfunciton) que quiere decir fun-

cion caracterıstica, funcion propia, o funcion natural [Ham89, 25]. Son las raices ca-

racterısticas y los valores propios de una matrız. Kurosh apunta que “... las rai-

ces caracterısticas desempenan un gran papel en el estudio de las transformaciones

lineales”[Kur75, 210]. En muchos problemas de filtros, las funciones trigonometricas,

senos y cosenos, son la base de la representacion de las senales. Hamming dice: “...

son eigenfunciones para (1) la invarianza bajo la traduccion por una cantidad arbi-

traria, (2) los sistemas lineales, (3) los systemas de muestreo igualmente espaciados”.

Con respecto a la transformada Z anade que “... es una simple notacion convencio-

nal y no contibuye en nada a la teorıa [de los filtros digitale]”[Ham89, 34-35].

41

Page 43: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 8. FILTROS DIGITALES 42

8.3 Definicion de Z. La transformada-z de una senal x(n) discreta en el tiempo

se define como

X(z) =∞∑

n=−∞x(n)z−n

donde z = rejω es una variable compleja. Los valores de z donde la suma converge

definen la ROC (Region of Convergence). Es decir, la ROC es una una region en el

plano-z donde la suma converge. Si x(n) tiene transformada-z X(z) podemos escribir

x(n)Z←→ X(z)

Es posible ver la transformada-z como la transformada DTFT de una secuencia pon-

derada de manera exponencial. Es decir, si z = rejω,

X(z) =∞∑

n=−∞x(n)z−n =

∞∑

n=−∞[r−nx(n)]e−jnω

se puede observar que X(z) es la transformada de Fourier discreta en el tiempo de la

secuencia r−nx(n)

Debido a que ls transformada-z es una funcion de variable compleja, conviene

expresarla utilizando el plano-z complejo, ası:

z = Re(z) + jIm(z) = rejω

%%Re(z)

Im(z)

ω

Figura 8.1: Cırculo unitariop en el plano-z complejo.

Muchas de las senales de interes en el procesamiendo de senales digitales que

tienen transformada-z son funcionas racionales de la forma

X(z) =B(z)

A(z)=

∑qk=0 b(k)z

−k

∑pk=0 a(k)z

−k

Page 44: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 8. FILTROS DIGITALES 43

Factorizando los polinomios del numerador y el denominador es posible expresar la

transformada-z como la razon de productos

X(z) =

∏qk=1(1− βkz−1)

∏pk=1(1− αkz−1)

donde las raices del poinomio del numerador βk son los ceros de X(z), y las raices

del polinomio denominador αk son los polos de X(z).

8.4 Ecuacion de diferencias. Un filtro digital esta representado por una ecuacion

de diferencias de la misma forma como un filtro analogico esta representado por una

ecuacion diferencial. Para resolver una ecuacion de diferencia necesitamos encontrar

la transformada-z de las expresiones tales como x(n − k), la cual corresponde a la

kesima derivada dk x(t)dt de una senal analogica x(t). El orden de la ecuacion de dife-

rencia esta determinada por el mayor valor de k. Por ejemplo, k = 2 representa una

derivada de segundo orden [Cha99, 95-96].

X(z) =∞∑

n=0

x(n)z−n

= x(0) + x(1)z−1 + x(2)z−2 + . . .

Entonces la transformada-z de x(n− 1), la cual corresponde a un derivada de primer

orden dxdt sera

ZTx(n− 1) =∞∑

n=0

x(n− 1)z−n

= x(−1) + x(0)z−1 + x(1)z−2 + x(2)z−3 + . . .

= x(−1) + z−1 x(0)z−1 + x(1)z−2 + x(2)z−3 + . . .︸ ︷︷ ︸

X(z)

= x(−1) + z−1X(z)

donde x(n− 1) representa las condiciones iniciales asociadas con una ecuacion de di-

ferencia de primer orden. De la misma forma ZT de x(n− 2) equivalente a la segun-

da derivada de d2x(t)dt2

ZTx(n− 2) =∞∑

n=0

x(n− 2)z−n

Page 45: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 8. FILTROS DIGITALES 44

= x(−2) + x(−1)z−1 + x(0)z−2 + x(1)z−3 + . . .

= x(−2) + x(−1)z−1 + z−2 x(0) + x(1)z−1 + . . .︸ ︷︷ ︸

X(z)

= x(−2) + x(−1)z−1 + z−2X(z)

donde x(−2) y (x− 1) representan las dos condiciones iniciales requeridas para resol-

ver una ecuacion de diferencia de segundo orden. En general

ZTx(n− k) = z−kk∑

m=1

x(−m)z−m + z−kX(z)

si las condiciones iniciales son todas cero, entonces x(−m) = 0 para m = 1, 2, . . . , k.

Esta se reduce a

ZTx(n− k) = z−kX(z)

8.5 Ecuacion estandard para DSP. Es posible tener una ecuacion programable

estandard que facilite su inmplementacion en los procesadores de senales digitales,

como puede ser la siguiente ecuacion de diferencias [Whi00, 5],

y = (b−1y−1 + · · ·+ b−my−m) + (ax+ a−1x−1 + · · ·+ (a−nx−n)

con lo cual, a partir de la anterior y con pequenas variantes, podemos escribir la si-

guiente ecuacion modificada [Whi00, 56].

y(n) = b1y(n− 1) + b2y(n− 2) + · · ·+ bMy(n−M)

+a0x(n) + a1x(n− 1) + a2x(n− 2) + · · ·+ aNx(n−M)

8.6 Transformacıon Bilineal BLT. Una forma de obtener un filtro digital IIR a

partir del diseno de un filtro analogico es utilizando el metodo de transformacion bi-

lineal (BLT, Bilinear Transform Method) [Whi00, 94].

T

2

z + 1

z − 1=

1

s

s =2

T

z − 1

z + 1

Page 46: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 9

Filtros Analogicos

9.1 Filtro pasa alto

Recordando que un capacitor se comporta en corto circuito para las frecuencias

altas, entonces: 1

vi

C

R vo

Figura 9.1: Filtro pasa alto

9.1.1 Funcion de transferencia en funcion de ω.

por divisor de tension,

v0 =viR

1jωC +R

despejando vi,

v0vi

=R

1jωC +R

multiplicando por jωC

vovi

=RjωC

1(jω/C)(jω/C) +R(jωC)

1Ver pg. 605, Kalechman Misza, Practical Matlab Applications for Engineers, CRC Press, 2009.686 pgs.

45

Page 47: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 9. FILTROS ANALOGICOS 46

tenemos que,

v0vi

=jωRC

1 + jωRC

dividiendo entre RC,

v0vi

=jωRC

RC1

RC + jωRCRC

se tiene

H(ω) =jω

1RC + jω

reordenando,

H(ω) =jω

jω + 1RC

(9.1)

la magnitud |H(w)| debera ser,

|H(w)| =

√√√√ (jω)2

(jω)2 + ( 1RC )

2

simplificando,

|H(w)| =

√(jω)2

√(jω)2 +

√( 1RC )

2

tenemos que,

|H(w)| =ω

ω2 + ( 1RC )

2(9.2)

Podemos graficar la expresion (9.2) para valores de 0 > ω < 2π, o bien,

9.1.2 Funcion de transferencia en funcion de s.

De la expresion (9.1) s = jω se tiene,

H(s) =s

s+ 1RC

(9.3)

dividiendo entre s,

H(s) =1

1 + 1sRC

(9.4)

Utilizando la funcion freqs() de matlab graficamos (respuesta en frecuencia en el

dominio de laplace) la expresion (9.4) para valores de R = 8Ω y C = 3,97 µF

Page 48: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 9. FILTROS ANALOGICOS 47

>> s=2*pi;>> R=8;>> C=0.00000397;>> A=1/(s*R*C);>> W=0:1000:3*A;>> H=freqs([1 0],[1 A],W);>> plot(W,abs(H));

0 5000 10000 150000

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

9.1.3. Factor de calidad Q para un circuito serie RLC.

Sean las siguientes expresiones para analizar el factor de calidad de un circuito

electrico resonante RLC en serie.

Frecuencia de resonancia f0 en hertz,

f0 =

√1

LC;

frecuencia de resonancia ω0 en rads/seg.,

W0 = 2πf0;

factor de calidad Q0 en funcion de la inductancia,

Q0 =ω0L

R;

factor de calidad Q0 en funcion del capacitancia,

Q0 =1

ω0RC;

frecuencia ω1 de limite inferior,

ω1 = ω0

(

− 1

2Q0+

√1

4Q20

+ 1

)

;

frecuencia ω2 de limite superior,

ω2 = ω0

(1

2Q0+

√1

4Q20

+ 1

)

;

ancho de banda ∆ω en funcion de la inductancia,

∆ω =R

L;

ancho de banda ∆ω en funcion de ω0 y Q0,

∆ω =ωo

Q0.

Page 49: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 9. FILTROS ANALOGICOS 48

vi

L

R vo

Figura 9.2: Filtro pasa bajo

vi

L C

R vo

Figura 9.3: Filtro pasa banda

Lbaja = 3,3mH

8ΩLmedia = 27µH

Cmedia = 47µF

Cmedia = 3,9µF

Figura 9.4: Red de cruce de tres vias

Page 50: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 10

Escribiendo Textos con LATEX

10.1 Compilar un proyeto de libro en TEX. Uno de los problemas con los que

se enfrenta un escritor es que no encuentra la forma de organizar los elementos logicos

de un documento escrito como pueden ser: la portada, resumenes, capıtulos, anexos,

grıficas y figuras, bibliografıa, entre otros. Por ejemplo surge la pregunta ¿en donde

y como colocar cada una de las carpetas que contiene cada capitulo?. Hechemos un

vistazo a como esta organizado el presente documento.

El archivo de control que tiene mayor jerarquia dentro de la topologıa de un

arbol gerarquico es mlib.tex, el cual contiene las siguientes instrucciones en LATEX.

\input macros/macros.tex\input macros/silabas.tex\makeindex\documentclass[oneside]book\usepackagemakeidx\inputmacros/mpaquets.tex\inputmacros/espanol.tex\begindocument\pagenumberingroman\thispagestyleempty\inputportada/portada.tex\pagenumberingarabic\def\tablenameTabla\def\listtablenameındice de tablas\tableofcontents\listoffigures\listoftables\inputcapi01/capi01.tex\inputcapi02/capi02.tex\inputcapi03/capi03.tex\inputBibliografia/bibliografia.tex

49

Page 51: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 10. ESCRIBIENDO TEXTOS CON LATEX 50

\appendix\inputanexo01/anexo01.tex\inputanexo02/anexo02.tex\printindex\enddocument

10.2 Crear referencias cruzadas. Una referencia cruzada es un listado alfabetico,

normalmente al final del documento que permite localizar un tema de acuerdo con

una lista de palabras clave. Utilize el siguiente comando para crear dicha lista de re-

ferencias.

makeindex mlib.idx

10.3 Compilacion del archivo principal LATEX. Sea el archivo principal

mlib.tex que contiene las instrucciones con la estructura comentada, compilar como

sigue.

latex mlib.tex

10.4 Impresion de fichas de trabajo. Nuestro trabajo de investigacion normal-

mente lo escribimos en fichas de trabajo. Una ficha de trabajo es una cartulina que

tienen un tamano de 5 x 8 pulgadas. El tamano esta definido por:

\setlength\texthigth4.5in -- altura del texto

\setlength\textwidth7.5in -- anchura del texto

\setlength\voffset0.25in -- desplazamiento margen vertical.

\setlength\hoffset1.5in -- desplazamiento margen horizontal.

Ejemplo:

Compilar: latex file.texConvertir a PDF: dvipdfm -l file[.dvi]

Imprimir con: Acrobat.Impresora: HP LaserJet 1015/1022.

Orientacion del papel: Horizontal.Tipo de papel Carta.

Page 52: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 10. ESCRIBIENDO TEXTOS CON LATEX 51

10.5 Impresion de fichas bibliograficas. Es recomendable que la investigacion

bibliografica quede escrita en fichas bibliograficas. Una ficha bibliografica es una car-

tulina que tienen un tamano de 3 x 5 pulgadas.

\setlength\texthigth2.75in -- altura del texto

\setlength\textwidth4.5in -- anchura del texto

\setlength\voffset1in -- desplazamiento margen vertical.

\setlength\hoffset4.75in -- desplazamiento margen horizontal.

Ejemplo:

Compilar: latex file.texConvertir a PDF: dvipdf -l file[.dvi]

Imprimir con: Acrobat.Impresora: HP LaserJet 1015/1022.

Orientacion del papel: Horizontal.Tipo de papel carta.

10.6 Instalacion MusicTEX en Linux. Descargar la ultima version musictex.zip

desde algun sitio disponible, colocarlo en una carpeta de usuario, y descomprimirlo.

Ejemplo: maquina Intel con Fedora 3.

1.- Verificar que exista el siguiente directorio, si no, es necesario crearlo.

/usr/local/share/texmf

2.- Copiar todos los archivos TEX al directorio ( si no existe, crearlo).

/usr/local/share/texmf/tex/musictex/

3.- Copiar todos los archivos DOC (*.doc) al directorio ( si no existe, crearlo).

/usr/local/share/texmf/doc/musictex/ -- en mi caso no hay

4.- Copiar todos los archivos mf al directorio ( si no existe, crearlo).

/usr/local/share/texmf/fonts/source/musictex/

Page 53: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 10. ESCRIBIENDO TEXTOS CON LATEX 52

5.- Copiar todos los archivos tfm al directorio ( si no existe, crearlo).

/usr/local/share/texmf/fonts/tfm/musictex/

6.- Despues de colocar los macros y los fonts en los directorios apropiados , ejecutar

los siguientes comandos (como root) para actualizar el medio ambiente TEX.

#mktexlsr

#mktexlsr /usr/local/share/texmf

10.7 Instalacion MusicTEX Mac OSX. Los siguientes pasos son para una iMac

con macOS Sierra Version 10.12.2 (mayo 2012)

1.- Verificar que exista el siguiente directorio.

/usr/local/texlive/2016/texmf-dist

Si no existe, vea en donde se encuentra con

$kpswhich -var-value TEXMFLOCAL

2.- Copiar todos los archivos TEX al directorio ( si no existe, crearlo).

/usr/local/texlive/2016/texmf-dist/tex/musictex

3.- Copiar todos los archivos DOC (*.doc) al directorio ( si no existe, crearlo).

/usr/local/texlive/2016/texmf-dist/doc/musictex

4.- Copiar todos los archivos mf al directorio ( si no existe, crearlo).

/usr/local/texlive/2016/texmf-dist/fonts/source/musictex

5.- Copiar todos los archivos tfm al directorio ( si no existe, crearlo).

/usr/local/texlive/2016/texmf-dist/fonts/tfm/musictex

Page 54: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 10. ESCRIBIENDO TEXTOS CON LATEX 53

6.- Despues de colocar los macros y los fonts en los directorios apropiados , ejecutar

los siguientes comandos (como root) para actualizar el medio ambiente TEX.

$sudo mktexlsr

$sudo mktexlsr /usr/local/texlive/2016/texmf-dist

Podemos comprobar el funcionamiento recompilando uno de los archivos que

acompanan al sistema, por ejemplo compilando y visualizando el manual musicdoc.tex

con la siguiente secuencia de comandos.

Compilando musicdoc.doc

$latex musicdoc

esto genera el archivo musicdoc.dvi y visualizaremos con el comando xdvi:

$xdvi musicdoc

10.8 Instalacion MusixTEX Mac OSX. Descargar la ultima version musixtex des-

de algun sitio disponible, colocarlo en una carpeta de usuario, y descomprimirlo. Los

siguientes pasos son para una iMac con macOS Sierra Version 10.12.2 (mayo 2012)

(1) ¿Donde esta texmf. Preguntar con

$kpswhich -var-value TEXMFLOCAL

/usr/local/texlive/2016/texmf-dist

Page 55: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 11

Programando con Java.

11.1 instalacion en MS-Windows. Hay dos maneras de hacer la instalacion en

una computadora con MS Windows. La primera es instalar Java directamente desde

la red conectandose directamente a sun.java.com. Esto se conoce como instalacion

en linea. La segunda es descargar todo el paquete, grabarlo en un CD, y realizar des-

de este CD la instalacion misma. Se recomienda esto ultimo, pues ya no es necesario

conectarse a la red en caso de que esta se vuelva lenta. A continuacion sigamos los si-

guientes pasos de dicha instalacion.

1.- Descargar la version mas actual, hasta agosto del 2007:

jdk-6u2-windows-i586-p.exe

2.- Ejecutar para descomprimir, quedando JDK en

C:\>Archivos de Programa/Java/jdk1.6.0_02

jre1.6.0_02

3.- Es necesario establecer la variable PATH para que Win32 conozca los comandos

ejecutables. Esto se puede hacer directamente en la consola, o lo mas practico y re-

comendable: crear un archivo por lotes.

desde consola:

C:\>set PATH=%PATH%;C:\Archivos de Programa\Java\jdk1.6.0_02\bin;

54

Page 56: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 11. PROGRAMANDO CON JAVA. 55

editar archivo por lotes setjava6002.bat con la siguiente secuencia:

set PATH=%PATH%;C:\Archivos de Programa\java\jdk1.6.0_02\bin;

ejecutando:

c:\>setjava6002

4.- Listos para trabajar con java.

C:\>javac archivo.java --compilar

C:\>java archivo --ejecutar

11.2 Instalacion en Linux. En linux, no es necesario instalar, Java ya viene con

este sistema operativo.

$javac archivo.java --compilar

$java archivo --ejecutar

Page 57: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 12

Programando Sonido con MatLab.

12.1 Captura de audio. MatLab contiene varias funciones que permite procesar

sonido utilizando el sistema de audio que vine integrado en una computadora digital

moderna. Asegurese que haya un microfono conectado a la terjeta de sonido, o bien

utilizar el microfono integrado. Tambien asegurese que el sonido se pueda escuchar

en el altavoz de la maquina.

Para la captura de audio utilizaremos la funcion wavrecord(n, s, c, d), donde n

es la cantidad de muestras de audio, s es la frecuencia de muestreo y c es el numero

de canales, y d es el numero de bits por muestra. Ejemplo: capturar y depositar en

el vector x 16000 datos, a 8000 muestras por segundo, monocanal, y con datos de 16

bits por muestra [Mcl09, p: 8].

x = wavrecord(16000,8000,1,’double’);

Por otro lado, para leer un archivo.wav utilizar la funcion wavread(file), don-

de file es el nombre del archivo. Ejemplo: leer el archivo max.wav y depositar los

datos en el vector x.

x = wavread(’file.wav’);

Para reproducir el sonido utilizar la funcion sound(x, s), donde x es el vector

de datos que contiene el sonido, y s es la frecuencia de muestras por segundo. Ejem-

plo: reproducir el sonido que se encuentra en el vector x.

56

Page 58: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 12. PROGRAMANDO SONIDO CON MATLAB. 57

sound(x);

o bien, reproducir x a 8000 muestras por segundo:

sound(x,8000);

Tambien es posible utilizar la funcion wavplay(x, s) para el mismo proposito.

Ejemplo: Ejemplo: reproducir el sonido que se encuentra en el vector x.

wavplay(x);

o bien, reproducir x a 8000 muestras por segundo:

wavplay(x,8000);

Es conveniente, ademas de escuchar el sonido, obtener una grafica del vector x,

lo cual se logra con la funcion plot(x). Ejemplo, graficar el sonido de x:

plot(x);

Page 59: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 13

Programando con SAPI

¿Que es SAPI?, ¿como funciona?, ¿como programarlo?, ¿quien la invento?, ¿en

donde empezo?,

13.1 Introduccion

SAPI (Speech Application Program Interface) es una interfase de reconocimien-

to y sıntesis de voz con base en las versiones de Microsoft Windows. Tiene 4 sub-

interfases para aplicaciones bien definidas: 1) reconocimiento de comandos, 2) texto

hablado, 3) dictado, y 4) telefonıa . Estas interfases a su vez se dividen en dos partes:

a) alto nivel, y b) bajo nivel 1 .

Las interfases de alto nivel son faciles de implementar, pero se pierde control en

la aplicacion, se dividen en 4 bloques: 1) voice command, reconoce comandos habla-

dos; 2) voice dictation, reconocedor de habla contınua; 3) voice text es un sintetiza-

dior que transforma un texto escrito a voz; y 4) voice telephony reconoce la de voz a

traves de lıneas telefonicas.

Por otro lado, las interfases de bajo nivel son mas difıciles de implementar, pe-

ro dan mas control en la aplicacion, se dividen en dos bloques: 1) Direct Speech Reco-

nigtion, reconocedor de voz a bajo nivel; y 2) Direct Text to Speech, sintetiza la voz

a bajo nivel.

13.2 Ejmplo: holasapi.cpp

1Manual (help), Microsoft Speech SDK (SAPI 5.1), Chap. 4

58

Page 60: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 13. PROGRAMANDO CON SAPI 59

cl holasapi.cpp /I "C:\Archivos de programa\Microsoft Speech SDK 5.1\Include" holasapi.cpp ole32.lib

//-----------------------------------// holasapi.cpp -probar texto a voz.//-----------------------------------#include <sapi.h>

int main(int argc, char* argv[])

ISpVoice *pVoice = NULL;

if (FAILED(::CoInitialize(NULL)))return FALSE;

HRESULT hr = CoCreateInstance(

CLSID_SpVoice,NULL,

CLSCTX_ALL,IID_ISpVoice,

(void **)&pVoice);

if(SUCCEEDED(hr))

hr = pVoice->Speak(L"Hello ANGELICA", 0, NULL);pVoice->Release();pVoice = NULL;

::CoUninitialize();return TRUE;

Page 61: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 14

Programando con SDL

¿Que es SDL?, ¿como funciona?, ¿como programarlo?, ¿quien la invento?, ¿en

donde empezo?.

14.1 Introduccion

60

Page 62: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 15

Detecion del pitch

¿Que es el pitch?, ¿para que sirve?, ¿cuantas formas existen para obtener el

pitch?,

15.1 El Pitch. Se define como el periodo que existe entre los ciclos abierto y cerra-

do que producen las cuerdas vocales. La frecuencia fundamental f0 de la voz puede

variar entre 30 a 350 hz (33 - 2.8 ms.). Dicha frecuencia se define como la cantidad ¿Que esel pitch?

de pulsos de volumen glotal que se plican al conducto vocal en un segundo. El inver-

so de dicha frecuencia es el tono de la voz o pitch [Men89, 37].

Hoy en dia existen varios algoritmos que permiten la deteccion del pitch: 1) Metodosde detec-cion delpitch

SIFT (Simplified Inverse Filter Tracking); 2) AMDF (Average Magnitude Diference

Function). Veremos con mas amplitud el metodo SIFT.

15.2 Filtros Latice. Un filtro latice es una cascada de redes de dos puertos. Una

red de dos puertos se define por el valor de sus coeficientes de reflexion [Hay99, 298].

Esta estructura se utiliza en al analisis y sıntesis de voz debido a que se requieren po- ¿Que esun filtrolatice?cos coeficientes, con los cuales es posible modelar muchos formantes en tiempo real.

Una latice todo-cero representa un filtro FIR para un filtro latice. Una latice escale-

ra (ladder) representa un filtro IIR[Ing07, 212].

En [Hay99, p:299] se definen los coeficientes de reflexion kn como una funcion

61

Page 63: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 15. DETECION DEL PITCH 62

recursiva:

Ak−1(z) =1

1− Γ2k

[Ak(z)− Γkz−k · Ak(z

−1)]

para k = p, p− 1, p− 2 . . . 1

En terminos de los coeficientes ai sera:

ak−1(i) =1

1− Γ2k

[ak(i)− Γkz−k · Ak(z

−1)]

para k = p, p− 1, p− 2 . . . 1

ak−1(k − 1) = Γk−1

El polinomio Ak(z) define los coeficientes igualando Γk = ak(z).

x[n]

×

1

+y[n]

z−1

Retardo ×

a

y[n] = 1 · x[n] + a · x[n− 1]

Y (z) = 1 ·X(z) + a ·X(z) · z−1

Y (z) = X(z)[1 + a · z−1]

Y (z)

X(z)= 1 + a · z−1

y[n] = x[n] + a y[n− 1] (15.1)

Page 64: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 15. DETECION DEL PITCH 63

x[n]+

y[n]

z−1

Retardo×a

Figura 15.1: Filtro dependiente de sus valores de entrada y salida.

Page 65: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 16

Cadenas de Markov

¿Que son las cadenas de Markov?, ¿como funcionan?, ¿como programarlas?,

¿quien las invento?, ¿en donde empezo?.

16.1 Introduccion

64

Page 66: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 17

Redes Neuronales

¿Que es una neurona?, ¿como funciona?, ¿como programarla?, ¿quien la inven-

to?, ¿en donde empezo?,

17.1 Introduccion

65

Page 67: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 18

Funciones y Macros en C

18.1 Codigo fuente comun en Win32 (miwin.h). Cuando programamos grafi-

cos con el sistema operativo windows de microsoft (Win32), existe codigo que siem-

pre se repite. Por esta razon escribiremos aquı un archivo de encabezado escrito en

C (anexo B) y que llamaremos miwin.h . De esta manera, cuando escribamos algun

codigo en C que lo requiera solamente lo incluiremos al principio de nuestros progra-

mas que queremos mostrar.

18.2 Aritmetica compleja.

18.2.1 Estructura.

#include<stdio.h>#include<math.h>

typedef struct

float real;float imag;

COMPLEX;

COMPLEX NUM,DEN;COMPLEX A[11],B[11];

18.2.2 Impresion.

COMPLEX wcomplex(COMPLEX numero)

printf("[%10.6f + j%10.6f]",numero.real,numero.imag);return(numero);

66

Page 68: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 67

18.2.3 Leectura.

COMPLEX rcomplex(float a, float b)

COMPLEX numero;numero.real=a;numero.imag=b;return(numero);

18.2.4 Suma.

COMPLEX cadd(COMPLEX a, COMPLEX b)

COMPLEX numero;numero.real = a.real + b.real;numero.imag = a.imag + b.imag;return(numero);

18.2.5 Resta.

COMPLEX csub(COMPLEX a, COMPLEX b)

COMPLEX numero;numero.real = a.real - b.real;numero.imag = a.imag - b.imag;return(numero);

18.2.6 Producto.

COMPLEX cmul(COMPLEX a, COMPLEX b)

COMPLEX numero;numero.real = (a.real * b.real) - (a.imag * b.imag);numero.imag = (a.real * b.imag) + (a.imag * b.real);return(numero);

18.2.7 Division.

Page 69: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 68

COMPLEX cdiv(COMPLEX a, COMPLEX b)

COMPLEX numero;numero.real = ((a.real * b.real) + (a.imag * b.imag))/

((b.real*b.real)+(b.imag*b.imag));numero.imag = ((a.imag * b.real) - (a.real * b.imag))/

((b.real*b.real)+(b.imag*b.imag));return(numero);

18.2.8 Magnitud.

float norm(COMPLEX a)

return(sqrt(pow(a.real,2) + pow(a.imag,2)));

18.2.9 Operaciones.

main()

double x;COMPLEX A,B,C,D;

A=rcomplex(0.5,0.7);B=rcomplex(0.3,0.8);printf(" A = ");wcomplex(A); printf("\n");printf(" B = ");wcomplex(B); printf("\n");printf(" A+B = ");C=cadd(A,B); // C=A+Bwcomplex(C); printf("\n");printf(" A-B = ");C=csub(A,B); // C=A-Bwcomplex(C); printf("\n");printf(" A*B = ");C=cmul(A,B); // C=A*Bwcomplex(C); printf("\n");printf(" A/B = ");C=cdiv(A,B); // C=A/Bwcomplex(C); printf("\n");D=A; // D=Aprintf(" D=A ");wcomplex(D); printf("\n");x=norm(A); // x=abs(A)printf(" norm(A) = [%f]\n",x);

18.3 Convertir hexadecimal a cadena de bits -h2bits().

Page 70: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 69

/*=========================================================** h2bits(x,s) -convierte byte x a cadena de bits ASCII.** Regresa: s=cadena de bits.** char s[8];** h2bits(0x55,s);** printf("%s",s);** 01010101;**=========================================================*/h2bits(char x, char *s)

int i;for(i=0;i<8;i++)

if (x<0) *s++=’1’;else *s++=’0’;x=x<<1;*s=’\0’;

return(1);

/*=========================================================

18.4 Poner bit n de x en cero -setbit0().

/*=========================================================** setbit0(x,n) -poner en 0 el bit n del byte x.** Regresa: Byte x con el nuevo valor.**=========================================================*/setbit0(char x, *n)

return(*x=*x&~(1<<n));

18.5 Poner bit n de x en uno -setbit1().

/*=========================================================** setbit1(x,n) -poner en 1 el bit n del byte x.** Regresa: Byte x con el nuevo valor.**=========================================================*/setbit1(char *x, int n)

return(*x=*x|1<<n);

18.6 Probar bit n de x -getbit().

/*=========================================================** getbit(x,n) -regresa el valor del bit n del byte x.** Regresa: 1 si ON, 0 si OFF.

Page 71: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 70

**=========================================================*/getbit(char *x, int n)

return((*x&(1<<n))?1:0);

18.7 Driver de sonido MIDI Win32 -klsnd().

//-----------------------------------------------------------// NAME:// klsnd.c -driver MIDI para Win32.// REM:// Driver de sonido MIDI para MS-Windows.// Compilado con:// CL Visiual Studio 6.0// GCC MinGW.// Dr. Maximino Pe~na Guerrero. Febrero 10, 2007.// ----------------------------------------------------------#include<windows.h>#include<mmsystem.h>HMIDIOUT handle;//-----------------------------------------------------------// klopnm() -abrir diispositivo MIDI.// ----------------------------------------------------------int klopnm()

// printf("abre sonido\n");if (midiOutOpen(&handle,(UINT)-1,0,0,CALLBACK_NULL))

printf("midiOutOpen(): error\n");return(0);

return(1);

//-----------------------------------------------------------// klclsm() -cerrar diispositivo MIDI.//-----------------------------------------------------------int klclsm()

midiOutClose(handle);return(1);

//-----------------------------------------------------------// klnton() -tocar una nota.//-----------------------------------------------------------int klnton(char nota)

static union DWORD dwData; UCHAR bData[4];u;//printf("Toca nota\n");u.bData[0] = 0x90;u.bData[1] = nota;u.bData[2] = 127;u.bData[3] = 0;

Page 72: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 71

if (midiOutShortMsg(handle, u.dwData))

printf("Error: midiOutShortMsg()\n");midiOutClose(handle);exit(1);

Sleep(300);return(1);

//-----------------------------------------------------------// klnton() -apagar una nota.//-----------------------------------------------------------int klntof(char nota)

static union DWORD dwData; UCHAR bData[4];u;//printf("Apaga nota\n");u.bData[0] = 0x80;u.bData[1] = nota;u.bData[2] = 0;u.bData[3] = 0;if (midiOutShortMsg(handle, u.dwData))

printf("Error: midiOutShortMsg()\n");midiOutClose(handle);exit(1);

return(1);

18.8 Leer un byte de memoria Win32 -peekw(). Esta funcion (peekw()) lee un

byte de la memoria y lo regresa en el valor de la funcion. Fue probada en sistemas

con Windows NT.

/*==============================================================*//* NAME *//* peekw() -leer un byte de memoria. *//* SINOPSIS *//* char peekw(seg,offs); *//* EXAMPLE *//* char x; *//* x=peekw(0xb800,0x0000); *//* DATE *//* Maximino Pe~na Guerrero, noviembre 26, 2001. *//*==============================================================*/char peekw(int unsigned seg,unsigned int offs)

char far *ptr;unsigned long tmp=seg;(long) ptr=0x00000000;(long) ptr=tmp<<16;

Page 73: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 72

return(*(ptr+offs));

El siguiente codigo lee un bytes de la memoria de video y lo muestra.

main()

printf("[%x]\n",peekw(0xb800,800));return(1);

18.9 Escribir un byte en memoria Win32 -pokew(). Pokew() escribe un by-

te en la memoria controlada por MS-Windows. Fue probada en sistemas con NT.

Utilıcese con cuidado bajo la ventana de DOS, porque escribe en memoria de video.

/*==============================================================*//* NAME *//* pokew() -escribir un byte en memoria. *//* SINOPSIS *//* char pokew(seg,offs,byte); *//* EXAMPLE *//* pokew(0xb800,0x0000,0x41); //escribir ’A’ en video *//* DATE *//* Maximino Pe~na Guerrero, noviembre 26, 2001. *//*==============================================================*/char pokew(int unsigned seg,unsigned int offs,unsigned char byte)

char far *ptr;unsigned long tmp=seg;(long) ptr=0x00000000;(long) ptr=tmp<<16;*(ptr+offs)=byte;return(byte);

El siguiente codigo escribe el caracter ’A’ en la pantalla con fondo de color ama-

rillo.

main()

int i,j=0;for (i=0;i<80;i++)pokew(0xb800,800+j,0x41);pokew(0xb800,800+j+1,0x9C);j=j+2;

return(1);

Page 74: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 73

18.10 Vaciar memoria (emulacion con un buffer) -dump().

/*==============================================================*//* NAME *//* dump() -vaciar memoria. *//* SINOPSIS *//* int dump(seg,offs,nbytes); *//* USO *//* dump(0xB800,0,260); *//* *//* *//* SSSS:OOOO XX XX XX XX XX XX XX XX .................. *//* SSSS:OOOO XX XX XX XX XX XX XX XX AAAAAAAAAAAAAAAAAAA *//* DATE *//* Maximino Pena Guerrero, noviembre 24, 2001. *//*==============================================================*/int dump(int segment, int offset, int nbytes)

int i,j,n;char hascii[8];

for(i=0;i<300;i++) memory[i]=0x3E;

n=nbytes;

printf("segment:%x\n",segment);

for(i=0; i<n/16;i++)

printf("%4d:",i*15+offset++);

for(j=0;j<16;j++)

itoa(memory[i*16+j],hascii,16);printf("%s ",hascii);

for(j=0;j<16;j++)

if(isprint(memory[i*16+j])) printf("%c",memory[i*16+j]);else printf(".");

putchar(’\n’);if (i % 8 == 0 && i>0) printf("segment:%x\n",segment);

return(n);

El siguiente codigo muestra el contenido de un buffer de memoria a partir de la

direccion segmento 2, offset 200, y 260 bytes.

# include <stdio.h>

Page 75: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 18. FUNCIONES Y MACROS EN C 74

char memory[3000];main()

dump(2,200,260);

Page 76: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 19

Programando graficas con OpenGL.

19.1 Poner un punto OpenGL -gsetpnt(). Gsetpnt() es un aprimitiva disenada

para colocar un punto en pantalla utilizando la primitiva glVertex2i() de OpenGL.

Es evidente que a partir de dicha funcion es posible programar funciones mas com-

plicadas como la recta, cırculo, entre otras.

void gsetpnt(GLint x, GLint y)

glBegin(GL_POINTS);glVertex2i(x,y);

glEnd();

19.2 Manejo del raton OpenGL -graton().

void graton(GLint button, GLint action, GLint xMouse, GLint yMouse)

if (button==GLUT_LEFT_BUTTON && action== GLUT_DOWN)

mx1=xMouse;my1=winHeight-yMouse;Click=TRUE;

else

if (button==GLUT_RIGHT_BUTTON && action== GLUT_DOWN)

mx2=xMouse;my2=winHeight-yMouse;Click=FALSE;

if (action==GLUT_DOWN) displayFnc();

19.3 Obtener flechas del teclado OpenGL -gflechas().

75

Page 77: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 19. PROGRAMANDO GRAFICAS CON OPENGL. 76

void gflechas(GLint flecha, GLint xMouse, GLint yMouse)

switch(flecha)case GLUT_KEY_LEFT:

if (Click==TRUE) mx1--; elseif (Click==FALSE) mx2--; break;

case GLUT_KEY_RIGHT:if (Click==TRUE) mx1++; else;if (Click==FALSE) mx2++; break;

case GLUT_KEY_UP:if (Click==TRUE) my1++; else;if (Click==FALSE) my2++; break;

case GLUT_KEY_DOWN:if (Click==TRUE) my1--; else;if (Click==FALSE) my2--; break;

default: break;displayFnc();

19.4 Servicio timer OpenGL -gtimer().

void gtimer(int value)

if (Dibujar==TRUE)

DibujarLinea(0,0,xx,100);glutPostRedisplay();xx=(xx+10)%200;

glutTimerFunc(33,gtimer,1);

19.5 Graficar spline OpenGL -gspline(). DrawSpline grafica un spline utilizan-

do cuatro puntos, un punto inicial de coordenadas (x1, y1), otro punto final de coor-

denadas (x4, y4), primer punto de control de coordenadas (x2, y2), segundo punto de

control de coordenadas (x3, y3), y por ultimo un factor de escala z con valores entre

cero y uno ( 0 ¡z ¡1).

void gspline(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2,GLfloat x3,GLfloat y3,GLfloat x4,GLfloat y4,GLfloat z)

GLint i;GLint j;

Page 78: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 19. PROGRAMANDO GRAFICAS CON OPENGL. 77

GLfloat t;GLfloat x;GLfloat y;

for(t=0.0;t<1;t+=0.001)

x = pow((1.0-t),3.0)*(x1*z) + 3.0*t*pow((1.0-t),2.0)*(x2*z)+ 3*pow(t,2.0)*(1.0-t)*(x3*z)+ pow(t,3.0)*(x4*z) ;

y = pow((1.0-t),3.0)*(y1*z) + 3.0*t*pow((1.0-t),2.0)*(y2*z)+ 3*pow(t,2.0)*(1.0-t)*(y3*z)+ pow(t,3.0)*(y4*z);

plotPoint(x,y);

Page 79: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 20

Programando con C/C++

Existen varias versiones de Microsoft Visual Studio con las cuales es posible

desarrollar programas utilizando el medio ambiente de desarrollo, o bien utilizando la

linea de comandos. Hemos probado todas las versiones (incluso MinGW, compilador

de Software Libre GNU): Visual Studio 6.0, Visual Studio .NET 2001, Visual Studio

.NET 2003, Visual Studio .NET Express 2008, y Visual Studio .NET 2008 Standard.

Haremos un apartado para cada una de ellas.

20.1 Crear un proyecto MFC vacıo en forma manual desde Win32. MFC

Microsoft Fundation Class es una biblioteca de clases creada por Microsoft para faci-

litar y optimizar los recursos fısicos y de software de una maquina. Vamos a crear el

siguiente proyecto sin emplear el ayudante (Wizard). 1 [p.3]

(1) Iniciar Visual C++ 6.0 para crear un proyecto nuevo. En la barra Menu se-

lecionar File enseguida new.

(2) En la ventana de dialogo New seleccionar Win32 Application, Project na-

me: prueba.

(3) En la ventana de dialogo Win32 Aplication Step 1 of 1 seleccionar el cırcu-

lo An empty Project, Next, New Project Information, OK para terminar.

(4) Establecer las propiedades del proyecto. En la barra Menu seleccionar

Project. Luego seleccionar settings para establecer las caracterısticas de nuestra apli-

1[Sal05] Salleh Shaharuddin, et., Numerical simulations and case studies using Visual C++.NET,Wiley & Sons, 2005.

78

Page 80: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 20. PROGRAMANDO CON C/C++ 79

cacion.

(5) En la ventana de dialogo Project Settings seleccionar la pestana General.

En el cuadro dialogo de entrada Microsoft Fundation Classes: Use MFC in a Shared

DLL. Esto incluira MFC para generar un archivo ejecutable.exe.

20.2 Editar nuevos archivos dentro de un proyecto MFC vacıo Win32. En

esta seccion suponemos que existe un proyecto MFC vacıo creado de manera manual

del tipo Win32 An empty Project.

(1) Editar un archivo de encabezado del proyecto file.h. En la barraMenu, se-

leeccionar Project, despues seleccionar Add to project, luego New. Aparecera la ven-

tana de dialogo New. En la pestana Files seleccionar C/C++ Header File. En el cua-

dro de entrada File name colocar el nombre del archivo file.h, para iniciar su edicion.

(2) Editar un archivo.c/cpp file.c/cpp. En la barra Menu, seleeccionar

Project, despues seleccionar Add to project, luego New. Aparecera la ventana de

dialogo New. En la pestana Files seleccionar C++ Source File. En el cuadro de en-

trada File name colocar el nombre del archivo file.cpp, para iniciar su edicion.

20.3 Anexar archivos existentes a un proyecto MFC vacıo Win32. Si no

queremos editar nuevos arcivos y queremos aprovechar los que ya se hallan escrito en

otras aplicaciones, e aquı como anexar dichos archivos a un proyecto vacıo. En esta

seccion suponemos que existe un proyecto MFC vacıo creado de manera manual del

tipo Win32 An empty Project.

Anexar fuente file.c/cpp existente.

(1) Copiar archivo file.c/cpp al nuevo proyecto.

(2) En la ventana del explorador seleccionar Source Files, luego en la barra

Menu, seleeccionar Project, Add to project, y Files.

(3) Seleccionar la ventana de dialogo Insert Files into Project, y en el cuadro de

entrada Nombre escribir el nombre del archivo file.c/cpp, dar OK para terminar.

Anexar archivo de encabezado file.h.

Page 81: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 20. PROGRAMANDO CON C/C++ 80

(1) Copiar el archivo a la nueva carpeta que se ha creado.

(2) En la ventana del explorador seleccionar Header Files, luego en la barra

Menu, seleeccionar Project, Add to project, y Files.

(3) Seleccionar la ventana de dialogo Insert Files into Project, y en el cuadro de

entrada Nombre escribir el nombre del archivo file.h, dar OK para terminar.

Anexar el archivo de recursos file.rc.

(1) Copiar el archivo a la nueva carpeta que se ha creado.

(2) En la ventana del explorador seleccionar Header Files, luego en la barra

Menu, seleeccionar Project, Add to project, y Files.

(3) En la ventana de dialogo Insert Files into Project. En el cuadro de entrada

Nombre escribir el nombre del archivo file.rc y dar OK para terminar.

Anexar los archivos de biblioteca user32.lib y gdi32.lib.

(1) En la ventana de dialogo Project Settings seleccionar la pestana Link.

(2) En el cuadro dialogo de entrada dar Category: Input.

(3) En el cuadro dialogo de entrada dar Object/Library modules: user32.lib

gdi32.lib y OK para establecer la API Windows.

Compilamos y verificamos que no hallan errores de compilacion. Al correr la

aplicacion veremos que sale un mensaje en la ventanita de error IDC ERROR de

Windows que dice error: NO AFXRES.H. Copiar afxres.h (o resourse.rc) para so-

lucionarlo. Si al enlazar dice: INK : fatal error LNK1104: cannot open file “De-

bug/testRelacion.exe”, salir de Visual y volver a entrar con el proyecto.

20.4 Anexar un contenedor de dialogo a un proyecto MFC manual Win32.

Una ventana de dialogo es un contenedor que permite acomodar controles como bo-

tones, barras, imagenes, entre otros. Ahora vamos a crear un contenedor de dialogo

a partir de una aplicacion simple. 2

En la ventana Worspace seleccionar la pestana FileV iew y marcar Resource

2 ıdem [p: 41]

Page 82: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 20. PROGRAMANDO CON C/C++ 81

Files. Con el boton derecho del raton seleccionar Add Files to Folder. En la venta-

na Insert Files Into Project que aparece escribir el archivo de recursos file.rc; pulsar

OK para crear el archivo file.rc. Abrir el archivo file.rc con el boton derecho del ra-

ton seleccionando la opcion Open.

Ahora, en la pestana ResourceV iew de la ventana Workspace seleccionar Fi-

le Resources, luego seleccionar la opcion Insert. En la ventana Insert Resource que

aparece seleccionar el tipo de recurso Resource type: Dialog. Presionar New para in-

sertar el recurso y activar el editor de recursos.

20.5 Crear proyecto MFC vacıo basado en DIALOG con Wizard. Ahora

vamos a crear, de una manera automatica, un proyecto vacıo llamado prueba con ba-

se en un contenedor de dialogo utilizando el ayudante Wizard. La diferencia con la

creacion de un proyecto MFC vacıo con base solamente en un proyecto Win32 Project

(An empty Project), es que en esta seccion el proyecto se crea de manera automati-

ca utilizando las herramientas de ayuda que proporciona Visual Studio, como son los

editores y el Wizard.

Iniciar Visual C++ 6.0, en la barra Menu selecionar File, y enseguida new. En

la ventana de dialogo New seleecionar MFC AppWizard(exe), Project name: prue-

ba. En la ventana de dialogo MFC AppWizard Step 1 seleccionar el cırculo Dialog ba-

sed, luego pulsar Next. En MFC AppWizard Step 2 of 4 dejar solamente marcado el

cırculo 3D controls, luego pulsar Next. Luego en MFC AppWizard Step 3 of 4 selec-

cionar MFC Standard y No, thank you, luego Next. Y por ultimo en MFC AppWi-

zard Step 4 of 4 seleccionar la clase CPruebaApp, despues pulsar Finish.

A continuacion compilar la aplicacion, la cual generara cuatro archivos fuente:

File.cpp, Prueba.rc, PruebaDlg.cpp, StdAfx.cpp; y cuatro archivos de cabecera: File.h,

PruebaDlg.h, Resource.rc, StdAfx.h.

20.6 Crear un proyecto esqueleto MFC completo. Hagamos un proyecto lla-

mado prueba para investigar todo lo relacionado con la graficacion, colocacion de va-

Page 83: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 20. PROGRAMANDO CON C/C++ 82

rables globales, caja de entrada de texto, caja de presentacion de texto, entre otros ob-

jetos que se requieren. A continuacion se creara un proyecto vacıo utilizando Wizard.

Iniciar Visual C++ 6.0, en la barra Menu selecionar File, y enseguida new. En

la ventana de dialogo New seleecionar MFC AppWizard(exe), Project name: prueba.

En la ventana de dialogo MFC AppWizard Step 1 seleccionar el cırculo Single docu-

ment, luego pulsar Next. En MFC AppWizard Step 2 of 4: Next; MFC AppWizard

Step 3 of 6: next; En MFC AppWizard Step 4 of 6 desactivar las casillas Docking Tool-

bar, Initial Status Bar y Printing and Print dejando solo 3D Controls. MFC AppWi-

zard Step 5 of 6: next; En MFC AppWizard Step 5 of 6 y de la ventana Base Class

seleccionar la opcion CFormView para tener el formulario como vista principal. Fi-

nalizar con Finish, compilar y correr el proyecto.

20.7 Crear boton en contenedor DIALOG. Arrastrar el boton al contenedor.

En Propiedades cambiar a ID: IDC CALCULAR y Caption: Calcular.

20.8 Crear variable miembro de boton. Invocar Class Wizard con Ctrl-W. De la

pestana Member Variable en el cuadro Proyect: Prueba. Class Name: CPruebaView,

picar Add Variable: m Calcular.

20.9 Crear la funcion de un boton. Picar ClassV iew en el WorkSpace donde

se despliega el menu Prueba Clases. Picar PruebaV iew (despliega otro menu), picar

Add Member Function. Activar Function Tipe: void, Function Declaration: graficar,

Access: public. Editar la funcion graficar().

20.10 Crear un componente bitmap en DIALOG Ahora vamos a crear una fo-

tografia bitmap de una (o un ıcono) dentro de una aplicacion con base en cuadro de

dialogo MFC. Es de suponer que antes ya se ha generado un archivo bitmap de una

formula matematica hecha en LATEX, o un ıcono generado con el editor de bitmaps de

VC++ 6.0.

Primero Seleccionar Insert y luego Resource. En el dialogo Insert Resource se-

Page 84: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 20. PROGRAMANDO CON C/C++ 83

leccionar Resource type: Bitmap. En este mismo dialogo seleecionar el boton Import

para selecionar al archivo.bmp que se va a insertar. Del cuadro de controles Con-

trol tool box seleccionar el control Picture y colocarlo en el dialogo principal. En es-

te mismo control, con el boton derecho del raton selecionar Propertiese. En el dialo-

go Picture Propierties cambiar el tipo de control a Type: Bitmap y tambien Image:

IDB BITMAP1. 3

20.11 Compilar con lınea de comandos una aplicacion DIALOG existente.

Es posible compilar, con el GCC de MinGW, una aplicacion con base en DIALOG,

la cual haya sido creada con VC++6.0 y su editor de recursos. Normalmente Visual

C++ 2008 Express o Standard (.NET), no vienen con su propio editor de recursos,

pero si es posible compilar dicha aplicacion utilizando la linea de comandos estandar

dentro de una ventana de comandos (MS-DOS).

Para lograr lo anterior, primero utilizaremos las versiones de compiladores Mi-

crosoft Visual Studio C++ 6.0, C++2008 Express o Standard. Ahora, abrir una ven-

tana de comandos para crear una nueva carpeta con C:\>mkdir carpeta. Esta nue-

va carpeta debe estar de preferencia cerca de la raiz del directorio principal C:\>.

Copiar los archivos archivo.c, archivo.rc, resourse.h, resourse.hm desde su

carpeta con C:\carpeta\>copy C:\path\archivo.c. Enseguida compilar el archivo

de recursos.rc con C:\>rc archivo.rc. Con esto se genera el nuevo archivo de re-

cursos archivo.RES necesario para la compilacion. Finalmente generar el archivo eje-

cutable archivo.exe de la nueva aplicacion con:

C\:>cl archivo.c user32.lib gdi32.lib archivo.res

Utilizando el compilador GCC de MinGW realizar lo siguiente para generar el archi-

vo ejecutable. Primero generar el archivo de recursos archivo.res con

C:\carpeta\>windres -o archivo.o archivo.rc

3funte: www.functionx.com/visualc/applications/displaybitmap.htm

Page 85: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 20. PROGRAMANDO CON C/C++ 84

Finalmente generar archivo.exe

C:\carpeta\>gcc -o archivo archivo.c -luser32 -lgdi32 archivo.o

Cabe mencionar que para quitar, poner mas botones, o bien modificar los recursos

existentes es necesario hacerlo con el editor de recursos con los que fueron creados

(en este caso VC++6.0). Es necesario, entonces, volver a repetir los pasos anteriores

para actualizar nuestra nueva aplicacion. Cabe tambien senalar que con esta moda-

lidad de compilacion, las modificaciones al archivo fuente archivo.c se pueden hacer

con cualquier editor de texto (gvim, notepad, edit, entre otros).

20.12 Enviar un mensaje Win32 Cada vez que se produce un evento se debe en-

viar y procesar un mensaje. PostMessage() coloca dicho mensaje en la cola de men-

sajes asociada a la ventana y regresa sin esparear notificacion. Su estructura es la si-

guiente:

BOOL PostMessage

HWND hWnd, // handle de la ventana destino

UINT Msg, // mensaje

WPARAM wParam, // primer parametro del mensaje.

LPARAM lParam // segundo parametro del mensaje.

Ejemplo: Repintar los objetos de una ventana enviendo el mensaje WM PAINT.

PostMessage(hwnd, WM PAINT, 0, 0L);

Ejemplo: Envier el mensaje SC CLOSE para cerrar la aplicacion y salir al sistema

operativo.

PostMessage(hwnd, WM SYSCOMMAND, SC CLOSE, 0L);

20.13 Enviar mensaje WM PAINT. Este mensaje sirve para pintar una

ventana completa o una parte de la misma. Si el codigo de graficacion se

encuentra entre las funciones BeginPaint(hwnd,&ps) y EndPaint(hwnd,&ps),

Page 86: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 20. PROGRAMANDO CON C/C++ 85

utilizar la funcion InvalidateRect(hwnd,NULL, TRUE) para generar el men-

saje. Por otra parte, si dicho codigo de graficacion se encuentra entre las

funciones GetDC(hwnd) y ReleaseDC(hwnd, hdc) entonces utilizar la funcion

PostMessage(hwnd,WM PAINT, 0, 0L) para enviar dicho mensaje.

Cabe mensionar que con esto ultimo, es posible refrescar porciones de la venta-

na creando varios rectangulos de graficacion, ası;

HDC hdc1,hdc2;

HWND hwnd;

hdc1=GetDC(hwnd);

hdc2=GetDC(hwnd);

Rectangle(hdc1,x1,y1,x2,y2);

Rectangle(hdc2,x11,y11,x22,y22);

//Codigo de graficacion;

ReleaceDC(hwnd,hdc1);

ReleaceDC(hwnd,hdc2);

Page 87: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 21

Programando con MIDI

21.1 ¿Que es una nota? Podemos definir una nota musical por la funcion N(f, r,m)

donde f es la frecuencia (tono) de la nota, r es el tiempo de duracion de dicha nota

(ritmo) y m es la melodıa asociada a la frecuencia de la nota, de tal forma que es po-

sible tocar varias notas en paralelo.

El nombre de cada nota en version latina es la siguiente. Con sostenidos: do,

do♯, re, re♯, mi, fa, fa♯, sol, sol♯, la, la♯ y si. Con bemoles: do, re, re, mi, mi, fa,

sol, sol, la, la, si y do; En la version anglosajona es la que sigue. Con sostenidos:

C, C♯, D, D♯, E, F , F ♯, G, G♯, A♯ y B. Con bemoles: C, D, D, E, E, F , G, G,

A, A, B, B y C.

21.2 Constante de Bach Los tonos de 2 notas estan separadas por la constante

12√2 = 2

112 = 1,059463094 . . ., que aquı llamaremos la constante de Bach. En general,

la frecuencia fn de una nota musical esta dada por la expresion 21.1

fn = 2n12 fref Hz. (21.1)

donde, fref es la frecuencia de referencia, y n es el numero de semitonos a partir de

dicha referencia [?][?].

Ejemplo 1. ¿Cual es la frecuencia fn de do5♯ (o reb), si la frecuencia de referancia de la4 es fref =440? Resultado: Si la posiscion de do♯ se encuantra cuatro semitonos arriba de la frecuencia de re-ferencia (la4), entonces

fn = 2n12 fref

86

Page 88: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 21. PROGRAMANDO CON MIDI 87

= 2412 · 440

f4 = 554,365 Hz.

Ejemplo 2. ¿Cual sera la frecuencia de la nota do4 a partir dela nota la4? Resultado: Si la notado4 se encuentra 9 semitonos hacia abajo (es decir, -9 semitonos), entonces

fn = 2n12 fref

= 2−912 · 440

f−9 = 251,625 Hz.

Cabe senalar que por acuerdo internacional, la frecuencia de audio de 440 Hz

esta asociada a la nota LA4 (A4) situada en la octava cuatro (subındice) de un piano de

referencia [?]. La Tabla 21.1 muestra la frecuencia de cada tono, la nota, y su octava.

Tabla 21.1: Correspondencia entre: frecuencia (hertz) de nota(i), posicion en octa-va(j), y tono.

C D D E E F G G A A B BC C♯ D D♯ E F F♯ G G♯ A A♯ BDO RE RE MI MI FA SOL SOL LA LA SI SIDO DO♯ RE RE♯ MI FA FA♯ SOL SOL♯ LA LA♯ SI

(i)(j) 0 1 2 3 4 5 6 7 8 9 10 11

0 16.35 17.32 18.35 19.44 20.60 21.82 23.12 24.49 25.95 27.50 29.13 30.861 32.70 34.64 36.70 38.89 41.20 43.65 46.24 48.99 51.91 55.00 58.27 61.732 65.40 69.29 73.41 77.78 82.40 87.30 92.49 97.99 103.82 110.00 116.54 123.473 130.81 138.59 146.83 155.56 164.81 174.61 184.99 195.99 207.65 220.00 233.08 246.944 261.62 277.18 293.66 311.12 329.62 349.22 369.99 391.99 415.30 440.00 466..16 493.885 523.25 554.36 587.32 622.25 659.25 698.45 739.98 783.99 830.60 879.99 932.32 987.766 1046.50 1108.73 1174.65 1244.50 1318.51 1396.91 1479.97 1567.98 1661.21 1759.99 1864.65 1975.537 2093.00 2217.46 2349.31 2489.01 2637.02 2793.82 2959.95 3135.96 3322.43 3519.99 3729.31 3951.06

21.3 Octava MIDI Una octava MIDI, denotada por O u O′, es un conjunto de do-

ce notas asociadas a una seccion del teclado de un sintetizador; con sostenidos (♯),

expresion 21.2:

O = C,C♯, D,D♯, E, F, F ♯, G,G♯, A, A♯, B, (21.2)

o bien con bemoles (), expresion 21.3:

O′ = C,D, D, E, E, F,G, G, A, A, B, B. (21.3)

El teclado de un sintetizador, denotado por P , es un conjunto de octavas On

Page 89: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 21. PROGRAMANDO CON MIDI 88

concatenadas dentro del espacio del teclado, expresion 21.4,

P = O0, O1, O2, . . . , On, (21.4)

para un sintetizador MIDI de concierto con ocho octavas, n = 7; donde n es el nume-

ro de octava. Los tonos de la notas de O7 (octava siete) tienen el doble de frecuencia

de los tonos de las notas que pertenecen a O6 (octava seis); asimismo, las de O5 tie-

nen el doble de O4, y ası sucesivamente.

21.4 Tono MIDI Un tono MIDI es el elemento Xij de la matriz X cuyo numero en-

tero n = Xij es asignado a cada tecla de un sintetizador MIDI o piano electronico. Los

elementos de la matriz estan agrupados por notas y octavas; donde: i = 0, 1, 2, . . . , 11

es la nota de la escala musical; j = 0, 1, 2, . . . , 7 es la octava que contiene la nota; y

n = 0, 1, 2, . . . , 95 es el tono Xij de la nota, tal como se muestra en la expresion (21.5),

X =

⎢⎢⎢⎢⎣

X0,0 X1,0 . . . X11,0

X0,1 X1,1 . . . X11,1...

... Xi,j...

X0,7 . . . . . . X11,7

⎥⎥⎥⎥⎦; (21.5)

con base en octavas y notas, la notacion Xij permite a los sistemas MIDI transmitir

y recibir tonos y notas sin importar la octava [?]. Aplicando el teorema del residuo,

y dado que 0 ≤ n ≤ 95, se obtiene que, el tono n de la nota de una octava esta da-

da por la expresion (21.6)

n = j(12) + i, (21.6)

donde n es el tono, el cociente es la octava (j), y el residuo es la nota (i). La Tabla

21.2 y la Figura 21.1, muestran esta relacion.

21.5 Escala cromatica MIDI De acuerdo con la Figura 21.1, y teniendo en cuen-

ta la notacion que corresponde a cada una de las teclas (blancas y negras) de un seg-

mento del teclado de piano, considerese lo siguiente:

Una escala cromatica MIDI esta definida por el conjunto Ec cuyos elementos

son tonos consecutivos n, n+1, n+2, . . ., n+12, tal que n es llamado tono raız don-

Page 90: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 21. PROGRAMANDO CON MIDI 89

Tabla 21.2: Relacion n entre octavas(j), notas(i) y tonos(n), dado por n = j(12) + i.

C D D E E F G G A A B BC C♯ D D♯ E F F♯ G G♯ A A♯ BDO RE RE MI MI FA SOL SOL LA LA SI SIDO DO♯ RE RE♯ MI FA FA♯ SOL SOL♯ LA LA♯ SI

Nota(i)Octava(j) 0 1 2 3 4 5 6 7 8 9 10 11

0 0 1 2 3 4 5 6 7 8 9 10 111 12 13 14 15 16 17 18 19 20 21 22 232 24 25 26 27 28 29 30 31 32 33 34 353 36 37 38 39 40 41 42 43 44 45 46 474 48 49 50 51 52 53 54 55 56 57 58 595 60 61 62 63 64 65 66 67 68 69 70 716 72 73 74 75 76 77 78 79 80 81 82 837 84 85 86 87 88 89 90 91 92 93 94 95

de comienza la escala (Expresion 21.7),

Ec = n, n+1, n+2, n+3, n+4, n+5, n+6, n+7, n+8, n+9, n+10, n+11, n+12,

(21.7)

por ejemplo, para el caso especıfico del segmento de teclado mostrado en la Figura

21.1; si i = 0, j = 4, entonces el tono raız es n = i+ j(12) = 48, por lo que, la escala

comienza con la nota C4 (DO4) de la octava 4. Es decir, con sostenidos: C4, C4♯, D4,

D4♯, E4, F4, F4♯,G4,G4♯, A4, A4♯, B4, C5. Con bemoles: C4,D4,D4, E4, E4, F4,G4,

G4, A4, A4, B4, B4, C5. Los tonos Xij de la matriz son: 48, 49, 50, 51, 52, 53, 54 55,

56, 57, 58, 59, y 60. Para este caso se consideran todas las teclas (blancas y negras).

21.6 Escala MIDI en modo mayor Asimismo, una escala MIDI en modo mayor

esta definida por el conjunto EM cuyos elementos son tonos consecutivos n, n + 2,

n + 4, n + 5, n + 7 n + 9, n + 11, y n + 12, tal que n es el primer elemento llamado

tono raız donde comienza la escala (expresion 21.8),

EM = n+ 0, n+ 2, n+ 4, n+ 5, n+ 7, n+ 9, n+ 11, n+ 12, (21.8)

por ejemplo, si i = 0, j = 4, el tono raız es n = i+ j(12) = 48 entonces, la escala em-

pieza con la nota C4 (DO4). Es decir, C4, D4, E4, F4, G4, A4, B4, C5. Los tonos Xij

Page 91: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 21. PROGRAMANDO CON MIDI 90

DO RE MI FA SOL LA SIC D E F G A B48 50 52 53 55 57 59

Xn+0 Xn+2 Xn+4 Xn+5 Xn+7 Xn+9 Xn+11

DO♯REC♯D49

Xn+1

RE♯MID♯E51

Xn+3

FA♯SOLF♯G54

Xn+6

SOL♯LAG♯A56

Xn+8

LA♯SIA♯B58

Xn+10

Figura 21.1: Nombres, sımbolos, variables, y teclas de un piano (octava 4).

de la matriz son: 48, 50, 52, 53, 55, 57, 59 y 60. Las teclas negras la Figura 21.1 no

estan consideradas para este caso.

21.7 Escala MIDI en modo menor. Una escala MIDI en modo menor esta definida

por el conjunto Em cuyos elementos n, n+2, n+3, n+5, n+7, n+8, n+10, y n+12 son

tonos consecutivos, tal que n es el tono raız donde comienza la escala (expresion 21.9),

Em = n + 0, n+ 2, n+ 3, n+ 5, n+ 7, n+ 8, n+ 10, n+ 12, (21.9)

Ejemplo. ¿Cuales seran las notas de la escala menor si la primera nota raiz esta dada por los ındi-ces i = 0 y j = 4?

Solucion.

De la matriz X04, el tono raız sera

n = j(12) + i

n = 4 · 12 + 0

n = 48

entonces, la escala comienza con la nota do4 (C4) localizada en la octava 4.

Em = (48 + 0), (48 + 2), (48 + 3), (48 + 5), (48 + 7), (48 + 8), (48 + 10), (48 + 12)

Page 92: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 21. PROGRAMANDO CON MIDI 91

Em = 48, 50, 51, 53, 55, 56, 58, 60

con sostenidos,

Em = re4, re4♯, fa4, sol4, sol4♯, la4♯, do5Em = D4, D4♯, F4, G4, G4♯, A4♯, C5

con bemoles

Em = do4, re4,mi4, fa4, sol4, la4Em = C4, D4, E4, F4, G4, A4

21.8 Acorde MIDI Si dos o mas notas se tocan al mismo tiempo, entonces se pue-

de construir una estructura de acorde. Ası, un acorde mayor esta definido como:

AM = n+ 0, n+ 4, n+ 7 (21.10)

donde: n es el tono raız del acorde. Por ejemplo, si n=48, el acorde de DO mayor

(CM) tendra las notas DO, MI, y SOL (C,E,G) y los numeros MIDI 48H , 52H, y 55H ;

en la Figura 21.2 se muestra la notacion musical para esta estructura.

Figura 21.2: Acorde de DO mayor (CM ).

Page 93: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Capıtulo 22

Sistemas Digitales

22.1 Representacion posicional de un numero. Cualquier numero se puede re-

presentar por la suma del producto de cada dıgito y su base elevada a la potencia de

su posicion (expresion 22.1),

x =n∑

i=0

xi · bi +−m∑

j=−1

xj · bj (22.1)

donde x es un numero entero del sistema representado, b es el dıgito de la base del

sistema o coeficiente, i es la posicion de la parte entera, j es la posicion de la parte

fracionaria, n es el numero total de dıgitos, y m es el numero de dıgitos fracionales.

Expandiendo la expresion (22.1) tenemos la expresion (22.2).

x = xn−1bn−1 + xn−2b

n−2 + · · ·x0b0 + x−1b

−1 + x−2b−2 + · · ·+ x−mb

−m (22.2)

Ejemplo. Sea, x = 1983, b = 10, n = 4, m = 0

x = (1983)10

= (1 · 103) + (9 · 102) + (8 · 101) + (3 · 100)= 1000 + 900 + 80 + 3

= 1983

Ejemplo. Sea, x = 353,56, b = 10, m = 2, n = 3

x = (353,56)10

= (3 · 102) + (5 · 101) + (3 · 100) +(5 · 10−1) + (6 · 10−2)

92

Page 94: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

CAPITULO 22. SISTEMAS DIGITALES 93

x = 300 + 50 + 30 +

0,5 + 0,06

= 353,56

Ejemplo. Sea, x = 1011, b = 2, m = 0, n = 4

x = (1011)2

= (1 · 23) + (0 · 22) + (1 · 21) + (1 · 20)= 8 + 0 + 2 + 1

= 1110

= BH

Ejemplo. Sea, x = 0111,0111, b = 2,m = 4, n = 4

x = (0111,0111)2

= (0 · 23) + (1 · 22) + (1 · 21) + (1 · 20) +(0 · 2−1) + (1 · 2−2) + (1 · 2−3) + (1 · 2−4)

= 0 + 4 + 2 + 1 + 0,0 + 0,25 + 0,125 + 0,069

= 7 + 0,444

= 7,44410

Page 95: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Bibliografıa

[Amb02] Ambardar Ashok, Procesamiento de senales analogicas y digitales, 2nd. ed.

Thomson, 2002. 811 pgs. Michigan Technological University.

[Amm07] Ammeraal Leen, Kang Shang, Computer Graphics for Java Programmers,

2nd. ed. Wiley, 2007. 376 pgs.

[Cas87] Casacubierta Francisco, Enrique Vidal, Reconocimiento Automatico del Ha-

bla, Marcombo, 1987. 205 pgs.

[Cha99] Chassing Rulph, Digital Signal Processing: Laboratory Experiments Using C

and the TMS320C31DSK, John Wiley & Sons, USA 1999. 305 pgs.

[Ham89] Hamming R. W., Digital Filters, 3rd. ed., Dover, 1989. 284 pgs. Bell Labo-

ratories.

[Hay99] Hayes H. Monson., Theory and Problems of Digital Signal Processing,

Schaum’s McGraw-Hill, 1999. 432 pgs.

[Ing07] Ingle Vinay K., John G. Proakis., Digital Signal Processing using MATLAB,

2nd. ed., CENEAGE Learning Bookware Companion Series, 2007. 605 pgs.

[Kur75] Kurosch A. G., Curso de Algebra Superior, MIR, 1975. 442 pgs.

[Edm70] Edminister Joseph A., Circuitos Electricos: Teorıa y 50 Problemas Resuel-

tos, Schaum, McGraw-Hill, 1970. 289 pgs. Org. Electric Circuits: Theory and

Problems 1969.

94

Page 96: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

BIBLIOGRAFIA 95

[Mcl09] McLoughlin Ian, Applied Spech and Audio Processing: With Matlab Exam-

ples, Cambrifge, 2009. 206 pgs.

[Kin67] Kinsler, Lawrence E., Austin R. Frey, Fundamentals of Acoustics, John Wi-

ley & Sons, USA, 1950-1967. 524 pgs.

[Kin93] Kinsler, Lawrence E., Austin R. Frey, Alan B. Coppens, James V. Sanders,

Fundamentos de Acustica, Limusa Noriega Editores, Mex. 1a. ed. 1990, 3a. re-

impresion 1993. 592 pgs.

[Kru01] Krutsch Kenneth F., David S. Cargo, Virginia Howlett, Componentes Java

para el desarrollo de interfases de usuarios, Wrox Anaya Multimedia, Madrid

2001. 511 pgs.

[Men89] Meneses Gonzalez Salvador Ricardo, “Sistema de comunicacion utilizando

codificacion lineal predictiva (LPC)”, Tesis de Maestrıa, CINVESTAV I.P.N., Fe-

brero 1989, Mexico. 129 pgs.

[Nau97] Naughton Patrick, Herbert Schildt, Java: Manual de Referencia, Osborne,

McGraw-Hill, 1997. 764 pgs.

[Pen77] Pena-Guerrero M., “Apuntes de Metrologıa”, coleccion privada, ESIME-IPN,

1977.

[Pet91] Petzold Charles, “Exploring Wave Form Audio Generating Sine Waves in

Software”, PC Magazine, November 26, 1991, pp 505-510.

[Pet99] Petzold Charles, Programing Windows, Microsoft Press, 1999, 1479 pgs.

[Rab78] Rabiner L. R., R. W. Schafer, Digital Processing of Speech Signals, Prenti-

ce, Hall, 1978.

[Rab83] Rabiner L. Juang, Fundamentals of Speech Recognition, Prentice Hall, 1993.

Page 97: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

BIBLIOGRAFIA 96

[Sal05] Salleh Shaharuddin, Albert Y. Zomaya, Stephan Alariu, and Bahrom Sanugi,

Numerical simulations and case studies using Visual C++.NET, Wiley & Sons,

2005. 359 pgs.

[Set78] Seto, William W., Acustica, Schaum Mc GrawHill. 1978. 195 pgs.

[Jac73] Jackson, Herber W., Introduccion a los Circuitos Electricos, Diana, Mexico,

1973, 725 pgs.

[Whi00] White Steve, Digital Signal Processing, Delmar Thomson Learning, 2000,

234 pgs.

Page 98: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Diccionario de Terminos

Velocidad. Cambio de la posicion que experimenta un cuerpo con el tiempo [Rıdnik,

p. 112].

Aceleracion. Cambio de la velocidad que experimenta un cuerpo con el tiempo

[Rıdnik, p: 112].

Ecuacion de Schodinger. Ecuacion diferencial en derivadas parciales de segundo

orden, las cuales definen magnitudes que varian en el espacio y en el tiempo [Rıdnik,

p. 138].

97

Page 99: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

Apendice A

Programas Fuente

A.1 Protocolo de ventana Win32: mwinh.h

//------------------------------------------------------------------------

// NAME

// miwin.h -protocolo comun para Win32

// REM

// Dr. Maximino Pe~na Guerrero. 090806

// Marzo 10, 2010

// -----------------------------------------------------------------------

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

static TCHAR AppName[]=TEXT("AplicacionWindows") ;

HWND hwnd ;

MSG msg ;

WNDCLASS wndclass ;

wndclass.style = CS_HREDRAW | CS_VREDRAW ;

wndclass.lpfnWndProc = WndProc;

wndclass.cbClsExtra = 0;

wndclass.cbWndExtra = 0;

wndclass.hInstance = hInstance ;

wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;

wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;

wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);

wndclass.lpszMenuName = NULL ;

wndclass.lpszClassName = AppName ;

if (!RegisterClass (&wndclass))

MessageBox

(

NULL,TEXT("RegisterClass(): error"),

AppName, MB_ICONERROR

98

Page 100: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 99

);

return 0 ;

hwnd = CreateWindow

(

AppName,

TEXT(QUEHACE),

WS_OVERLAPPEDWINDOW,

XWIN,

YWIN,

ANCHOWIN,

ALTOWIN,

NULL,

NULL,

hInstance,

NULL

);

ShowWindow (hwnd, iCmdShow) ;

UpdateWindow (hwnd) ;

while (GetMessage (&msg, NULL, 0, 0))

TranslateMessage(&msg);

DispatchMessage(&msg);

return(msg.wParam);

A.2 Graficar archivo con datos de punto flotante MFC: gr.c

//---------------------------------------------------------------------

// NAME

// gr.c -graficar un archivo -1+1

// COMPILAR:

// VISUAL STUDIO

// C:\>rc gr.rc --archivo de recursos

// C\:>cl gr.c user32.lib gdi32.lib gr.res

// MINGW

// C:\>windres -o gr.o gr.rc --archivo de recursos

// C\:>cl gr.c -luser32 -lgdi32 gr.o

// COMPILADO CON

// VC++6.0, VC++9.0 (express), VC++9.0 (standard), GCC.

// REM:

// Generar recursos DIALOG con Visual C++ 6.0

// con el editor de recursos.

// Despues ya se puede compilar con linea de comandos.

// DATE:

// Dr. Maximino pe~na Guerrero, 03/12/08

//---------------------------------------------------------------------

//

Page 101: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 100

#include <windows.h>

#include <stdio.h>

#include <string.h>

#include <math.h>

#include "resource.h"

BOOL CALLBACK DlgProc (HWND, UINT, WPARAM, LPARAM) ;

TCHAR szAppName[]=TEXT("IDC_DLG1") ;

int graficarRectangulo(HDC);

int iniciarValores();

int graficarFloat(HDC);

int colocarCoordenadas(HDC);

int graficarMain(HWND);

char str1[20];

char str2[20]="gen3cos.dat";

HPEN pen1;

HPEN pen2;

HPEN pen3;

FILE *fp;

int origenX;

int origenY;

int xa1,ya1,xa2,ya2;

int ancho,alto;

int graficarMain(HWND hwnd)

HDC hdc;

hdc=GetDC(hwnd);

graficarRectangulo(hdc);

colocarCoordenadas(hdc);

graficarFloat(hdc);

ReleaseDC(hwnd,hdc);

return(0);

int graficarRectangulo(HDC hdc)

SelectObject(hdc,pen1);

Rectangle(hdc,xa1,ya1,xa2,ya2);

return(0);

int graficarFloat(HDC hdc)

int i;

Page 102: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 101

int x,y;

double aux=0.0;

double nmuestras;

char strdata[20];

if ((fp=fopen(str2,"rb"))==NULL)

TextOut(hdc,400,50,"Error: no existe archivo de datos",33);

return(0);

SelectObject(hdc,pen2);

nmuestras=atoi(str1);

MoveToEx(hdc,origenX,origenY,NULL);

for (i=0; i<nmuestras;i++)

fscanf(fp,"%s",strdata);

aux = atof(strdata);

y = (int)(origenY-(aux * (alto/2)));

x = (int)(origenX+((ancho/nmuestras)*i));

LineTo(hdc,x,y);

// Sleep(25);

fclose(fp);

return(0);

int iniciarValores()

pen1=CreatePen(PS_SOLID,4,RGB(175,175,175));

pen2=CreatePen(PS_SOLID,1,RGB(0,0,255));

pen3=CreatePen(PS_SOLID,1,RGB(100,100,100));

xa1=40; ya1=20; xa2=620; ya2=300;

ancho = xa2-xa1;

alto = ya2-ya1;

origenX = xa1;

origenY = ((ya2-ya1)/2)+ya1;

return(0);

int colocarCoordenadas(HDC hdc)

SelectObject(hdc,pen3);

MoveToEx(hdc,origenX,origenY,NULL);

LineTo(hdc,xa2,((ya2-ya1)/2)+ya1);

MoveToEx(hdc,((xa2-xa1)/2)+xa1,ya1,NULL);

LineTo(hdc,((xa2-xa1)/2)+xa1,ya2);

Page 103: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 102

TextOut(hdc,origenX-25,ya1-5,"+1.0",4);

TextOut(hdc,origenX-25,origenY-10,"0.0",3);

TextOut(hdc,origenX-25,ya2-10,"-1.0",4);

return(0);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,

PSTR szCmdLine, int iCmdShow)

if (DialogBox(hInstance, szAppName, NULL, DlgProc)==-1)

MessageBox (NULL, TEXT("Error: no AFXRES.H"), szAppName, MB_ICONERROR);

return 0 ;

BOOL CALLBACK DlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

switch (message)

case WM_INITDIALOG:

SetDlgItemText(hwnd,IDC_EDIT1,TEXT("256"));

SetDlgItemText(hwnd,IDC_EDIT2,str2);

SetDlgItemText(hwnd, IDC_BOTON1, TEXT ("Graficar"));

SetDlgItemText(hwnd, IDC_BOTON2, TEXT ("Salir"));

iniciarValores();

break;

case WM_COMMAND:

switch (LOWORD(wParam))

case IDC_BOTON1:

graficarMain(hwnd);

return(TRUE);

case IDC_BOTON2:

EndDialog(hwnd,0);

return(TRUE);

case IDC_EDIT1:

GetDlgItemText(hwnd,IDC_EDIT1,str1,20);

return(TRUE);

case IDC_EDIT2:

GetDlgItemText(hwnd,IDC_EDIT2,str2,20);

return(TRUE);

break;

case WM_PAINT:

graficarMain(hwnd);

Page 104: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 103

break;

case WM_SYSCOMMAND:

switch (wParam)

case SC_CLOSE:

EndDialog (hwnd, 0);

return TRUE ;

break ;

return FALSE ;

A.2.1 Archivo de recursos: gr.rcEste archivo fue generado con el editor de recursos Visual C++ 6.0

//Microsoft Developer Studio generated resource script.

//

#include "resource.h"

// Generated Help ID header file

#define APSTUDIO_HIDDEN_SYMBOLS

#include "resource.hm"

#undef APSTUDIO_HIDDEN_SYMBOLS

#define APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 2 resource.

//

#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////

#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////

// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)

#ifdef _WIN32

LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#pragma code_page(1252)

#endif //_WIN32

#ifdef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// TEXTINCLUDE

//

1 TEXTINCLUDE MOVEABLE PURE

Page 105: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 104

BEGIN

"resource.h\0"

END

2 TEXTINCLUDE MOVEABLE PURE

BEGIN

"#include ""afxres.h""\r\n"

"\0"

END

3 TEXTINCLUDE MOVEABLE PURE

BEGIN

"\r\n"

"\0"

END

#endif // APSTUDIO_INVOKED

#endif // English (U.S.) resources

/////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////

// Spanish (Mexican) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ESM)

#ifdef _WIN32

LANGUAGE LANG_SPANISH, SUBLANG_SPANISH_MEXICAN

#pragma code_page(1252)

#endif //_WIN32

/////////////////////////////////////////////////////////////////////////////

//

// Dialog

//

IDC_DLG1 DIALOGEX 100, 100, 443, 178

STYLE WS_MINIMIZEBOX | WS_VISIBLE | WS_CAPTION | WS_SYSMENU

CAPTION "gr.c -graficar [-1 +1]"

FONT 10, "Arial"

BEGIN

PUSHBUTTON "Boton1",IDC_BOTON1,385,125,49,14

EDITTEXT IDC_EDIT1,375,20,56,12,ES_AUTOHSCROLL,0,HIDC_EDIT1

PUSHBUTTON "Button2",IDC_BOTON2,385,155,50,10

EDITTEXT IDC_EDIT2,375,45,56,12,ES_AUTOHSCROLL,0,HIDC_EDIT2

LTEXT "Archivo:",IDC_STATIC,375,35,27,8

LTEXT "Numero de datos:",IDC_STATIC,375,10,60,8

END

/////////////////////////////////////////////////////////////////////////////

//

Page 106: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 105

// DESIGNINFO

//

#ifdef APSTUDIO_INVOKED

GUIDELINES DESIGNINFO DISCARDABLE

BEGIN

"IDC_DLG1", DIALOG

BEGIN

BOTTOMMARGIN, 170

END

END

#endif // APSTUDIO_INVOKED

#endif // Spanish (Mexican) resources

/////////////////////////////////////////////////////////////////////////////

#ifndef APSTUDIO_INVOKED

/////////////////////////////////////////////////////////////////////////////

//

// Generated from the TEXTINCLUDE 3 resource.

//

/////////////////////////////////////////////////////////////////////////////

#endif // not APSTUDIO_INVOKED

A.2.2 Archivo de cabecera: resource.hArchivo generado con Visual C++ 6.0

//NO_DEPENDENCIES

// Microsoft Developer Studio generated include file.

// Used by gr.rc

//

#define IDC_SCROLL 1000

#define IDC_TEXT 1001

#define IDC_ONOFF 1002

#define IDC_BOTON1 1002

#define IDC_EDIT1 1003

#define IDC_BOTON2 1004

#define IDC_EDIT2 1005

// Next default values for new objects

//

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 106

#define _APS_NEXT_COMMAND_VALUE 40001

#define _APS_NEXT_CONTROL_VALUE 1006

#define _APS_NEXT_SYMED_VALUE 101

Page 107: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 106

#endif

#endif

A.2.3 Archivo de cabecera: resource.hmArchivo generado con Visual C++ 6.0

// Microsoft Developer Studio generated Help ID include file.

// Used by gr.rc

//

#define HIDC_EDIT1 0xffff03eb // "IDC_DLG1" [Spanish (Mexican)]

#define HIDC_EDIT2 0xffff03ed // "IDC_DLG1" [Spanish (Mexican)]

A.3 Entrada de sonido: entrada.c

//---------------------------------------

// entrada.c -capturar entrada de audio.

//

// gcc entrada.c -lwinmm

// cl entrada.c winmm.lib

//---------------------------------------

#include<windows.h>

#include<mmsystem.h>

#include<stdio.h>

#include<malloc.h>

#include<math.h>

#define MAXBUF 5000

#define SAMPLE_RATE 44100

VOID PrintBufferIn(LPBYTE);

HWAVEIN fdin;

WAVEFORMATEX wf;

WAVEHDR wh1;

LPBYTE buf1;

int main()

int j;

buf1=(char *)malloc(MAXBUF);

// Inicializar el WAVEFORMATTEX.

for (j=0;j<MAXBUF;j++) *(buf1+j)=0;

wf.wFormatTag=WAVE_FORMAT_PCM;

wf.nChannels=2;

wf.nSamplesPerSec=SAMPLE_RATE;

wf.wBitsPerSample=16;

wf.nBlockAlign=wf.nChannels * (wf.wBitsPerSample/wf.wBitsPerSample);

wf.nAvgBytesPerSec=wf.nSamplesPerSec * wf.nBlockAlign;

Page 108: Apuntes de Clase - max.esimez.ipn.mx · Cap´ıtulo 1 Elementos El´ectricos 1.1 Resistencia. Una resistencia es un dispositivo que tiene la propiedad de ope-nerse al paso de la corriente

APENDICE A. PROGRAMAS FUENTE 107

wf.cbSize=0;

if (waveInOpen(&fdin,WAVE_MAPPER,&wf,0,0,CALLBACK_NULL))

printf("waveInOpen(): error\n");

return(0);

wh1.lpData = buf1;

wh1.dwBufferLength = MAXBUF;

wh1.dwBytesRecorded = 0;

wh1.dwUser = 0;

wh1.dwFlags = 0;

wh1.dwLoops = 1;

wh1.lpNext = NULL;

wh1.reserved = 0;

waveInPrepareHeader(fdin,&wh1,sizeof(WAVEHDR));

waveInAddBuffer(fdin,&wh1,sizeof(WAVEHDR));

waveInStart(fdin);

Sleep(1000);//getchar();

//for(;;)if ((wh1.dwFlags & WHDR_DONE)==1)break;

waveInReset(fdin);

waveInUnprepareHeader(fdin,&wh1,sizeof(WAVEHDR));

waveInClose(fdin);

PrintBufferIn(buf1);

return 0;

VOID PrintBufferIn(LPBYTE buffer)

int i;

for(i=0;i<MAXBUF;i++)

printf("buffer[%d] = [%u]\n",i,buf1[i]);