Е. Миркес - Учебное пособие по курсу «Нейроинформатика»
Prep BinaryPrep1() {Предобработка бинарного признака}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Logic Type Name "Тип предобработки бинарного признака";
Begin
If TLong(Data[1]) = UnknownLong Then Signals[1] = Unknown
Else Begin
If Type Then Begin
If TLong(Data[1]) = 1 Then Signals[1] = 0 Else Begin
If MaxSignals =0 Then Signals[1] = MinSignals
Else Signals[1] = MaxSignals
End
Else Begin
If TLong(Data[1]) = 1 Then Signals[1] = MinSignals
Else Signals[1] = MaxSignals
End
End
End
{Предобработка упорядоченного качественного признака}
Prep UnOrdered1(Num : Long)
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Var
Integer I;
Begin
If TLong(Data[1]) = UnknownLong Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[I] = MinSignals
Signals[TLong(Data[1])] = MaxSignals
End
End
Prep Ordered1(Num : Long) {Предобработка упорядоченного качественного признака}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Var
Integer I;
Begin
If TLong(Data[1]) = UnknownLong Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To TLong(Data[1]) Do
Signals[I] = MaxSignals
For I = TLong(Data[1])+1 To Num Do
Signals[I] = MinSignals
End
End
Prep EmptyPrep1() {Предобработчик, осуществляющий масштабирование и сдвиг сигнала}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Real MinData Name"Значения нижней границы интервала изменения входных данных";
Real MaxData Name"Значения верхней границы интервала изменения входных данных";
Begin
If Data[1] = UnknownReal Then Signals[1] = Unknown
Else Signals[1] = (Data[1] – MinData) * (MaxSignals – MinSignals) / (MaxData – MinData) + MinSignals
End
Prep ModPrep1(Num : Long) {Модулярный предобработчик}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name "Значение сигнала, если значение входного признака не определено";
RealArray[Num] Y Name "Массив величин, используемых для предобработки"
Var
Integer I;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[I] = (Data[1] RMod Y[I] + Y[I]) * (MaxSignals – MinSignals) / (2 * Y[I]) + MinSignals
End
Prep FuncPrep1(Num : Long; F : FuncType) {Функциональный предобработчик}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов";
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов";
Real Unknown Name "Значение сигнала, если значение входного " +
"признака не определено";
Real MinData Name "Значения нижней границы интервала изменения значений функции F ";
Real MaxData Name "Значения верхней границы интервала изменения значений функции F";
RealArray[Num] Y Name "Массив величин, используемых для предобработки"
Var
Integer I;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
For I = 1 To Num Do
Signals[1] = (F(Data[1] – Y[1] – MinData) * (MaxSignals – MinSignals) / (MaxData – MinData) + MinSignals
End
Prep PositPrep1(Num : Long) {Позиционный предобработчик}
Static
Real MinSignals Name "Нижняя граница интервала приемлемых сигналов"
Real MaxSignals Name "Верхняя граница интервала приемлемых сигналов"
Real Unknown Name"Значение сигнала, если значение входного признака не определено";
Real Y Name "Основание системы счисления"
Var
Integer I;
Real W, Q;
Begin
If Data[1] = UnknownReal Then Begin
For I = 1 To Num Do
Signals[I] = Unknown
End Else Begin
W = Data[1];
For I = 1 To Num Do Begin
Q = W RMod Y;
Signals[I] = Q * (MaxSignals – MinSignals) / Y + MinSignals;
W = (W - Q) / Y
End;
End
Contents Temp : EmptyPrep1, Cloud : BinaryPrep1, Wind : UnOrdered1(8), Rain : Ordered1(3);
{Для всех предобработчиков приемлемые значения входных сигналов лежат в интервале от -1 до 1. В случае неопределенного значения во входных данных все сигналы данного предобработчика полагаются равными нулю. Входные данные первого предобработчика меняются от 273 до 293}
Temp SetParameters -1, 1, 1E-40, 273, 293;
CloudSetParameters -1, 1, 0, True;
Wind SetParameters -1, 1, 0;
RainSetParameters -1, 1, 0
Signals NumberOf(Signals,Temp) + NumberOf(Signals, Cloud) + NumberOf(Signals, Wind(8)) + NumberOf(Signals, Rain(3))
Data NumberOf(Data,Temp) + NumberOf(Data, Cloud) + NumberOf(Data,Wind(8)) + NumberOf(Data, Rain(3))
Connections
Temp.Data <=> Data[1];
Cloud.Data <=> Data[2];
Wind.Data <=> Data[3];
Rain.Data <=> Data[4];
Temp.Signals <=> Signals[1];
Cloud.Signals <=> Signals[2];
Wind.Signals[1..8] <=> Signals[3..10];
Rain.Signals[1..3] <=> Signals[11..13]
End Preparator
Пример 2.
Preparator Meteorology
Contents Temp : EmptyPrep, Cloud : BinaryPrep, Wind : UnOrdered(8), Rain : Ordered(3);
Temp SetParameters -1, 1, 1E-40, 273, 293
End Preparator
Стандарт второго уровня компонента предобработчик
Запросы к компоненту предобработчик можно разбить на пять групп:
1. Предобработка.
2. Изменение параметров.
3. Работа со структурой.