Está en la página 1de 10

Parcial 1.

Entrnamiendo de red ADALINE para


identificacin de sistemas.
Byron Rubio, Julian Montealegre.
Universidad Autnoma de Occidente
Resumen: En el siguiente informe se describe como
se entrena
una red neuronal artificial, tipo
ADALINE. La red deba recibir los datos de entrada
y de salida de una funcin de transferencia de
segundo orden, los datos se obtenan por medio de la
simulacin del sistema por medio de MATLAB. Para
entrenar la red se utiliz el programa de ARDUINO,
el cual se program para simular la red y a su vez
esta modificara sus pesos y encontrar una salida
muy o igual a que la respuesta del sistema.

I.

de

dar

INTRODUCCIN

El ADALINE fue la primera red neural linear,


el nombre significa ADAptive LINear
Element, y fue desarrollado como un circuito
electrnico adaptivo para uso en telefona
mucho antes de que se concibiera el trmino
red neural.
Algunas de las aplicaciones de la red se
especifican de la siguiente manera:

tiempo,
ser
capaz
predicciones exactas.

Asociacin de patrones: se puede


aplicar a este tipo de problemas
siempre que los patrones sean
linealmente separables.

En el campo del procesamiento de seales:

Fig.1 Representacin de una red ADALINE.

La figura muestra la representacin de la red


ADALINE para n entradas diferentes.
La red ADALIN tiene una funcin de
activacin lineal. Como la red tiene una
funcin de activacin lineal, el valor de la
salida ser igual al valore de la entrada neta
de que la neurona est recibiendo, por lo que
la salida se puede expresar de la siguiente
manera:
N

Filtros de ruido: Limpiar ruido de


seales transmisoras de informacin.
Filtros adaptativos: Un ADALINE
es capaz de predecir el valor de una
seal en el instante t+1 si se conoce
el valor de la misma en los p
instantes anteriores (p es >0 y su
valor depende del problema). El error
de la prediccin ser mayor o menor
segn qu seal queramos predecir.
Si la seal se corresponde a una serie
temporal el ADALINE, pasado un

y= wi xi +(1)
i=1

Para encontrar la actualizacin de los pesos


para entrenar la red se utiliza la siguiente
formula:

w i ( t+ 1 )=w i ( t ) + e p x i (2)
Como se observa en la ecuacin 2 se puede
observar cmo se va actualizando el peso
futuro con el peso actual y el error entre la
diferencia de la seal deseada y la seal

obtenida (ep), y una constante que es el


factor de aprendizaje de la red.

II.

ANALISIS Y RESULTADOS
OBTENIDOS

Para resolver el problema de entrenar la red


se presenta el siguiente sistema de segundo
orden:

F ( s )=

s +10
s +4 s +13
2

La funcin de transferencia presenta un


sistema de segundo orden subamortiguado, el
cual se presenta en el dominio de la
frecuencia.
Para obtener la respuesta del sistema en
diferentes escalones de entrada se utiliza la
herramienta de Matlab simulink, donde la
figura 2 muestra el diagrama de bloques del
sistema y se pueden obtener los valores de la
entrada y la salida del sistema.

La figura 3 muestra la respuesta del sistema a


diferentes entradas escaln, adems de esta
salida ser la respuesta deseada que queremos
en la red ADALINE que se entren.
El entrenamiento de la red se restringe a que
se debe utilizar cuatro entradas, para ello se
reserva las entradas para la salida de la seal,
la seal de salida atrasada una vez, la seal de
entrada del sistema y por ltimo la entrada
del sistema atrasada una vez.
Como el sistema est en presentada en el
dominio de frecuencia se procede a pasar la
funcin al dominio del tiempo discreto, para
tener la salida deseada y el valor de los pesos
que se pretenden obtener al entrenar la red.
Se tiene el mismo tiempo de muestreo de 0.1s
que se utiliz para tomar los datos.

De la ecuacin anterior se despeja se


encuentra la ecuacin en diferencia para
obtener la aproximacin de los pesos
sinpticos obteniendo la siguiente ecuacin:

y ( k )=0.06703 y ( k2 ) +1.564 y ( k 1 )0.4261 u ( k2 )+


Se puede ver que en nuestro caso queremos
entrenar la red y llegar a tener unos pesos
iguales a w1=-0.06703, w2=1.564, w3=0.4261 y w4=0.1241.
Fig2.Diagrama en simulink

Fig.3 Respuesta del sistema

A continuacin se presenta las figuras que se


obtuvieron al momento de entrenar la red en
arduino, mandar los datos obtenidos a Matlab
y comparar la deseada.

float y_K_1=0;
float D;
float alfa=0.01;
int la=1;
float
HiddenWeights[HiddenNodes]
[InputNodes+1]= {
{-0.5, 0.5,0.5,0.5,0}
En la anterior imagen se logra observar dos
seales la azul es la salida de la red entrenada
en arduino, la cual fue enviada por puerto
serial, para observar y ver que la red estaba
entrenando tambin se grafica la seal
deseada
A continuacin se presenta el cdigo creado
en arduino:

};
/
************************************
******************************
* End Network Configuration
************************************
******************************/
int i, j, k;

#include <math.h>

float Accum;
float Hidden[HiddenNodes];

/
************************************
******************************

float Input[InputNodes][PatternCount];

* Network Configuration - customized per


network

float ssalida;

************************************
******************************/
const int PatternCount =1;
const int HiddenNodes = 1;
const int InputNodes = 4;
int pere=0;
int esta=1;
float out[601];
float u_K=0;
float y_K=0;
float u_K_1=0;

int cont=0;

float
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-4.5,
-4.5,
-4.5,

entrada[601]={ -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-2.8, -2.8, -2.8,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,

-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-4.5,
-4.5,
-4.5,

-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-4.5,
-4.5,
-4.5,
-4.5,

-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-4.5,
-4.5,
-4.5,
-4.5,

-4.5, -4.5, -4.5,


-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
-4.5, -4.5, -4.5,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, -1.2,
-1.2, -1.2, -1.2,
-1.2, -1.2, -1.2,

-4.5, -4.5, -4.5, -4.5,


-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
-4.5, -4.5, -4.5, -4.5,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8, 1.8,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3, 4.3,
-1.2, -1.2, -1.2, -1.2,
-1.2, -1.2, -1.2, -1.2,
-1.2, -1.2, -1.2, -1.2,

-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,

-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,

float
-1.6,
-2.44,
-2.17,
-2.13,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-3.48,
-3.6,
-3.47,
-3.48,
-3.49,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,

-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,

-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, -1.2,
-1.2, 0.2, };

salida[601]={0, -0.35,
-1.92, -2.16, -2.32,
-2.41, -2.36, -2.3,
-2.15, -2.14, -2.13,
-2.14, -2.15, -2.15,
-2.17, -2.17, -2.17,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.16, -2.16, -2.16,
-2.38, -2.64, -2.9,
-3.58, -3.64, -3.66,
-3.57, -3.54, -3.51,
-3.46, -3.46, -3.46,
-3.48, -3.48, -3.48,
-3.49, -3.49, -3.49,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,
-3.48, -3.48, -3.48,

-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,

-0.77,
-2.41,
-2.25,
-2.13,
-2.16,
-2.17,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-3.14,
-3.66,
-3.49,
-3.47,
-3.49,
-3.49,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,

-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,

-1.21,
-2.45,
-2.21,
-2.13,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-2.16,
-3.34,
-3.63,
-3.48,
-3.47,
-3.49,
-3.49,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,
-3.48,

-3.48,
-1.74,
1.94,
1.48,
1.33,
1.38,
1.38,
1.37,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
2.83,
3.57,
3.33,
3.33,
3.35,
3.35,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,

-3.48, -3.48, -3.48, -3.48,


-0.77, 0.11, 0.83, 1.38,
2.02, 2.01, 1.93, 1.82, 1.7,
1.4, 1.35, 1.32, 1.3, 1.3, 1.3,
1.34, 1.36, 1.37, 1.38,
1.39, 1.39, 1.38, 1.38,
1.38, 1.38, 1.38, 1.37,
1.37, 1.37, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.38,
1.38, 1.38, 1.38, 1.7, 2.08,
3.12, 3.34, 3.49, 3.57, 3.61,
3.52, 3.47, 3.43, 3.39,
3.32, 3.31, 3.31, 3.31,
3.33, 3.34, 3.34, 3.34,
3.35, 3.35, 3.35, 3.35,
3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34,

-2.7,
1.74,
1.58,
1.31,
1.38,
1.38,
1.37,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
2.48,
3.6,
3.36,
3.32,
3.35,
3.35,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,

3.34, 3.34, 3.34, 3.34, 3.34,


3.34, 3.34, 3.34, 3.34, 3.34,
3.34, 3.34, 3.34, 3.34, 3.34,
2.66, 1.82, 0.98, 0.21, -0.42,
-1.21, -1.39, -1.46, -1.45, -1.38,
-1.18, -1.07, -0.99, -0.92, -0.87,
-0.83, -0.83, -0.83, -0.84, -0.86,
-0.88, -0.89, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
-0.9, -0.9, -0.9, -0.9, -0.9, -0.9,
};

void setup(){
//start serial connection
Serial.begin(9600);
}
void loop(){

cont++;
pere++;

u_K=entrada[cont-1];
y_K=salida[cont-1];
Input[0][0]=y_K;
Input[1][0]=y_K_1;
Input[2][0]=u_K;

3.34,
3.34,
3.34,
-0.9,
-1.28,
-0.84,
-0.87,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,

Input[3][0]=u_K;
D=salida[cont];

while (pere==601){

cont=0;
/
************************************
******************************

pere=0;

* Compute hidden layer activations

************************************
******************************/
for( i = 0 ; i < HiddenNodes ; i++ ) {

la++;

if (la==20){
Serial.print(ssalida);
Serial.print("\n");

Accum = HiddenWeights[i][InputNodes] ;
for( j = 0 ; j < InputNodes ; j++ ) {
Accum += HiddenWeights[i][j]*Input[j]
[0];
}
Hidden[i] = Accum;

ssalida=Hidden[0];

}
while(la>20){
}
}

Del cdigo anterior se debe tener dos cosas


en cuenta el factor de entrenamiento y las
veces que va a actualizar los pesos para la
planta se observ que se debe hacer 20 veces
la actualizacin, por ltimo se obliga que
arduino imprima en el puerto serial 600 datos
para que coincidan con los datos ledos.

HiddenWeights[0][0]=HiddenWeights[0]
[0]+alfa*(D-ssalida)*y_K;
HiddenWeights[0][1]=HiddenWeights[0]
[1]+alfa*(D-ssalida)*y_K_1;

A continuacin se presenta el codigo


realizado en matlab para entrenar la red:

HiddenWeights[0][2]=HiddenWeights[0]
[2]+alfa*(D-ssalida)*u_K;
HiddenWeights[0][3]=HiddenWeights[0]
[3]+alfa*(D-ssalida)*u_K_1;
HiddenWeights[0][4]=0;
u_K_1=u_K;
y_K_1=y_K;

PatternCount =1;
HiddenNodes = 1;
InputNodes = 4;
pere=0;

u_K=0;
y_K=0;
u_K_1=0;

y_K_1=0;
D=zeros(1,601);
alfa=0.01;
HiddenWeights=[-0.5; 0.5; 0.5;
0.5];

Input=[InputNodes,PatternCount];
cont=1;
entrada=[-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,

-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,

-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-2.8,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,

-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
1.8,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,

-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
-4.5,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
1.8, 1.8, 1.8, 1.8,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,

4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
4.3,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,

4.3, 4.3, 4.3, 4.3,


4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
4.3, 4.3, 4.3, 4.3,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
-1.2,
0.2];

salida=[0, -0.35, -0.77, -1.21,


-1.6,
-1.92, -2.16, -2.32,
-2.41, -2.45, -2.44, -2.41,
-2.36, -2.3,
-2.25, -2.21,
-2.17, -2.15, -2.14, -2.13,
-2.13, -2.13, -2.13, -2.14,
-2.15, -2.15, -2.16, -2.16,
-2.16, -2.17, -2.17, -2.17,
-2.17, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,

-2.16, -2.16, -2.16, -2.16,


-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.16, -2.16, -2.16,
-2.16, -2.38, -2.64, -2.9,
-3.14, -3.34, -3.48, -3.58,
-3.64, -3.66, -3.66, -3.63,
-3.6,
-3.57, -3.54, -3.51,
-3.49, -3.48, -3.47, -3.46,
-3.46, -3.46, -3.47, -3.47,
-3.48, -3.48, -3.48, -3.48,
-3.49, -3.49, -3.49, -3.49,
-3.49, -3.49, -3.49, -3.49,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -3.48, -3.48, -3.48,
-3.48, -2.7,
-1.74, -0.77,
0.11,
0.83,
1.38,
1.74,
1.94,
2.02,
2.01,
1.93,
1.82,
1.7, 1.58,
1.48,
1.4, 1.35,
1.32,
1.3, 1.3,
1.3, 1.31,
1.33,
1.34,
1.36,
1.37,
1.38,
1.38,
1.38,
1.39,
1.39,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.37,
1.37,
1.37,
1.37,
1.37,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,

1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.38,
1.7, 2.08,
2.48,
2.83,
3.12,
3.34,
3.49,
3.57,
3.61,
3.6, 3.57,
3.52,
3.47,
3.43,
3.39,
3.36,
3.33,
3.32,
3.31,
3.31,
3.31,
3.32,
3.33,
3.33,
3.34,
3.34,
3.34,
3.35,
3.35,
3.35,
3.35,
3.35,
3.35,
3.35,
3.35,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
3.34,
2.66,
1.82,
0.98,
0.21,
-0.42, -0.9,
-1.21, -1.39,
-1.46, -1.45, -1.38, -1.28,
-1.18, -1.07, -0.99, -0.92,
-0.87, -0.84, -0.83, -0.83,
-0.83, -0.84, -0.86, -0.87,
-0.88, -0.89, -0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,

-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,

-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,

-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,

-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9,
-0.9];

while 1

cont=cont+1;

u_K=entrada(cont-1);
y_K=salida(cont-1);
Input=[y_K,y_K_1,u_K,u_K_1];
D=salida(cont);
yneta=Input*HiddenWeights;
neta(cont)=yneta;

HiddenWeights(1)=
HiddenWeights(1)+alfa*(Dyneta)*y_K;
HiddenWeights(2)=
HiddenWeights(2)+alfa*(Dyneta)*y_K_1;
HiddenWeights(3)=
HiddenWeights(3)+alfa*(Dyneta)*u_K;
HiddenWeights(4)=
HiddenWeights(4)+alfa*(Dyneta)*u_K_1;
u_K_1=u_K;
y_K_1=y_K;

if (cont>=601)
cont=1;
pere=pere+1;
end
if (pere>=3)
w1=HiddenWeights(1);
w2=HiddenWeights(2);
w3=HiddenWeights(3);
w4=HiddenWeights(4);
break
end
end

Para el anterior se debe tener en cuenta que se


realiz el mismo codigo utilizado en arduino
para matlab por lo cual se logra obtener una
grfica entre las 3 seales de salida la azul de
arduino, roja la deseada y verde la de matlab:

III.

CONCLUSIONES

En el entrenamiento de la red ADALINE,


logramos observar que la red se entrena
logrando resultados muy parecidos con
respecto a la respuesta original del sistema.
Otro que aspectos puede observar al entrenar
la red es un proceso que puede dar una mejor
respuesta, disminucin del error en la salida
ya que este directamente afecta la
actualizacin de los pesos sinpticos de la
entrada de la red.
Para aplicaciones que requieren identificar un
sistema de segundo orden es muy til,
adems de ser muy cmoda de entrenar y
entender.

También podría gustarte