Обсуждение статьи "Еще раз о картах Кохонена" - страница 4

 
Vladimir Karputov:
  1. Комбинации ("0", "11", 12", "21", "22") это я только сегодня, для примера привёл. Не представляю - рабочие они или нет. Вот и спросил - если я придумаю всяких комбинаций, то как мне поможет сетка? Я думал, что эта сетка покажет визуально (количество?) попаданий моих примеров в какие-то определённые группы (кластеры?).
  2. Ну а если я сделаю "... например разность Open[i]-Close[i] в одной колонке, и разность Open[i+1]-Close[i+1] в другой, ..." какая обратная связь? Ну увижу цвета разные - а кто из них кто?


Там же всё прозрачно, есть программный доступ к каждому ноду, вы можете как получить данные нода, так и дав сетке пример получить какой нод откликается на пример.

Изучите статью повнимательнее. Визуализация карты это лишь дополнительный вывод информации, в статье есть примеры где нет ни какой визуализации однако сеть исправно выполняет свою работу.

 

Здравствуйте, при компиляции выдает ошибку:

  • '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(s), 0 warning(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++;}
        }

Почему-то не преобразуется тип данных 

struct Conversion_Double { double d; };

к типу

struct Conversion_UChar  { uchar  c[8];};


 
Andrey Litvichenko:

Здравствуйте, при компиляции выдает ошибку:

#include <TypeToBytes.mqh> // https://www.mql5.com/ru/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++;}
        }


А можно весь кусок оригинального кода

      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);


заменить на это

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

Здравствуйте, при компиляции выдает ошибку:

  • '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(s), 0 warning(s) 2 1

Почему-то не преобразуется тип данных 

к типу



По задумке он и не должен преобразовываться. Выдаёт варнинг а не эррор, не обращайте внимания, так должно быть.

Когда передаёшь данные из одной структуры в другую без приведения типов передаются двоичные данные, а не их отображения на десятичной шкале, что и требуется в данном примере.

Это не баг а фича.

 
Nikolay Demko:

По задумке он и не должен преобразовываться. Выдаёт варнинг а не эррор, не обращайте внимания, так должно быть.

Когда передаёшь данные из одной структуры в другую без приведения типов передаются двоичные данные, а не их отображения на десятичной шкале, что и требуется в данном примере.

Это не баг а фича.


В том то и дело , что выдает ошибку, и отказывается компилировать:

  • 1 error(s), 0 warning(s) 2 1
 
Там правила приведения типов "слегка" поменялись)
 
fxsaber:


А можно весь кусок оригинального кода


заменить на это


А оператор _W  будет работать для обратного преобразования, то есть для

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

?

 
Andrey Litvichenko:

А оператор _W  будет работать для обратного преобразования, то есть для

?

Да, в обе стороны. Здесь примеры.

 
fxsaber:

Да, в обе стороны. Здесь примеры.


Спасибо, все заработало

 

Добрый день,

К сожалению обратился к статье поздно, сейчас в архиве явно не хватает файлов

CSOM_Net_Base,
CSOM_Net_Train

Это сбой или ограничение доступа?