ПОсмотрел автомасштабатор и не совсем понял заложенной идеи.
Давай заменим слово "автомасштабатор" на нормализацию. Есть разные способы нормализации данных. Самый простой
Пусть задан VectorBaza[];
Нам нужен VectorNorm[]; // Названия от балды
double NormalizireVector(double Input[], double &Output[]){
int Array_Size=ArraySize(Input);
ArrayResize(Output,Array_Size);
double Array_Max=Input[ArrayMaximum(Input)];
double Array_Min=Input[ArrayMinimum(Input)];
for (int i=0;i<Array_Size;i++) Output[i]=(Input[i]-Array_Min)/(Array_Max-Array_Min);
return(Array_Max-Array_Min);
}
Обычно функция ничего не возвращает, но добавил результат как фильтр в будущем.
По поводу нейронки. Нельзя ее так просто обрезать. Не стоит. Лучше новую сделать.
Размерность сети определяется только одним (Количество входов Х Количество выходов)
Количество входов известно, количество выходов сколько нам нужно.
Это самый простой способ нормализации. Приводит все значения в диапазон от 0 до 1. Что нам и нужно.
Второй способ через сумму квадратов. Но пока мы его трогать не будем. Просто в данном случае должно быть, что сумма квадратов значений преобразованного вектора равна 1.
Добавлено (09.01.2009, 06:32)
---------------------------------------------
Можно переделать конечно под один массив
double NormalizireVector(double &Vector[]){
int Array_Size=ArraySize(Vector);
double Array_Max=Vector[ArrayMaximum(Vector)];
double Array_Min=Vector[ArrayMinimum(Vector)];
for (int i=0;i<Array_Size;i++) Vector[i]=(Vector[i]-Array_Min)/(Array_Max-Array_Min);
return(Array_Max-Array_Min);
}