Discusión sobre el artículo "Hablando de nuevo sobre los mapas de Kohonen" - página 4

 
Vladimir Karputov:
  1. Las combinaciones ("0", "11", "12", "21", "22") te las acabo de poner hoy de ejemplo. No tengo ni idea de si funcionan o no. Eso es lo que pregunto: si se me ocurren todo tipo de combinaciones, ¿cómo me ayudará la cuadrícula? Pensaba que esta rejilla mostraría visualmente (¿número?) de aciertos de mis ejemplos en determinados grupos (clusters?).
  2. Bien, si hago "... por ejemplo, la diferencia entre Abrir[i]-Cerrar[i] en una columna, y la diferencia entre Abrir[i+1]-Cerrar[i+1] en otra columna, ..." ¿cuál es la respuesta? Bueno, veré diferentes colores, pero ¿cuál es cuál?


Ahí todo es transparente, hay acceso por programa a cada nodo, puedes tanto obtener los datos de un nodo, como poniendo un ejemplo de rejilla obtener qué nodo responde al ejemplo.

Estudia el artículo más detenidamente. La visualización del mapa es sólo una salida adicional de información, hay ejemplos en el artículo donde no hay visualización, pero la red hace su trabajo correctamente.

 

Hola, obtengo un error al compilar:

  • SOM_Net_Base.mqh' SOM_Net_Base.mqh 1 1
  • SOMNode.mqh' SOMNode.mqh 1 1
  • cannot cast 'Conversion_Double' to 'Conversion_UChar' SOM_Net_Base.mqh 115 21
  • 1 error(es), 0 advertencia(s) 2 1

      for(int i=0;i<count_double;i++)
        {
         c_uchar[i]=(Conversion_UChar) c_double[i];
         for(int j=0;j<8;j++) {txtdownl[dcnt]=c_uchar[i].c[j]; dcnt++;}
        }

Por alguna razón, el tipo de datos no se está convirtiendo

struct Conversion_Double { double d; };

al tipo

struct Conversion_UChar  { uchar  c[8];};


 
Andrey Litvichenko:

Hola, da error al compilar:

#include <TypeToBytes.mqh> // https://www.mql5.com/es/code/16280

      for(int i=0;i<count_double;i++)
        {
         _W(c_uchar[i])=c_double[i];
         for(int j=0;j<8;j++) {txtdownl[dcnt]=c_uchar[i].c[j]; dcnt++;}
        }


¿Puedes reemplazar todo el trozo de código original

      ArrayResize(c_uchar,count_double);
      uchar txtdownl[]; ArrayResize(txtdownl,count_double*8);
      int dcnt=0;
      for(int i=0;i<count_double;i++)
        {
         c_uchar[i]=(Conversion_UChar)c_double[i];
         for(int j=0;j<8;j++) {txtdownl[dcnt]=c_uchar[i].c[j]; dcnt++;}
        }
      string txt_titles=CharArrayToString(txtdownl);  Print(txt_titles);


sustitúyelo por esto

      string txt_titles=NULL;
      _W(txt_titles) = c_double;  Print(txt_titles);
 
Andrey Litvichenko:

Hola, me aparece un error al compilar:

  • SOM_Net_Base.mqh' SOM_Net_Base.mqh 1 1
  • SOMNode.mqh' SOMNode.mqh 1 1
  • cannot cast 'Conversion_Double' to 'Conversion_UChar' SOM_Net_Base.mqh 115 21
  • 1 error(es), 0 warning(s) 2 1

Por alguna razón, el tipo de datos no se está convirtiendo

a tipo



Por diseño, no debería convertirse. Da un warning y no unerror, no hagas caso, debería ser así.

Cuando transfieres datos de una estructura a otra sin conversión de tipo, se transfieren datos binarios, no su correspondencia decimal, que es lo que se requiere en este ejemplo.

Esto no es un error, sino una característica.

 
Nikolay Demko:

No debe convertir. Da aviso, no error, no hagas caso, debería ser así.

Cuando se transfieren datos de una estructura a otra sin conversión de tipos, se transfieren datos binarios, no su asignación decimal, que es lo que se requiere en este ejemplo.

Esto no es un error, sino una característica.


Esa es la cuestión: genera un error y se niega a compilar:

  • 1 error(es), 0 warning(s) 2 1
 
Las reglas de conversión de tipos han cambiado "ligeramente" allí)
 
fxsaber:


¿Podría reemplazar toda la pieza de código original


puede sustituirse por esto.


Y el operador _W funcionará para la conversión inversa, es decir, para

_W(c_double[i])=c_uchar[i];

?

 
Andrey Litvichenko:

Y el operador _W funcionará para la transformación inversa, es decir, para

?

Sí, en ambos sentidos. He aquí algunos ejemplos.

 
fxsaber:

Sí, en ambos sentidos. Aquí tienes algunos ejemplos.


Gracias, funciona

 

Buenas tardes,

Desgraciadamente, he accedido tarde al artículo, ahora obviamente faltan ficheros en el archivo

CSOM_Net_Base,
CSOM_Net_Train

¿Se trata de un fallo o de una restricción de acceso?