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

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

Pseq = { [ p 1(1), p 2(1), …, p Q(1)]
[ p 1(2), p 2(2), …, p Q(2)]
………
[ p 1(TS), p 2(TS), …, p Q(TS)] }.

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

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

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

Pcon = [ [ p 1(1), p 1(2), …, p 1(TS)];
[ p 2(1), p 2(2), …, p 2(TS)];
…….;
[ p Q(1), p Q(2), …, p Q(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 выборки. Рассмотрим первый шаг, когда объединяются массивы P 1 размера mn 1 и P2 размера mn 2. Тогда образуется массив вида

P = .

Этот массив имеет m 1+ m 2 строк и nn 2 столбцов. На следующем шаге массив Р принимается за Р 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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: