Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

Операции с массивами данных

Входной массив P, соответствующий TS моментам времени, может быть представлен в виде массива ячеек Pseq, каждая из которых содержит данные для фиксированного момента времени (сечение по времени):

Pseq = { [p1(1), p2(1), …, pQ(1)] [p1(2), p2(2), …, pQ(2)] ……… [p1(TS),p2(TS), …,pQ(TS)] }.

Этот массив имеет TS ячеек, каждая из которых содержит числовой массив размера RQ.

Такое описание входного массива ячеек соответствует последовательному представлениюнаблюдаемых данных во времени.

Если сформировать временные последовательности, то входной массив Р можно описать иначе. Тогда можно говорить о том, что на вход сети подается R реализаций из интервала времени [1 TS], которые могут быть описаны следующим числовым массивом Pcon:

Pcon = [ [p1(1), p1(2), …, p1(TS)]; [p2(1), p2(2), …, p2(TS)]; ……. ; [pQ(1), pQ(2), …, pQ(TS)] ].

Представление входов как числового массива реализаций в формате doubleсоответствуетгрупповому представлениюданных.

CELL2MAT

Преобразование массива числовых ячеек в массив double

Синтаксис:

M = cell2mat(C)

Описание:

Функция M=cell2mat(C) преобразует массив числовых ячеек C = {M11 M12 ... ; M21 M22 ... ; ...} в числовой массив M = [M11 M12 ...; M21 M22 ... ; ...].

Пример:

С = {[1 2] [3]; [4 5; 6 7] [8; 9]};

cellplot(С) % Рис. 11.63

Рис. 11.63

M = cell2mat(С)

M =

1 2 3

4 5 8

6 7 9

Сопутствующие функции: MAT2CELL.

COMBVEC

Объединение выборок разных размеров

Синтаксис:

P=combvec(P1,P2, …)

Описание:

Функция P=combvec(P1,P2, …) объединяет выборки разных размеров в единую выборку по следующему правилу. Процедура выполняется рекуррентно так, что на каждом шаге объединяются только 2 выборки. Рассмотрим первый шаг, когда объединяются массивыP1 размераm1n1 иP2 размераm2n2. Тогда образуется массив вида

P = .

Этот массив имеет m1+m2 строк иn1n2 столбцов. На следующем шаге массивРпринимается заР1, а массивР3 – за массивР2 и процедура повторяется.

Пример:

Рассмотрим следующие 2 выборки Р1 и Р2 и рассчитаем объединенную выборку Р:

P1 = [1 2 3;

4 5 6];

P2 = [7 8;

9 10];

P = combvec(P1,P2)

P =

1 2 3 1 2 3

4 5 6 4 5 6

7 7 7 8 8 8

9 9 9 10 10 10

Добавим выборку Р3:

P3 = [4 5 6];

P = combvec(P,P3)

P =

1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3

4 5 6 4 5 6 4 5 6 4 5 6 4 5 6 4 5 6

7 7 7 8 8 8 7 7 7 8 8 8 7 7 7 8 8 8

9 9 9 10 10 10 9 9 9 10 10 10 9 9 9 10 10 10

4 4 4 4 4 4 5 5 5 5 5 5 6 6 6 6 6 6

Тот же самый результат будет получен, если применить оператор P = combvec(P1,P2,P3).

CON2SEQ, SEQ2CON

Прямое и обратное преобразования группового и последовательного представления данных

Синтаксис:

S = con2seq(P)

P = seq2con(S)

S = con2seq(P, TS)

Описание:

Функция S = con2seq(P) преобразует числовой массив P размера QTS, соответствующий групповому представлению данных, в массив ячеек S размера 1TS, содержащих числовые массивы размера Q1 и соответствующий последовательному представлению данных.

Функция S=con2seq(P,TS) преобразует массив ячеекPразмераQm*TS, соответствующий групповому представлению данных, в массив ячеек S размераQTS, соответствующий последовательному представлению. При этом каждая ячейка содержит числовой массив размера 1m.

Функция P= seq2con(S) преобразует массив ячеек S размераQTS, содержащих числовые массивы размераRm, в массив ячеек Р размераQ1. При этом каждая ячейка содержит числовой массив размераRm*TS.

Пример:

Преобразуем числовой массив P размера 23, соответствующий групповому представлению данных, в массив ячеек S размера 13, содержащих числовые массивы размера 21, соответствующий последовательному представлению данных:

P = [1 4 2;

2 5 3]

S = con2seq(P)

p2 = [21 double] [21 double] [21 double]

Преобразуем массив ячеек PразмераQ1, содержащих массивы размераRm*TS, который соответствует структуре группового представления, в массив ячеек S размераQTS, содержащих массивы размераRm, который соответствует структуре последовательного представления данных:

P = { [1 2; 1 2];

[3 4; 3 4];

[5 6; 5 6] };

S = con2seq(P,2)

S =

[21 double] [21 double]

[21 double] [21 double]

[21 double] [21 double]

Этому массиву соответствует следующее описание:

cell2mat(S), cellplot(S)

ans =

1 2

1 2

3 4

3 4

5 6

5 6

Преобразуем массив ячеек S размера QTS, содержащих числовые массивы размера Rm, в массив ячеек Р размера Q1. При этом каждая ячейка содержит числовой массив размера Rm*TS:

S = {[1; 1] [5; 4] [1; 2];

[3; 9] [4; 1] [9; 8]}

P = seq2con(S)

S =

[21 double] [21 double] [21 double]

[21 double] [21 double] [21 double]

P =

[23 double]

[23 double]

Сформируем числовой массив P, соответствующий групповому представлению:

P = cell2mat(P)

P =

1 5 1

1 4 2

3 4 9

9 1 8

Сопутствующие функции: CONCUR.

CONCUR

Создание группы векторов смещений

Синтаксис:

B=concur(b,q)

Описание:

Функция B=concur(b,q) преобразует вектор смещенияbразмера S1 или массив ячеек размера Nl1, содержащий векторы смещения для Nl слоев сети, в массив размера Sqили в массив ячеек размера Nl1, содержащий числовые массивы размера Sq.

Примеры:

Функция concur создает 3 копии вектора смещения для данного слоя нейронной сети:

b = [1; 3; 2; –1];

B = concur(b,3)

ans =

1 1 1

3 3 3

2 2 2

–1 –1 –1

Двухслойная нейронная сеть имеет 2 вектора смещения, которые для применения функции concurнеобходимо объединить в вектор ячеек:

b1 = [1; 3; 2; –1];

b2 = [3; 2; –1];

b = {b1; b2}

B = concur(b,3)

b =

[41 double]

[31 double]

B =

[43 double]

[33 double]

Применение функции:

Следующий оператор вычисляет взвешенный вход для слоя с функцией накопления netsum, двумя векторами весов и одним вектором смещения:

n = netsum(z1, z2, b)

Это соотношение реализуется, если векторы z1, z2 и имеют одинаковые размеры, например Sq. Однако если сеть моделируется с помощью функций sim, adapt или train как отклик на q групп векторов, то массивы z1 и z2 должны иметь размер Sq. Прежде чем объединить вектор смещения b с массивами z1 и z2, следует сделать q его копий:

n = netsum(z1,z2,concur(b,q))

Сопутствующие функции: NETSUM, NETPROD, SIM, SEQ2CON, CON2SEQ.

IND2VEC, VEC2IND

Прямое и обратное преобразования вектора индексов классов в матрицу связности

Синтаксис:

vec = ind2vec(ind)

ind = vec2ind(vec)

Описание:

Функция vec = ind2vec(ind) преобразует вектор индексов классов в матрицу связности с единицами в каждом столбце, расположенными в строке, соответствующей значению индекса. Матрица связности определена в классе разреженных матриц.

Функция ind = vec2ind(vec) преобразует матрицу связности в вектор индексов классов так, что индекс класса соответствует номеру строки.

Примеры:

Преобразовать вектор индексов классов в матрицу связности.

ind = [1 3 2 3], vec = ind2vec(ind), vec = full(vec)

ind = 1 3 2 3

vec =

(1,1) 1

(3,2) 1

(2,3) 1

(3,4) 1

vec =

1 0 0 0

0 0 1 0

0 1 0 1

Преобразовать матрицу связности в вектор индексов классов.

vec = [1 0 0 0;

0 0 1 0;

0 1 0 1];

ind = vec2ind(vec)

ind = 1 3 2 3

MAT2CELL

Преобразование числового массива в массив ячеек

Синтаксис:

C = mat2cell(M, mrow, ncol)

Описание:

Функция C = mat2cell(M, mrow, ncol) преобразует числовой массив M размера rowcolв массив ячеек, содержащих блоки, разбиение на которые задается векторами mrow и ncol. При этом должно соблюдаться условие:sum(mrow) =row,sum(ncol) =col.

Пример:

Преобразовать числовой массив М размера 34 в массив ячеек с разбиением mrow = [2 1], ncol = [1 2 1].

M = [1 2 3 4; 5 6 7 8; 9 10 11 12];

C = mat2cell(M,[2 1],[1 2 1])

C =

[21 double] [22 double] [21 double]

[ 9] [12 double] [ 12]

[C{1,:}; C{2,:}]

ans =

1 2 3 4

5 6 7 8

9 10 11 12

Сопутствующие функции: CELL2MAT.

MINMAX

Вычисление минимальных и максимальных элементов векторов входа

Синтаксис:

pr = minmax(P)

Описание:

Функция pr = minmax(P) вычисляет минимальные и максимальные значения элементов массива P векторов входа размера RQ и возвращает массив pr размера R2 минимальных и максимальных значений строк массива P.

Примеры:

P = [0 1 2; –1 –2 –0.5];

pr = minmax(P)

pr =

0 2.0000

–2.0000 –0.5000

NORMC, NORMR

Нормировка матрицы по строкам и столбцам

Синтаксис:

Mr = normr(M)

Mc = normc(M)

Описание:

Функция Mr = normr(M) нормирует длины строк матрицы Mк 1.

Функция Mc = normc(M) нормирует длины столбцов матрицы Mк 1.

Примеры:

Нормировать матрицу М по строкам и столбцам.

M = [1 2;

3 4];

normr(M)

ans =

0.4472 0.8944

0.6000 0.8000

normc(M)

ans =

0.3162 0.4472

0.9487 0.8944

Анализируя результаты, нетрудно убедиться, что нормированные первая строка и второй столбец одинаковы, поскольку они коллинеарны.

Сопутствующие функции: PNORMC.

PNORMC

Псевдонормировка столбцов матрицы

Синтаксис:

pM = pnormc(M,r)

Описание:

Функция pM = pnormc(M, r) нормирует столбцы до заданной длины r, добавляя дополнительную строку к исходной матрице. Такая операция определена как псевдонормировкаматрицы. Необходимо соблюдать условие, чтобы длина столбцов исходной матрицы не превышала r.

При вызове функции с одним входным аргументом в форме pM = pnormc(M) по умолчанию принимается, что r равно 1.

Пример:

M = [0.1 0.6;

0.3 0.1];

pM = pnormc(M)

pM =

0.1000 0.6000

0.3000 0.1000

0.9487 0.7937

Сопутствующие функции: NORMC, NORMR.

QUANT

Округление элементов массива до ближайшего кратного базису округления

Синтаксис:

qP = quant(P, q)

Описание:

Функция qP=quant(P,q) округляет элементы массива Р до ближайшего значения, кратного базису округленияq.

Пример:

Округлим элементы массива Р с точностью до 0.1:

P = [1.333 4.756 –3.897];

qP = quant(P,0.1)

qP = 1.3000 4.8000 –3.9000

SUMSQR

Сумма квадратов элементов массива

Синтаксис:

s = sumsqr(M)

Описание:

Функция s = sumsqr(M) вычисляет сумму квадратов всех элементов массива M.

Пример:

M = [ 1 2 3;

4 5 6];

s = sumsqr(M)

s = 91