Matlab от одного до целых - PullRequest
0 голосов
/ 15 мая 2018

Я хочу преобразовать одночастотный массив в массив целочисленных значений в MATLAB.Дано:

Y =  1     0     0
     0     1     0
     0     1     0

Я хочу вернуть:

new_y = 1
        2
        2

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Инструментарий нейронной сети MATLAB имеет встроенные функции для преобразования векторов с одним горячим током и индексов: ind2vec() для создания матрицы с горячим нагревом и vec2ind() преобразовать горячую матрицу обратно в вектор индексов.

Примечание: ind2vec возвращает разреженную матрицу. Чтобы преобразовать его в полную матрицу, вы должны использовать функцию full().

>> Y = full(ind2vec([1, 2, 3]))

Y =    

     1     0     0
     0     1     0
     0     0     1

>> new_y = vec2ind(Y)

new_y =

     1     2     3
0 голосов
/ 15 мая 2018

Вы можете использовать find и возвращать только индексы столбцов, например

Y = [1 0 0; 0 1 0; 0 1 0];

[~, new_y] = find(Y);   % output: [1; 2; 2] is the col indices of your 1s

Аналогично, вы можете вернуть индексы строк, если ваш ввод был транспонированным

[new_y, ~] = find(Y);   % output: [1; 2; 3] is the row indices of your 1s
...