- •В. Г. Потемкин
- •Предисловие
- •Введение
- •Используемые обозначения
- •Часть 1. Ппп Neural Network Toolbox
- •1. Система matlab 6
- •1.1. Операционная среда matlab 6
- •Командное окно
- •Окно предыстории
- •Окно запуска
- •Окно текущего каталога
- •Окно рабочей области
- •Справочная подсистема
- •1.3. Демонстрационные примеры ппп nnt
- •2. Модель нейрона и архитектура сети
- •2.1. Модель нейрона
- •2.1.1. Простой нейрон
- •2.1.2. Функция активации
- •2.1.3. Нейрон с векторным входом
- •2.2. Архитектура нейронных сетей
- •2.2.1. Однослойные сети
- •2.2.2. Многослойные сети
- •2.2.3. Сети с прямой передачей сигнала
- •2.3. Создание, инициализация и моделирование сети Формирование архитектуры сети
- •Инициализация сети
- •Моделирование сети
- •3. Обучение нейронных сетей
- •3.1. Процедуры адаптации и обучения
- •Явление переобучения
- •Свойство обобщения
- •3.1.1. Способы адаптации и обучения
- •Адаптация нейронных сетей
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel(' Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Xlabel(''), ylabel('Выходы a(I)'),grid
- •Xlabel(''), ylabel('Веса входов w(I)'),grid
- •Xlabel('Циклы'), ylabel('Ошибка'),grid
- •Обучение нейронных сетей
- •3.2. Методы обучения
- •3.2.1. Обучение однослойной сети
- •3.2.2. Обучение многослойной сети
- •Метод обратного распространения ошибки
- •Характеристика методов обучения
- •3.3. Алгоритмы обучения
- •3.3.1. Градиентные алгоритмы обучения Алгоритм gd
- •Алгоритм gdm
- •Алгоритм gda
- •Алгоритм Rprop
- •3.3.2. Алгоритмы метода сопряженных градиентов
- •Алгоритм cgf
- •Алгоритм cgp
- •Алгоритм cgb
- •Алгоритм scg
- •3.3.3. Квазиньютоновы алгоритмы Алгоритм bfgs
- •Алгоритм oss
- •Алгоритм lm
- •3.3.4. Алгоритмы одномерного поиска
- •Алгоритм gol
- •Алгоритм bre
- •Алгоритм hyb
- •Алгоритм cha
- •Алгоритм bac
- •3.3.5. Расширение возможностей процедур обучения
- •Переобучение
- •Метод регуляризации
- •Формирование представительной выборки
- •Предварительная обработка и восстановление данных
- •Пример процедуры обучения
- •4. Персептроны
- •4.1. Архитектура персептрона
- •4.2. Модель персептрона
- •Моделирование персептрона
- •Инициализация параметров
- •4.3. Процедуры настройки параметров
- •Правила настройки
- •Процедура адаптации
- •5. Линейные сети
- •5.1. Архитектура линейной сети
- •5.2. Создание модели линейной сети
- •5.3. Обучение линейной сети
- •Процедура настройки
- •Процедура обучения
- •5.4. Применение линейных сетей Задача классификации векторов
- •Фильтрация сигнала
- •Предсказание сигнала
- •Подавление шумов
- •Многомерные цифровые фильтры
- •6. Радиальные базисные сети
- •Модель нейрона и архитектура сети
- •Создание сети
- •Радиальная базисная сеть с нулевой ошибкой
- •Итерационная процедура формирования сети
- •Примеры радиальных базисных сетей
- •6.1. Сети grnn
- •Архитектура сети
- •Синтез сети
- •6.2. Сети pnn
- •Архитектура сети
- •Синтез сети
- •7. Сети кластеризации и классификации данных
- •7.1. Самоорганизующиеся нейронные сети
- •7.1.1. Слой Кохонена
- •Архитектура сети
- •Создание сети
- •Правило обучения слоя Кохонена
- •Правило настройки смещений
- •Обучение сети
- •7.1.2. Карта Кохонена
- •Топология карты
- •Функции для расчета расстояний
- •Архитектура сети
- •Создание сети
- •Обучение сети
- •Одномерная карта Кохонена
- •Двумерная карта Кохонена
- •Архитектура сети
- •Создание сети
- •Обучение сети Правила настройки параметров
- •Процедура обучения
- •8. Рекуррентные сети
- •8.1. Сети Элмана
- •Архитектура
- •Создание сети
- •Обучение сети
- •Проверка сети
- •8.2. Сети Хопфилда
- •Архитектура сети
- •Синтез сети
- •Синтез сети
- •Проверка сети
- •9.1.2. Слежение за нестационарным сигналом
- •Инициализация сети
- •Проверка сети
- •9.1.3. Моделирование стационарного фильтра
- •Постановка задачи
- •Синтез сети
- •Проверка сети
- •9.1.4. Моделирование нестационарного фильтра
- •Постановка задачи
- •Инициализация сети
- •Проверка сети
- •9.2. Распознавание образов
- •Постановка задачи
- •Нейронная сеть
- •Архитектура сети
- •Инициализация сети
- •Обучение
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствие шума
- •Эффективность функционирования системы
- •9.3. Нейронные сети и системы управления
- •9.3.1. Регулятор с предсказанием
- •9.3.2. Регулятор narma-l2
- •9.3.3. Регулятор на основе эталонной модели
- •Функции инициализации, адаптации и обучения
- •10.2. Описание элементов сети
- •Описание входов
- •Описание слоев
- •Описание выходов
- •Описание целей
- •Описание смещений
- •Описание весов входа
- •Описание весов слоя
- •Матрицы весов и векторы смещений
- •Информационные поля
- •11. Формирование моделей нейронных сетей
- •11.1. Модели сетей
- •11.1.1. Однослойные сети Персептрон
- •Линейные сети
- •11.1.2. Многослойные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Сети – классификаторы входных векторов
- •Рекуррентные сети
- •11.2. Функции активации
- •Персептрон
- •Линейные сети
- •Радиальные базисные сети
- •Самоорганизующиеся сети
- •Рекуррентные сети
- •11.3. Синаптические функции
- •Функции взвешивания и расстояний
- •Функции накопления
- •11.4. Функции инициализации
- •11.5. Функции адаптации и обучения Функции адаптации
- •Функции обучения
- •Градиентные алгоритмы обучения
- •Алгоритмы метода сопряженных градиентов
- •Квазиньютоновы алгоритмы обучения
- •11.5.1. Функции оценки качества обучения
- •11.6. Функции настройки параметров
- •11.6.1. Функции одномерного поиска
- •11.7. Масштабирование и восстановление данных
- •11.8. Вспомогательные функции
- •Утилиты вычислений
- •Операции с массивами данных
- •Графические утилиты
- •Информация о сети и ее топологии
- •11.9. Моделирование нейронных сетей и система Simulink Функции моделирования сети
- •11.9.1. Применение системы Simulink
- •Библиотеки блоков для моделирования нейронных сетей
- •Построение моделей нейронных сетей
- •Индексный указатель Команды, функции и операторы ппп Neural Network Toolbox
- •Предметный указатель
- •Литература Книги на английском языке:
- •Книги на русском языке:
- •Оглавление
- •1. Система matlab 6 9
- •2. Модель нейрона и архитектура сети 33
- •3. Обучение нейронных сетей 47
- •10. Вычислительная модель нейронной сети 228
- •11. Формирование моделей нейронных сетей 245
11.3. Синаптические функции
Функции этой группы выполняют следующие операции над векторами входов нейронной сети: взвешивание, вычисление расстояний в сетях с топологией, накопление для вычисления потенциала нейрона. При описании синаптических функций описывается не только сама функция, но и ее производные по входным аргументам, если они определены.
Функции взвешивания и расстояний
DOTPROD, DDOTPROD |
Скалярное произведение |
Блок SIMULINK:
Синтаксис:
Z = dotprod(W, P) df = dotprod(‘deriv’) |
dZ_dP = ddotprod('p',W,P,Z) dZ_dW = ddotprod(‘w’,W,P,Z) |
Описание:
Функция Z = dotprod(W, P) вычисляет матрицу взвешенных входов в виде произведения W*P массива входов P размера RQ и матрицы весов W размера SR. Результатом является матрица Z размера SQ.
Функция df = dotprod('deriv') возвращает имя М-функции, которая вычисляет производную скалярного произведения по одному из сомножителей.
Функции dZ_dP = ddotprod('p', W, P, Z) и dZ_dW = ddotprod('w', W, P, Z) имеют следующие входные и выходные аргументы:
W – матрица весов размера SR;
P – массив входов размера RQ;
Z – матрица размера SQ, где S – число нейронов в слое, Q – число векторов входа, R – число элементов каждого вектора входа;
dZ_dP – матрица производной dZ/dP размера SR;
dZ_dW – матрица производной dZ/dW размера RQ.
Примеры:
Вычислим вектор взвешенных входов Z, если заданы случайные матрица весов W и вектор входа P:
W = rand(4,3)
P = rand(3,1); P'
Z = dotprod(W,P); Z'
W =
0.6068 0.4565 0.6154
0.4860 0.0185 0.7919
0.8913 0.8214 0.9218
0.7621 0.4447 0.7382
ans = 0.1763 0.4057 0.9355
ans = 0.8679 0.8340 1.3527 1.0053
Определим имя М-функции, которая вычисляет производную взвешенной функции в виде скалярного произведения:
df = dotprod('deriv')
df = ddotprod
Вычислим производные скалярного произведения по каждому аргументу:
dZ_dP = ddotprod('p',W,P,Z)
dZ_dW = ddotprod('w',W,P,Z)
dZ_dP =
0.6068 0.4565 0.6154
0.4860 0.0185 0.7919
0.8913 0.8214 0.9218
0.7621 0.4447 0.7382
dZ_dW =
0.1763
0.4057
0.9355
Нетрудно убедиться, что производная произведения матрицы весов на вектор входа z = W*P по аргументу P совпадает с матрицей весов W, а производная по аргументу W – с входным вектором p.
Применение функции:
Функция взвешивания dotprod используется по умолчанию при формировании нейронных сетей персептрона newp и линейных слоев newlin. Чтобы применить эту функцию для формирования других типов сетей необходимо установить значения свойств net.inputWeight{i, j}.weightFcn и net.layerWeight{i, j}.weightFcn равными 'dotprod'.
Алгоритм:
Производная скалярного произведения двух матриц Z = W*P по одной из них равна второй матрице, т. е. dZ/dP = W, dZ/dW = P.
Сопутствующие функции: SIM, DIST, NEGDIST, NORMPROD.
nORMPRod |
Нормированное скалярное произведение |
Синтаксис:
Z = normprod(W,P) df = normprod('deriv') |
|
Описание:
Функция взвешивания normprod отличается от функции dotprod тем, что она является нормированной функцией и не имеет производной.
Функция Z = normprod(W,P) вычисляет массив взвешенных входов в виде нормированного скалярного произведения W*P/sum(P,1), где W – матрица весов размера SR, P – массив входов размера RQ. Результатом является массив значений взвешенных входов Z размера SQ.
Функция df = normprod('deriv') возвращает пустую строку ' ', так как производная для функции normprod не определена.
Пример:
Определим случайную весовую матрицу W и вектор входа P и рассчитаем соответствующий взвешенный вход Z:
W = rand(4,3)
P = rand(3,1); P'
Z = normprod(W,P); Z'
W =
0.0153 0.4660 0.2026
0.7468 0.4186 0.6721
0.4451 0.8462 0.8381
0.9318 0.5252 0.0196
ans = 0.6813 0.3795 0.8318
ans = 0.1880 0.6482 0.6983 0.4494
Применение функции:
Функция взвешивания normprod применяется в архитектуре обобщенных регрессионных сетей, формируемых с помощью М-функции newgrnn.
Чтобы применить функцию взвешивания normprod, следует установить значения для свойств net.inputWeights{i, j}.weightFcn и net.layerWeights{i, j}.weightFcn равными 'normprod'.
Алгоритм:
Функция normprod возвращает скалярные произведения весовой матрицы на каждый вектор входа, деленные на сумму элементов каждого вектора, в виде следующей матрицы Z:
Z = W*P./sum(P, 1).
Сопутствующие функции: SIM, DOTPROD, NEGDIST, DIST.
Функции расстояний могут использоваться как функции взвешивания, но их основное назначение характеризовать топологию вероятностных и самоорганизующихся сетей путем вычисления расстояний между нейронами в слое.
DIST |
Евклидово расстояние |
Блок SIMULINK:
Синтаксис:
Z = dist(W,P) df = dist('deriv') |
D = dist(pos) |
Описание:
Функция взвешивания Z = dist(W, P) вычисляет евклидово расстояние между каждой строкой wi матрицы весов W и каждым столбцом pj матрицы входов P в соответствии со следующим соотношением:
zij = norm(wi – pj'). (11.1)
Функция Z = dist(W, P) вычисляет матрицу взвешенных входов для матрицы входов P размера RQ и матрицы весов W размера SR. Результатом является матрица Z размера SQ.
Функция df = dist('deriv') возвращает пустую строку, поскольку производная не определена.
Функция dist может быть использована как функция для вычисления расстояний между нейронами в слое.
Функция расстояния D = dist(pos) вычисляет расстояние между нейронами для сетей с топологией. Входной аргумент pos – это матрица координат расположения нейронов в N-мерном пространстве размера NS; выходной аргумент D – это матрица расстояний размера SS.
Примеры:
Вычислим вектор взвешенных входов Z, если заданы случайные матрица весов W размера 43 и вектор входа P размера 31:
W = rand(4,3);
P = rand(3,1);
Z = dist(W,P)
Z =
0.6791
0.3994
0.3234
0.5746
Результатом является вектор размера 41, вычисленный в соответствии с соотношением (11.1).
Рассмотрим сеть с топологией, для которой задана случайная матрица координат для 10 нейронов в трехмерном пространстве и требуется рассчитать матрицу евклидовых расстояний между ними.
pos = rand(3,10);
D = dist(pos)
D =
Columns 1 through 7
0 0.5304 0.9195 0.9366 0.5776 1.0651 0.9003
0.5304 0 0.7033 0.4450 0.7648 1.1121 0.8339
0.9195 0.7033 0 0.5551 0.6438 0.7713 0.3219
0.9366 0.4450 0.5551 0 0.9521 1.1444 0.7971
0.5776 0.7648 0.6438 0.9521 0 0.9396 0.6349
1.0651 1.1121 0.7713 1.1444 0.9396 0 0.4624
0.9003 0.8339 0.3219 0.7971 0.6349 0.4624 0
1.1471 0.9753 0.4052 0.8125 0.9155 0.5243 0.2948
0.3750 0.2967 0.6520 0.6215 0.6276 0.8666 0.6631
1.0744 0.9119 0.4235 0.7844 0.8969 0.4576 0.2754
Columns 8 through 10
1.1471 0.3750 1.0744
0.9753 0.2967 0.9119
0.4052 0.6520 0.4235
0.8125 0.6215 0.7844
0.9155 0.6276 0.8969
0.5243 0.8666 0.4576
0.2948 0.6631 0.2754
0 0.8512 0.1166
0.8512 0 0.7709
0.1166 0.7709 0
В результате получаем симметричную матрицу взаимных расстояний между нейронами.
Применение функции:
Функция взвешивания dist используется при формировании вероятностных сетей newpnn и обобщенных регрессионных сетей newgrnn. Чтобы применить эту функцию взвешивания для формирования других типов сетей необходимо установить значения свойств net.inputWeight{i, j}.weightFcn и net.layerWeight{i, j}.weightFcn равными 'dist'.
Чтобы применить функцию расстояния dist для сетей с топологией, необходимо установить значение свойства net.layers{i}.distanceFcn равным 'dist'.
Алгоритм:
Евклидово расстояние d между векторами x и y вычисляется в системе MATLAB следующим образом:
d = sqrt((x–y).^2).
Сопутствующие функции: SIM, DOTPROD, NEGDIST, NORMPROD, MANDIST, LINKDIST.
negdist |
Отрицательное евклидово расстояние |
Синтаксис:
Z = negdist(W, P)
df = negdist('deriv')
Описание:
Функция negdist применяется в самоорганизующихся сетях как функция взвешивания.
Функция взвешивания Z = negdist(W, P) вычисляет отрицательное евклидово расстояние между каждой строкой wi матрицы весов W и каждым столбцом pj матрицы входов P в соответствии со следующим соотношением:
zij = norm(wi – pj'). (11.2)
Функция Z = dist(W, P) вычисляет матрицу взвешенных входов для матрицы входов P размера RQ и матрицы весов W размера SR. Результатом является матрица Z размера SQ.
Функция df = dist('deriv') возвращает пустую строку, поскольку производная не определена.
Пример:
Вычислим вектор взвешенных входов Z, если заданы случайные матрица весов W размера 43 и вектор входа P размера 31:
W = rand(4,3);
P = rand(3,1);
Z = negdist(W,P)
Z =
–0.7558
–0.8090
–0.4755
–0.8113
Применение функции:
Функция взвешивания negdist используется при формировании самоорганизующихся сетей newc и newsom. Чтобы применить эту функцию взвешивания для других сетей, необходимо установить значения свойств net.inputWeight{i, j}.weightFcn и net.layerWeight{i, j}.weightFcn равными 'negdist'.
Алгоритм:
Функция negdist вычисляет взвешенный вход для векторов x и y в системе MATLAB следующим образом:
z = –sqrt(sum(x – y).^2).
Сопутствующие функции: sim, dotprod, dist.
mandist |
Расстояние суммарного координатного смещения |
Синтаксис:
Z = mandist(W, P) df = mandist('deriv') |
D = mandist(pos) |
Описание:
Функция взвешивания Z = mandist(W, P) вычисляет расстояние в виде суммарного координатного смещения между каждой строкой wi матрицы весов W и столбцом pj матрицы входов P в соответствии со следующим соотношением:
zij = sum(abs(wi – pj')). (11.3)
Функция Z = mandist(W, P) вычисляет матрицу взвешенных входов для матрицы входов P размера RQ и матрицы весов W размера SR. Результатом является матрица Z размера SQ.
Функция df = dist('deriv') возвращает пустую строку, поскольку производная не определена.
Функция mandist может быть использована как функция для вычисления расстояний между нейронами в слое.
Функция расстояния D = mandist(pos) вычисляет расстояние между нейронами для сетей с топологией. Входной аргумент pos – это матрица координат расположения нейронов в N-мерном пространстве размера NS; выходной аргумент D – это матрица расстояний размера SS.
Пример:
Вычислим вектор взвешенных входов Z, если заданы случайные матрица весов W размера 43 и вектор входа P размера 31:
W = rand(4,3);
P = rand(3,1);
Z = mandist(W,P)
Z =
0.8265
0.9830
1.0359
1.7712
Результатом является вектор размера 41, вычисленный в соответствии с соотношением (11.2).
Рассмотрим сеть с топологией, для которой задана случайная матрица координат для 10 нейронов в трехмерном пространстве и требуется рассчитать матрицу евклидовых расстояний между ними.
pos = rand(3,10);
D = mandist(pos)
D =
Columns 1 through 7
0 0.8589 0.6427 1.2565 0.8813 0.5815 0.7340
0.8589 0 0.6227 0.9084 1.2433 1.4404 0.7770
0.6427 0.6227 0 0.8333 1.5239 1.1681 1.2451
1.2565 0.9084 0.8333 0 0.9730 1.0287 1.5443
0.8813 1.2433 1.5239 0.9730 0 0.7039 1.1153
0.5815 1.4404 1.1681 1.0287 0.7039 0 1.2512
0.7340 0.7770 1.2451 1.5443 1.1153 1.2512 0
0.8268 0.8910 0.9289 1.7622 1.7081 1.3523 1.1911
1.0852 0.9757 0.4425 1.0977 1.9665 1.6107 1.5981
0.7504 1.1124 1.3930 1.2194 0.7122 0.9397 0.4031
Columns 8 through 10
0.8268 1.0852 0.7504
0.8910 0.9757 1.1124
0.9289 0.4425 1.3930
1.7622 1.0977 1.2194
1.7081 1.9665 0.7122
1.3523 1.6107 0.9397
1.1911 1.5981 0.4031
0 0.8238 1.5772
0.8238 0 1.8356
1.5772 1.8356 0
Применение функции:
Функция суммарного координатного смещения используется в сетях с топологией, например в картах Кохонена newsom. Чтобы применить эту функцию для других сетей с топологией, необходимо установить значение свойства net.layerWeight{i,j}.distanceFcn равным 'mandist'.
Чтобы применить функцию взвешивания mandist, следует установить свойство net.inputWeight{i, j}.weightFcn равным 'mandist'.
Алгоритм:
Сумммарное координатное смещение d между векторами x и y вычисляется в системе MATLAB следующим образом:
d = sum(abs(x–y)).
Сопутствующие функции: sim, dist, linkdist.
BOXDIST |
Максимальное координатное смещение |
Синтаксис:
d = boxdist(pos)
Описание:
Функция d = boxdist(pos) вычисляет расстояния максимального координатного смещения между нейронами слоя, если задан массив координат нейронов pos размера NS, где N – размерность пространства расположения нейронов. Выходом является массив расстояний размера SS.
Функция boxdist обычно используется в сетях с функцией топологии gridtop.
Пример:
Пусть задан массив случайных координат трехмерного пространства, в которых размещены 10 нейронов. Требуется вычислить массив максимальных координатных смещений между этими нейронами.
pos = rand(3,10);
d = boxdist(pos)
d =
0 0.1614 0.6100 0.5123 0.4512 0.3767
0.1614 0 0.5282 0.3509 0.2898 0.2714
0.6100 0.5282 0 0.4374 0.4965 0.3608
0.5123 0.3509 0.4374 0 0.3044 0.1805
0.4512 0.2898 0.4965 0.3044 0 0.1358
0.3767 0.2714 0.3608 0.1805 0.1358 0
0.2785 0.1967 0.4536 0.4855 0.4244 0.3499
0.4603 0.3119 0.6149 0.5709 0.5097 0.4353
0.5502 0.4720 0.6900 0.3611 0.6655 0.5298
0.2442 0.3926 0.5860 0.4280 0.5862 0.4504
0.2785 0.4603 0.5502 0.2442
0.1967 0.3119 0.4720 0.3926
0.4536 0.6149 0.6900 0.5860
0.4855 0.5709 0.3611 0.4280
0.4244 0.5097 0.6655 0.5862
0.3499 0.4353 0.5298 0.4504
0 0.2623 0.5234 0.4422
0.2623 0 0.7839 0.7045
0.5234 0.7839 0 0.4659
0.4422 0.7045 0.4659 0
Применение функции:
Функция максимального координатного смещения используется в сетях с топологией, например в картах Кохонена newsom. Чтобы применить эту функцию для других сетей с топологией, необходимо установить значение свойства net.layerWeight{i,j}.distanceFcn равным 'boxdist'.
Алгоритм:
Максимальное координатное смещение d между векторами x и y вычисляется в системе MATLAB следующим образом:
d = max(abs(x–y)).
Сопутствующие функции: SIM, DIST, MANDIST, LINKDIST.
linkdist |
Расстояния связи между нейронами слоя |
Синтаксис:
d = linkdist(pos)
Описание:
Функция d = linkdist(pos) вычисляет расстояния связи между нейронами слоя, если задан массив координат нейронов pos размера NS, где N – размерность пространства расположения нейронов. Выходом является массив расстояний размера SS.
Пример:
Пусть задан массив случайных координат трехмерного пространства, в которых размещены 10 нейронов. Требуется вычислить массив расстояний связи между этими нейронами (рис. 11.41):
pos = rand(3,10);
Рис. 11.41
d = linkdist(pos)
d =
0 1 1 1 1 1 1 1 1 1
1 0 1 1 1 1 1 1 1 1
1 1 0 1 1 1 1 1 1 1
1 1 1 0 2 1 2 1 1 1
1 1 1 2 0 1 1 1 2 2
1 1 1 1 1 0 1 1 1 1
1 1 1 2 1 1 0 1 1 1
1 1 1 1 1 1 1 0 1 1
1 1 1 1 2 1 1 1 0 1
1 1 1 1 2 1 1 1 1 0
Применение функции:
Функция расстояния связи linkdist используется для оценки топологии при формировании слоя Кохонена newc и карты Кохонена newsom.
Чтобы применить функцию расстояния связи linkdist, следует установить значение свойства net.layers{i}.distanceFcn равным 'linkdist'.
Алгоритм:
Расстояние связи dij между двумя позициями векторов posi и posj из множества S векторов определяется соотношением
Сопутствующие функции: sim, dist, mandist.
