UNIVERSIDAD
AUTONORIA MXTROPOLITANA
UNIDAD IZTAPALAPAPROYECTO DE INGENERIA ELECTRONICA
1
INTRODUCCION
TEORICA
1.1
Transformada Rápida
deFourier
Como el algoritmo para
un
ti~tro aitaptivo q e se desarroll6 utilizala
transformada dpida de Fourier se dedica un espacio al d l i s i s de este importante proceso.Consideremos una seilal muestreada x*(t) obtenida a partu de
una
seflal continuax(t).
Esfacil ver
gue
x*(t)=x(t)pr(t) conm+
Mt)
= G(t-mT) (Tren de impulsos de, pridT)Este importante resultado nos dice que el espectro
de
m
SefIal
rnuesbada
es una
repetici6n periodica
de
la h c i h ori@(o
sin muestrat).Si
,qxxmmsque
x(t)
tieneAB
finito e igual
B
entonces se nota que si se desea evitar un "traslape" entm los ampmnks adyacentes de la S& muestreada en el dominiode
la frecuencia entances se deb cumplirEste caso es totalmente d o g o al considerado inicialmente; mi pues tendremos una sefhl
periodica que tiene asociada una serie de Fourier de modo que:
sustituyendo ( 3 ) en (2) para hallar F, y UGliZando
la defbicih
de la Transformadade
Fourier se encuentra que:Sustituyendo (5)
en
(4) y utumdo el hechode
que co0=21r/T yevaluando
en
t=MT tenemos:~ s u s t i t u i r ~ ~ e n ~ e c ( ~ ) p o d e m o s n o t a r q u e e ~ n i m n e n , & o p e r a c i c w e a p a r a ~ ~ ~ ~ ~ de
una
secuencia es muy alto ( N 2 sumas y N2 multiplicaciioees complejas); dmtumhenteexiste un algoritmo muy eficiente para la computaci6n
de
laTDF
llamadoTrans-
RBpida de Fourier0.
Para desarrollar el algoritmo de la
FFT
se procede como sigue:El
primer
paso consiste en dividir la secuenciade
datos en dos par&Nn-1 %I
x($=
Zd
x(m) W N +LM
x(m) W N= x(m) WN + WN
w)n
x,,,.,,
x(m+N/2) WN m =-
-
Considerando valores pares e impares del indice n:
N/2-1
x(2k)= [x(mjfx(m+NM)] WNR k m *=m<=N/2- 1
Ni2-1
x(2k+ I)=
Ed
([x(m)-x(m+N/2)] W N ~ } WWAhora se definen
las
secuencias:g(m)= x(m)
+
x(m+ N/2 ) h(m)= x(m)-
x( m+N/2 )O r-
m
(= N/2-1Se observa entonces que la T r a n s f d se puede computar como sigue:
1 .Formar las secuencias h(m) y g(m). 2% computa
la
secuencia h(m) W N ~3.SecomputanlasTDFdeN/2p~delassecuenciasobtenidasenlospasos 1y2para obtener 10s cceiicientes
TDF
pares e impaea.La
implementacibnd e l
algoritmoFFT
en lenguajeC
se enewntmen
el
archivo TRAPD3A.CEs importante
seflalar
lo siguiuente:1 .El número de iteraciones esta
dada
por a= 1~ N.1.2
Esfrucfura
deun
Filtro Adaptivo
Generalmente los filtros son utilisados en operaciones tales como equahcidn en frecuencia,atenuacibn o e h c i ó n de componentes fuera de un ancho de banda fijo,ehmacibn de ruido;entre otras.cada filtro esta caracterizado por su respuesta al impulso ( fdtros continuos) o por YU respuesta a un impulso unitario ( filtro discreto en
tiempo) ; o en ambos casos por la h c i h de transferencia en el dominio de la kuencia (respuesta en fkcuencia).
En el presente trabajo a menos que se especifíque otra cosa todas las sefíales seran supuestas
&scretas en tiempo.Consececuentemente hablaremos
de
filtrosdiscretos
en tiempo;o siendod s precisos nos centraremos en un caso particular de fílims denominado FILTRO
ADAPTIVO.Hacemos dos importantes distinciones sobre este filtm.primeroeate es un filtro con un número h i t o
de
parametros internos que permiten estableceruna
d e k m b d a Funci6n de Transferencia.(estos parametros definen el tipode
filtro ) .Segundo,un filtro adaptivo contiene un algoritmo de adaptacicjn el cual “habilita” a la fimcidn detransferencia para que pueda “segui? algún comportamiento útil de un ambiente extemo.Especifícamenteecificamente,el algorítmo
de
adaptacibn monitorea el ambimte exterm, delfíltm
y con esto se controla la fimcibn de transferencia haciendo variar losparametroa
del
filtro
mencionados anteriormente.No
siendo muy estrictos podemos decir que este tipo defilm
ea linaal.Sin embargo es natural que se trata de filtros vatiantes en tiempo(caso
continuo) ovarhntes
alcorrimiento ( caso discreto) &vido a que los pametros del
filtro
varian al pasar eltiempo;
observamos tambien que estos parametros v a r k lentamente en relacibn conlos
componentes de alta frecuencia de la seflal filtrada (ambiente extemo del filtro).La
estructura parafiltros
adaptivos mas munmenteempleada e% lallamada
respuesta fíníta al impulso (FIR) filtros discretos en tiempo.Esto9
filtrcHI
pueden representarse por la ecuación de diferencias :Esta estructura es casi universalmente utilizada en los filtros adapt”
.
La=.de
dihmcias puede realizarse directamente en tCrminos de reta&do~~,sumadores y multipli-(Estructura Transversal) o en s u estructura equivalente
llamada
Estmctum Lattíce,losAsí como tenemos opción de escoger entre estos dos tips de estructura para
la
reaiización de los filtros adaptiws,tenemos tambien la opci6n de escoger entre unagran
variedad de algoritmos de adaptacibn; de estos debemos considerar dos mediciones importantes:La
velocidad de adaptacibn y la exactitud de la h c i h adaptada a la fimcibn de transkencia .Por otro lado es importante mencionar que normalmente se utikm-4 este filtroen
el estadoestacionario (practicamente no hay cambios).En el estado no estacionario la situacibn no es simple ya que la exactitud del filtro esta tambien relacianada con la velocidad de adaptacibn.
2 ANALISIS DEL ALGORITMO DE ADAPTACION
2.1
Tipos
dealgoritmos
deadaptación
Los algorítmos de adaptacibn pueden ser de bloque o recursivos. En los algoritmos
de bloque& S& de entrada es &vidda en bloques de tiempo; y cada bloque es procesado indepndientaente. b s bloques se procesan uthzando transformaciones lineales
para
finalmente m&icar en cada bloque los parametros caracteristiws del filtro. Por otro lado elalgoritmo reGursivo es implementado con un conjunto de operaciones utilizado ecuaciones
recursivas de modo que se genera un nuevo conjunto de panimetros para cada muestra de entrada de datos.
El algoritmo de adaptacibn en bloques tiene mayor
interes
m donde loacambiw
ocurren mhs rApidamente;Ua ejemplo de esto seria una sefíaí con varianvl estadistíca nipidacomo lo es la seflal de voz por lo que es comun usar el algoritmo
de
bloque para esta seAal;por otro lado para sefiales que varian lentamente ambos algorí- dan estimaciones muy exactas.El algoritmo de adaptacibn por bloques requiere
una
cantidadfmita
de estados pasados del sistema ( si::temas de memoriaf
í
n
i
t
a
)
por ello es d o g o alcaso
FIR ; entanto
que un sistesm recursivo requiereconocer
todos los estados pasadosdel
sistema por lo quese le considera d o g o al caso IIR (respuesta ktimta a l impulso).
Por tanto un filtro IIR time memoria infinita como el algoritmo
de
adaptacibn mxrsiva;en tanto queun
filtro FIR time memoria fínita como el algorítmode
adaptacih porbloques.
La idea del trueque entre velocidad de adaptacibn y exactitud esta
intimamente
relacionada con la cantidad de memoria del algorítmo.En particular como la ltqytudde
lamemoria incrementa el conocimiento que se tiene de la sefIal
de
entrada y cano esto es considerado en la adaptacibn ;entonces es fhcil notar que la exactitudcreced.sin
e d a q o el aumento de la longitud de memoria incrementa la lentitud de adaptacibn desde que la -va infomcibn no es aslmilada tan dpidamente.El algoritmo que se ha elegido para implementar en lenguaje C @ene!cea 1-
algoritmos del tipo &us? squares (,LS).En esta clase de algorítmos ,la Wcdentre la
respuesta deseada de el fíltro y
h
respuesta actual se asume cuadratica sobre t"f bloque .Estadiferencia cuiidratica es entonces minimizada sobre la eleccibn de uno de los prhwtms del
Una de las tkcnicas d s utilizadas es la llamada least mean square (Z”,) o .mchastic gmdient (SG) ;esta tbcnica evita la solucih explicita de un conjunto de ecuaciones lineales moviendo el vector de parametros en la direccion opuesta al vector
gradiente.
2.2
Análisis
de laconvergencia
del
algoritmo
En seguida se Rnalizar$ la convergencia de un nuevo algoritmo
de
adaptacih optimizado);la descripcibn y adisis h e propuesta por los doctores Jinhui ChaoJ-kctcx Perez y Shigeo Tsujii apareciendo en el articulo “A Fast Block Adaptive FilterAlgorithm
Using Eigenvalue Reciprocal as Stepsizes“de la IEEE TRANSACTION ON ACOUSTICS,SPEECH.,AND SIGNAL PROCESSING Vo1.38.La
modiíicacihn consiste en optimizar el tamafio del paso para alcanzar la posicih del gradiente utilizando un conjunto discreto ,esto es el eigenvalm recipocm dela
matrizde
autacorrelacibn de la sefíal de entrada.Cornemamnos pues a abordar el problema;
e
t
-
es importaate notar quelos algorítmos Gradient-search-based ( basados en la examina&& del
@de)
a m muy utilizados en los algorítmos de adaptacibn por robuztes y simplicidadyin embatgo el inconveniente de estos atgoritxms es su muy lenta velocidad deconvrergesLcia
cUaDd0la
seflatde entrada tiene una larga propagacibn del eigenvalor. Esto es porque, a meaoa que la seplal de entrada sea blanca,los vectores gradimte g m h t e no apustan al de
la
superficie de error (4),(5) . Este algoritmo provee una t$pids cm~mía a cambiode
La realizacicin de una velocidad de convergencia rhpida con una razonable carga computacional ~ se lleva en el transformando al dominio gradient-search-based en el
algoritmo
A D F
{algoritmo del filtro adaptivo) (ecuacibn ('7)).En
estas aproximaciones se tiene un operador lineal fij0;generalmente una transformacih ortogonal,es usada para ortogonoh la serlial de entra&.Subsecuentemente el coeficientede
la i 4 s i m a transformaclon es actualizado utilisando r m t m a o de paso constante dividido por el estinlactor de la i-&sima transformación.Paralelamente a estos fumunientos en la aceleracibn
de
la conwrgencia,los algoritmos de bloque ADFhan
sido propuestos (2)-
(4) .Tales algoritmos proveen considerable reduccibnen la cornputacibn,comparados con el algoritmo LMS típico (4) en el ADF coll relativameate
mayores números de coeficientes de desviaci6n.Sin embargo estos se actualizan
de
la misma forma que en el algoritmo LMS solo que esto ocurre al final de cada bloque,el límite de lospasos es igual al algoritmo LMS.
Por lo tanto la velocidad de convergencia puede ser m8s lenta que en el algoritmo
LMS
típica cuando los eigavaíores(valores propios) dela
matrizde
autocarrelaci6nde
laseflal
de
entrada es altamente disparada.
Asi que el objeto de estudio es encontrar un algoritmo
LS
conuna
carga computacional comparable con el algoritmo fmtL M S
(FLMS) (2)?(3)?(4).En
vezde
buscar el fondo de la superficie de emr,procederemoa en la direccibn del gradimte buscatado la posicibn optima para detener cada actualiutcibn. En otras palabrasusando
msS
qw una medida escalar apropiada para detenerse en algunad i r e e c i h
partidard
e
¡
gradiente; podemos esperar aproximarnos a la convergencia cuando una matrizde
de
paso es usada.Deacuerdo con esto ,un nuevo algoritmo adaptivo (ADF) sera derivado usando transformaciones ortogonales para estimar el tamaft0
de
paso 0ptimo.h tms-ibnortogod optima es conocida como T r a n s b d K d m - h w (KLT) ,en esta los renglones son eigenvectores ortonormahados de la matriz de autocorrelacibn
de la seflal
de entrada. Sin embargo la KLT es de difícil computacibn y ademas no tiene un algoritmorhpido asociado.
Para
secuencias aleatorias estacionarias varias transíümaci- unitariasaproximan el comportamiento de KTL (1). Asi que se d u c e la carga computacid devido
a que puede usarse para la computacibn de la ICLT alguna transformada &pida (las cualea
donde
La s e a l deseada esta dada por:
d(n)= HT(n) X(n) -t m@)
vector de coeficientes
del
s i s t e m a a rnnowq m(n) mpmenta el vectorde
ruidode
dda (parte de d(n) que no pudo ser identificada por y@)).Cuando se usa el algoritmo ADF,utdizan& un gradient-search-based los coeficientes
del
FIR ADF estan dados por:
El gradiente esta dado por: L-1
e(kL+j)= XT(kL+jj[
H
-
W(k)
]+rn(kL3)
es el error a la salida.Sustituyendo la ecuacidn 7 en la 6 tenemos que:
AsumienJo ergdicidad en el intervalo L la ec ( 8 ) puede reescribirse como sigue:
Sustituyendo la ecuacidn (9) en la ecuaci6n (5) tenemos que:
W(k+l) =W&)
+p
H
-
W(k)
]+P
( 1 2 )El valor
W,
que minimiza el cuadrado del error de salida, E[e2(n)J (n=kL+j),ea obteaido al resolver la ecuci6n de Wiener-Houp siguiente:w,=H+R-'P.
( 13)Si W, es sustmido de ambos lados de la
ec.(
12 ) y sidonde
R
es la matriz de autocorrelacibn de la seplal de entrada;esta es simetrica y positiva definida o semidehda.Por lo tanto se puede descomponer usando
una
transformaci6n ortogonalK
como
sigue:R=
K Q
K~
( 16)siendo
Q
una matriz &agonal cuyos elementos son eigenvalom deR
yI= KIC'
( 17)sustituyendo las ecs. (16) y (17) en
la
ec (15) tenemos :E(K+ 1 )=
Kr
[ 1-PQ
]E(K)K
( 18)( 2 1 )
Si tomamos
p=
(&)" ,nullficmmos v,(k) de un solo paso.Por lo tanto ac tualizaremos W(k)con pasos
(Al)-*
,....~ en el algoritmo gradient-search-based ec (5) convergiendo enN
pasos.Este pmso,para N=Z,se muestra enla
siguiente figura(2).vo
Fig.:! hterpehcibn Geométrica del propsito del algoritmo ADF.Para N=2.
El cálculo del tamatio de paso con ayuda de la Transformada KLV provee la mejor ejecucih del algoritmo desde que los renglones son los eigenvectom art"
de
la matriz de autocorrelación de la se&d de entrada .KLV causa estos valom.
Como ya se habia mencionado la KLV no tiene asociada
un
algoritmode
cslculo rhpih,pero como se habia mencionado en el d o . estacionario podemos utilizar la Tmf¿xmada Rhpida de Fourier ( F I T ) de la siguiente forma:
Denotamos por C(k) al vector de 2N coeficientes en el dominio de la hcuencia
dado
por:C(k)=FFT [W(k),O,O, . _ _ O ]
N ceros
Sea B@) la matriz diagonal 2N
X
2N dada por:B(k)"diag (FFT [ x(kN-9, . . . ,x(kN- l ) , x O , . .
.
,x(kN+N- l)]1
Asi el vector de S&& Y(k)=[ y(n)y(n- l), . . . ,y(n+N-l)] = Ultimas
N
thninoade
laA
implementar la actualizacibn de los pesos en el dominio de la frecuencia notese que los elementos del vector gradiente estan dados por la correlaci6n c m & de la secuencia de error con el vector de entrada. Por lo tanto el gradiente puede estimarse en el dominio de lafrecuencia por la siguente computación
V(kj=Primeros N tCrrninos de F'FT' [B
*+$)E@)].
donde
E(k)=[O,O, .
.
.O ,e(kN),.
. . ,e&N+N- l)]N
cerosB* (k) es la matriz complejo conjugado de
B(k).
3.
IMPLEMENTACION
DEL
ALGORITMO
DE
ADAPTACION
Como ya se a
desarrollado
y analisado la convergenciad e l
algoritmode
adaptacitnq el paso natural es entonces su implementacibn; para realizar esto seha elegido
el
lenguajede
programacibn C.
Se ha incluido el ddigo fuente
del
programa principal; partanto
en
estas p@tm sedescribid solamente lo que hace cada modulo.
Prcaxhmento Desp-Menu:
Este proudmiento muestra las opciones de trabajo del programa estas son:
A. PROGRAMA MUESTRA : Esta opcibn
de
trabajo utiliza una secuencia fija para ser identificada de 4x128 puntos; en este caso el sistema a identifícar por dehult 8 ~ pO. 1k);en esta opción se generará "ruido blanco" a la entrada del sistema.(amdicicmes par "default").
B.FILTRO ADAFl'IVO : Esta opci6n
de
trabajo pi& variaa formasde
operacibn ;1.Cargar k h v o s H,Xm,Xr donde H es un archivo que el usuario puede generar;en este archivo se supone que se da el sistema a ser identificado @esos) .Xin es igualmente el mhlvo donde se supone que se encuentra guardado la secuencia de entrada del filtr0.Y
Xr
es el archvo donde se supone se tiene el ruido introducido al sistema.Srmilarmente se pueden anabel resto de las opciones que son 2
.cargar
Arclllvoa H,Xh3 .cagar ~ r c h v o s
r-wr
4.cxgar Archlvos Y,r4lyr
5.Cargiir Archtvo Xin
6.C,wgar Archvo
Xr
7.Cargar Archvo H
En donde por su puesto en las opciones donde no se definen
todos
losarchivos
(opci6n2
a la 7 se toman las condiciones por “default” en los vectores no especificados.Es importante mencionar que el programa no es robusto; es decir no prevee errorwl cum0
archvos no definidos asi que se debe c m primeramente los archivos que se van a
e,
esto se puede hacer en este programa utdizado la opcibn
D.
Dentro de la opción B tanbien se ofken otras opciones de trabajo estas 9011:
i .Cambiar H en algun instante de Tiempo 2.Cambiar Xin en algun instante de Tiempo
3.Cambiar
Xr
en a l p instante de Tiempo 4. Sin cambios en elTiempo
Es decir;el programa ofiece la opcih de modificILc ya sea la fimcibn
de
rtanskai a identdicar,el ruido de entrada o la secuencia de entrada al filtro m algún instantede
tiempo en la simulacidn con la finalidadde
observar que efectos tiene esto m el algaritnrode
sdaptacidn.D.Definir Archivo de Datos
Esta opci6n de trabajo permite d e b un archivo de texto generado por el usuario; tambien se puede utilizar las secuencias predefidas sobre las cuales solo se nquiexen algunos parametros.
S. Salir del Programa
Las opciones anteriores (A.. . S) son tratadas por el procedimieno Analiza_Caso(opciau) este
procedimiento invoca a la subrutina adecuada; siendo el d n del pmg” el
Pr&ento Filtm(modo de trabaj0j);donde modo de trabajo despliega modos o no
de
opciones de trabajo ,ya que modo de trabajo puede especificaruna
corrida libre! o UNComo se mencionó anteriormente el p r b e n t o que pr6cticamente se encarga de
realizar la simuiaci6n es el procedimiento Filtro (modo de trabajo);donde modo de trabajo
puede ser A o B (vease Deap Menu). Sia embargo la "escencia" del algoritmo
no
cambia,es decir es independiente del modo de trabajo y esta &ado en las ecuacioma
d e d u c i d a s
en la seccibn 2.2;en seguida se muestra un pseudoakhgo &l I'mcehiento Filtro.Procedimiento Filtro (modo de trabajo) comienza
EscriWEscriba nombre del archvo de salida''); //En este mhvo se guardadn los
Lee
(nombre) ff puntos de salidaEscribe (" Escribe el número de puntos a generar"); Lee(totaldepunt0s);
Abre -Arcluvo(nombre) para escribir
en
el;Si modo de trabajo es A fijan numdepuntos de las secuencias Otro pide despliega y guarda formas de trabajo;
nx:numdepuntos de la secuencia Xin; naux:numdepuntos de H;
bbques:nxlnaux;
Inicializa los vectores de Trabajo; Obten el sistema a identifim,
Para contador=l hasta totaldepuntos
,paso=l
haz Para k = l hasta bloques+l ,paso=lhaz
Fin de
Para
obten últimos N puntos segun la forma
de
trhjo;Xh(2N)=[primer bloqyedeNptos
,
idtimo bloquede Nptos] CAlcula Ysal;Y = T R F I P r n ;
Genera ruido si es necesario;
Error=(O
...
O,Emr] lMceros E vectorde
N
puntos Chlcula EavJavE=TFS(O ... 0,Emr);
V=TRF(TRFI(XconjugadoE,O.. .
.
..O));
actualiza Xav, calcula p,
H=pV;
Fin de Para MSE=Eav/Xiav; MSEDB=log(MSE); Fin.
obten un bloque Xin de N-aaux puntos;
4.1
Estimaciiin
Espectral deVoz
La nlayor aplicacibn de las kíltros adaptivos es la codifícacibn digital de voz .El primer paso es el rrtlrrlisis-sitltesis.~~ el cual el proceso de generaci&n de voz es caracterizado por un modelo simple,la s dde voz de entrada es usada para estimar los parametros del modelo. Esto es !a parte de adisis de la c ~ c a c i ~ n , p s t ~ o m m t e estos phmetms son e q u a b d o s produciendo la representacidm digital de
la
voz. Despues In S& de voz essintetizada para emular la saw hablada usando los valores de los parametros.
La forma nAs conociJa de chddicar la voz es conocida como pulse code modulation
PCM
(modulacihn por pulsos chdificados) esta t&cnica es simple pero requiere un alta velocidad de bit;uuo rndhcacihn de esta técnica es conocida como differential pulse code modulation DPCM .Estas son algunas tkcnicas de equakacibn.4.2 Equalizacicin adaptivrr
1 . 7 1 ~ de las primeras aplicaciones del filtrado adaptivo en el campo
de
las camunicacianes fixe la ccuakxibn de fi-ecuencydependent attenuation en la trausmicihde
datos. Larespuesta en fkcuencia de mayores datos en el canal no varia sigdicativamenb con el
tienlpo.Sin embargo esta respuesta fbcuentemente no es conocida por adelantado. Asi que
resulta necesario &se& un sistema gue pueda adaptarse a las
caracttnistiw
del canal yqlliza tambien seguir las cardcteristicas variantes en el tiempo.
Una forma tipica de transmicibn digital de datos es la
pulse amplitude rnohlation
(PAM)(modulación par la amplitud del pulso) .Sabemos que este tipo de modulacibn consiste en
la t r m m i c i h de pulsos cuya amplitud v d a en propordm a los valores muestredes .Estos
pulsos pasan atravez del c,Uaal con fi-ecuency-dependent attenuatioqy em el nxeptor los &tos son muestrados en tbm S ~ C ~con el transmisor.Si la velocidad M de mue9trw, es
igual a la velocidad de los :i1mbolos ,entonces la respuesta sobre todo el canal puede c a r a c t e k e por la respuesta muestrada del canal a un solo símbo1o;asi que la salida al
canal (sedal muestreada) pude representarse como una convoluci6n entre la s e a de
entrada de datos y la respuesta del canal con la suma (naturalmente) de ruido .El sistema
1-eceptor para un sistema PAM se compone de varias etapas. El primer paso es filtrar la setíal 2c entrada para e h v mido. La simiente tana es la ckrivaci6n en T.Porque el
fdltrario
adaptivo cornpensador para las fiecuency-dependent attenuation del
canal
,
generando un estimador del símbolo utduado para reGotrrar los símbolos originaies.4.3 Cancelación Adaptiva
del RuidoEn este sistema tenemos básicamente dos e n t r a d a s ,alimabentrada primaria y entrada
referencial. La entrada primaria consiste en la suma de
la sefial mas ruido
y la entrada de referencia consiste en solamente ruido .El objeto es war la entrada referemial para reducir elefecto del ruido de la entrada primaria.% supone que los ruidos estan mmlacionados asi que se busca la -cion de la diferencia cuadrada entre los ruidos (basandose en el algoritmo LSj. Es decir se busca que uno de los ruidos se adapte al otro para asi ser
eliminados gradualmente
d e l
sistema.Este proceso se utiliza en ,electrocardiografhs,en lacancelacih de periodos de interfixencia en las sefbles de voz,entre otros.
Ide
<
stdio . h>
Ide<
conio.
h >Ide <math. h
>
lde < s t d l i b . h >Ide < t i m e . h >
[de " C T c O I s . C"
Ide " A l . C"
f e n t a n a ( I n t n u m , I n t x 1 , i n t y 1 , i n t x 2 , i n t y21
:r( 1 ; en(num) ;
,w (xl-t2, y l + l , x2-1, y2-2) ;
y ( x l t 3 , y l t 2 ) ;
:ierra ( i n t nun)
J W ( ~ , 1,80,25) ; 'r( 1 ;
ose (num) ;
~ x y ( l , l ) ;
n t f ( "A.LLENAR ARCHIVO CON LA €WNCION exp(k*n)\r\n") ;
ntf("B.UENAR ARCHIVO CON LA RMCION exp(k*n)sen(mk+a)\r\n") ;
n t f ( "C. LLENAR " i I V 0 CON LA RM%ION sen ( fmnk+cr) /n) \r\n" 1 :
:printf ("F. LLENAR ARCHIVO DEFINIENDO PUNTO TOR PUNTO\r\n") ;
:prlntf ("n,m.a.r REXE3\r\n") ;
:printf ( "E;scRIBA OPCION . . . "1 ;
otoxy(1 I11 ;
printf ( "1 ARC31IVOS E , Xin, Xr\r\n") ;
printf ("2 .CARGAR ARCHIVOS H,Xin\r\n") ;
p r i n t f ("3.CARGAR ARCHIVOS H,Xr\r\n");
printf ("4.CARGFR ARCHIVOS Xin,Xr\r\n") ;
printf ( "5. CARGAR ARCHIVO Xin\r\n") ;
x i n t f ( " 6 . CARGAR ?!RL3IIVO Xr\r\n" ) :
&nt f ( "7. CARGAR ARCHIVO H\r\n'' ;
?r-intf ("ESCRIBA OPCION.
.
. " ) ;,toxy(l.l) ;
Irintf ("l. CAMBIAR
H EN
ALGUN INSTANTE \r\n") ;Irintf ("2.CAMBIAR Xin
EN
ALGUN INSTANTE \r\n") ;n n t f ( " 3 . CAMBIAR Xr
EN
AIx;UN INSTANTE \r\n") ;)rintf ("4.M REALIZAR NINGUN CAMBIO \r\n") :
)rintf("ESCRIBA OPCION.
.
. " ) ;. Ini-Vec(Vector x.int Num)
k;
for( k=O;k<= Num;k++)
c
x[kl=O.OE+OO;
}
* * * * * * * * * * * * * x * * * * * * * * * * * * * * * * * * * * * * * * *
** .. . .
*/
*/
*/
/
. . .
FUNCIONES DE F'LUJO DE DAMS
bfine-Archivo(char nom-archivo[])
k, final ,error;
2 *pa;
2le x,n,m,alfa,r,pi=3.141593;
,.
opcion;X I , ( ) ;
=fopen(nom-archivo, "wb") ;
"3"E3CRIBA NUMERO DE MUERAS\r\n") ; m f ( "ki". Cf inal ) ;
~tana(5.5.5.70.15);
l U 2 0 ;
:ion=t~upper(getcheO);
? w a ( 5 ) ; ser( 1 ;
x=exp(n*k); /*se genera
em(&)*/
fwrite(Ecx,sizeof(double),l,pa);c p r i n t f ( " \ r \ n % 6 d %14.251f",k.x);
se I F ' . {
cprintf("\r\n
ESCRIBA
MLJETRA [ %d I ",k):scanf ("%lf",&x) ;
fwrite(&x.sizeof (double) ,l,pa);
cprintf ("\r\n % 6 d %14.61f",k,x) ;
break ;
i
f m de los casos*/
i n del for*/ ' = O ;
:e (p;l) ;
i n de kfine-Archivo*/
n-Datos-Archivo I char cadena [ ] )
Z *ApA;
tan;
fopen (cadena, "rb" 1 ;
C(APA,U.~=-END);
ftell(ApA)/sizeof(double);/"*****e~to es el tamaflo******/
;e I ApA) ;
-n(tm) ;
- a m f i ere-
"
ApA ; . , error ;.e x;
-Archlvo-Arreglo(int inicio,int fina1,char nombre-archivo[],Vector Ar-reDestino)
iopen (nombre-archlvo , "rb" ) ;
I i-micio; i<=f inal : i++) /*se llena el arreglo con l o s datos*/
id(ApA) ;
?ad(k.sizeof(doule),l,ApA); -ekstira[il=x:
1 se
rransfiere_Auchivo.~.Arreglo(O,nt,nombre,AR) ;
in de l a inicializacion*/
****************************************-t*************X*****
/
GENERACOR DE RUICO
*/
*/
*****x****************************************~***************/
*/
id linlf(int uni,int *~xl,lnt *ij<2,dcthle krY
* /
1 mido( int mi,
double *sd ,
i n t *ixl.int *¡x2 ,
double *xl,double *x2 1
lble vl,v2,r,s,b9y;
m i f ( m i , ixl, ix2,Eh-I ; ~1=2*r-l;
mif(uni,ixl,ix2,&r); ~2=2*r-1;
;=sqr(vl)
+
sqr(v2) :if ( s > l .OE+OOO)
de ruido*/
f****X********************k***************************/
*/
transversal
*/
*/
. . .
1 transversal(int nt,
double *xl,double *yl,
Vector AR,Vector XR )
.nt i :
'01- (¡=O; i<= n t ; it+)
XR [nt+l-i 1 =XR tnt-i I ;
3[0l=*xl; yl=O.
o
:'or ( ¡=O; i<=nt; i++)
*~l=*yltAR[i]*>(~[i] ;
E¡ [kl=0.0;
'K!F(M,N,Er,Ei for (k=l; k< =N
Gr [kl= (Er [k I k++)
/*ultimas N Error[kl=(y2[kl-yl[kl,0)*/
double alfa,
Vector Hr,Vector Hi,Vector Xin,
Vector Gr,Vector Gil
i n t k,kl;
double Xav,xi,mu;
Xav=U.
o
;for (kl=O:kl<=Nadf;kl++)
{
f o r ( k l : k<=Nadf :k-t+)
i
xi=Xin[Nadftkl;
Xa\s-Xav+(xi*xi) ;
1 1
c
mu=alfa/Xav;
for (k=l;k<=2*Nadf;k+t)
I
HrZkl-Hr[kl+(mu*Gr[k] ) ;
Hi [ k l =Hi [kl +(mu*Gi [k] 1 ;
}
in de adaptar*/
3(char opcion)
uni.ixl,ix2,k.M,N.kl,k2,k3,nt,Nadf,n~~au,bloques,m;
ble sdl,xl.x2,yl,alfa,MSE,MSEDB,Eav,Xiav;
tor AR,>CR.Xin,Yout,F'r,Fi,Yr,Yi,Hr,Hi;
tor ARAux,Gr,Gi,n".Ei,Ekror,Xn;
CJ
E *ApaFile,*apl,*ap2.*ap3; tam:
r ~ombre~l0l,car,ArchivoH~lOl..~chivoX[10l,ArchivoR[10l,resp,modo;
instante,totpuntos;
r ,Ax21101 AH2[101 ;
cprintf ('%An ESCRIBA NOMBRE DEL ARCHIVO DE SALIDA ' I ) ;
scanf ( "%S", nombre) ;
cprintf ("\r\n ESCRIBA EL NUMERO DE PUNIDS A GENERjW " ) ;
ICAR " ) ;
r-\n " 1 :
: "di. Al .-.+ii' - --z . if !opcl-n=='A' )
{
num-awc= 128 ;
bloques+;
sdl=l
.o;
ixl=232 ;
1~2=%5 :
resp= 0 ' ;
mcdo='O' :
1 /*fin de la opcion A * /
else
{
Ventana(6,5,5,75,15); Menu3 ( ) :
resp=toupper (get.che 1 ;
Cierra(6) :
clrscr( 1 :
Ventana(7.5.5.60.15): Menu4 ( ) ;
modo=t oupper (get che ( ) :
Cierra(7) :
c lrscr ( ) :
switch(resp1
c
(Tase ' 1 ' : i
cprmtf ( "\r\n ESCRIBA NOMBRJ2 DEL, ARCHIVO QUE CONTIENE EL SI- A i
scanf ( "%S", ArchivoH) ;
num aux=Num-Datos-Archivo(ArchivoH);
cprintf ( "\,r\n
ESCRIBA
NOMBRE DEL ARCHIVO QUE CONTIENE LOS DATOS DE Escanf ( "%S", ArchivoX) ; apl=fopen(ArchivoX, "rb") ;
nx=Num_Datos-.kchlvo(ArchivoX);
rewind(ap1) :
bl oques=nx/nm-,aux ;
cprintf ("\r\n EXRIBA NOMBRE DEL ARCHIVO QUE CONTIENE LOS DATOS DE R
scanf "%S", FlrchivoR) ;
ap2=fopen(ArchivoR, "rb") ;
rewind(ap2);
break ;
}
case '2':{
cprintf ("\r\n ESCRIBA NOMBRE DEL ?U?CHIVO QUE CONTIENE
EL
SIST'ENA A IICAR "1 ;
" ) :
scanf ( "%S", ArchivoH) ;
num-aux=Num-Datos-Archivo(ArchivoH);
cprintf ("\r\n ESCRIBA NOMBRE DEL ARCHIVO QUE CONTIENE
Las
DATOS DE Escanf ( "%E" . .?lr-r-hivoX) ; apl=fopen Iru chiuoX, "rb") ;
nx=Num ini:f t ; Lrchivo(ArchivoX) ;
rewind(dp1
bloques=m, I . : :m -aux;
sdl=l . O ; ' . , r ~ esta opcion si se necesita generar*/
ixl=232; /' *tT.iIdo para definir Xr=Xn*/
ix2=345 ;
break :
scanf ( "%s", ArchivoH) ;
num_aux=Mun_Datos_Archivo(ArchivoH);
bloques=512/num_awc; /*aqui se supone X{O..512}*/
cprintf ("\r\n -IBA NOMBRE DEL ARCHIVO
4 "I.:
scanf ("%" , ArchivoR) ;
ap2=fopen(ArchivoR, "rb") ;
rewind(ap2) ;
sdl=l.Q; /*en esta opcion s i se necesita
ixl=232; /*ruido para definir Xin*/
ix2=345 ;
break ;
}
case ' 4 ' : {
cprintf ("\r\n ESCRIBA NOMBRE DEL ARCHIVO
scanf ( "%s" . .kchivoX) ;
apl=fopeniAr-chivoX, "rb") ;
r?;<=Nl~-ljatos-Archivo (ArchivoX) ;
rewind(ap1) ;
num-dux= 128 ;
QLE CONTIDE DATOS DE RU
generar*/
bloques=nx/l28; /*aqui se supone H{0..127)*/
cprintf ("\r\n ESCRIBA NOMBRE DEL ARCHIVO
CXIE CONTIENE
Los DATOS DE HUscanf ( ' % s " , ArchivoR) ;
ap2=f open (Arch ivoR, "rb" ;
rewind(ap2) ;
break ;
scanf ( "%" , ArchivoX) ;
apl=fopen(ArchivoX, "rb") ;
nx=Num-Datos-Archivo(ArchivoX); rewind(ap1);
num_aw<=128 ;
blques=nx/l28; /*aqui se supone H{0..127)*/
sdl-1.0; /*en esta opcion si se necesita generar*/
ixl=232; /*ruido para definir Xr*/
break ;
ix2=345 ;
}
case '6':i
num-aux=128;
bloques=512/128; /*aqui se supone X{0..512).H{0..128)
*/
cprintf ("\r\n
ESCRIBA
WMBRE DEL ARCHIVO QUE COWIENEm
DATOS DE Rscanf ( "%S", ArchivoR) ;
ap2=fopen(ArchivoR, "rb") ;
rewind(ap2);
sdl=l.O; /*en esta opcion si se necesita generar*/
ixl=232; /*ruido para definir Xin*/
ix2=345 ;
break ;
}
case ' 7 ' : {
cprintf ("\,r\n ESCRIBA NOMBRE DEL ARCHIVO QUE CONTIENE:
EL
s I m A IDi " ) ;
! :
1. /*fin del case de resp*/
switch[mdo) {
case ' 1' : C
cprint f ( "';r\n ESCRIBA NOMBRE DEL ARCHIVO
DEL
sM;uNDo SISTTMA A I D Wscanf ( "?S", .\HZ) ;
cprlntf( "',r'\n ESCRIBA INSTANTE
DE
CAMBIO ' I ) ;xanf ( "W" , &instante) ;
break ;
1
case ' 2 ' : {
oprlntf i"' 1 ' V L E3CRIBA NOMBRE DEL ARCHIVO DEL sEx;uNDo SISTEMA DE
ENTR
scanf ( ':%S" , AX2 1 ;
ap3=fopen AX2. "rb" :
cprintf ( n ECXIBj4 INSTANTE DE CAMBIO " ) ;
scanf ( " W ' , bLi!-tstante) :
r\?wlnd (ap3) ; break :
).
case '3' : {
cprintf ("\,r\n ECRIBA INSIANTE DE CAMBIO " ) ; acanf ( "%d" , &instante 1 ;
break :
}
)/*fin del case de modo*/
) / * f i n del else*/
Ini_Vec(AR,num_aux*bloques);
In¡-Vec (XI?, num_au*bloques) ;
Ini_l~ec(Xin.num_awc*bloques) ;
Ini-Vec(Yout,num-aux*bloques); Ini_Vec(Rr,num_aux*bloques); Ini-Vec(Fi.num-aux*bloques); In¡-Vec '&'r, num-aux*bloques) ;
Ini VeciYi,num_aux*blos);
IniIVec t H r
.
num-aux*bl(csques) ; Ini.-Vec(Hi.num-aux*bloques); Inl_Vec(Gr,num_aux*bloques); Ini_Vec(Gi,num_aux*bloques);Ini_Vec(Er,num_aux*bloques); Ini,.-Vtsc (Ei, num_awc*bloques) ; Ini -','x (&or, num-aux*bloques) :
Ini_Vec(Xn,num_aux*bloques);
Ini_Vec(~ux,num_aux*bloques);
Nadf=num-aux; nt=num-aux-1;
M=redondea(log(2*num.-~1~) ''lcg(2)):
alfa-1
.o;
Xin[kl=Xin[nrun-aux+kl;
}
for(k=num_au>c+l;k<=2*num-aux;k++) i*ultimos N pts*/
r
if ((resp=='O'): I(resp-"3'): :(resp-='6')::(resp=='7'))
{
if ((modo=='2')~(kl>-instante))
else ruido(l,6sdl,Gixl,&ix2,&l,W);
fread(&xl,s¡zeof(double),l,ap3);
}
else iA1eer del archivo que tiene l o s datos de entrada*/
{
if ((m~o=='2'!SI&(kl>=instante))
fread(&xl,sizeof(double),l,ap3);
else fread(&xl,sizeof(double),l,apl);
transversal(nt.r;;tl,,~~~l,~,~); Xin [kls~l;
if ((resp=='O') I : ( r e s p = = ' 2 ' ) I : (resp=='5') : I (resp=='7'))
I I
ruido(l,&sdl.Gixl.&ix2.&Xl,&X2);/*generar ruido para XI"*/
if ((modo=='3')~(kl>=instante))
Xn[kl=xl/l.O; /*el ruido crece*/
else
Xn [kl = = w 5 . O; 1
else
{
fread(&zl,sizeof(double),l,ap2);
if ((mod0=='3' )&&(kl>=instante))
Xn[kl=xl/l. O; /*el ruido crece*/
else
Xn[kl=xl/5;
}
Yout [kl ?l+Xn [kl ;
convrapida(M.N,Hr,Hi,R-,Fi,Yr,Yi,Xin);
for (k=nm-aux+l;k<=2*num_aux;k++)
{
Error[kl=Yout[kl-Yrikl;
~v=Eav+~Error[kl-Xn[k] )*~Error[kl-Xn[kl);
Xiav=Xiav+~Yout[kl*Yout[kl):
}
gradiente(M,N,Error,F'r,Fi,Gr,Gi,R-,Ei);
adaptar(Nadf,alfa.Hr.Hi,Xin,Gr,Gi);
)/*fin de bloques a generar*/
MSEIEav/Xiav;
~ ~ 1 o . o * l o g ~ M s E ~ / l o g ~ l o . o ~ ; cprintf ("\r\n %6d %14.61f" ,kl,MSEDB) ;
fprintf (ApaF'ile,"\r\n %14.61f",kl,M);
tam=ftell(ApaFile);
1 /*fin de puntos generados*/
fclose(ApaFile1; car-getche ( 1 ;
fclose(ap1) ;
fclose (ap2) ;
rclose (ap3) ;
if (car) goto salir;
. .
. .
1 7 3 3 0 ;
t (1,1,1,80,25,"M",2,0,1~,4,7);
t. ( 2 . 1 , 1 . 8 0 , 2 5 . ' ' P ~ R A M ? , ~ " . 4 , 0 , 1 5 , 1 . 1 5 ) ;
t (4.1.1 ,BO. 25. ".WCHIVO DE TRABR_s0",4,0,15,1,15) ;
t i5,5.5,70.15, "FWNCICNES DEFINIDAS", 2, O . 15,4,7) ;
t ( 6 . S , 5.75,15, "OPCIONES DE DATOS", 2.0,15,13,9) ;
t ('7,5,5.60.15, "OPCIONES DE 'TRABAJO", 2.0.15.3.14) ;