Индикаторная матрица в Matlab - PullRequest
2 голосов
/ 24 мая 2011

В Matlab у меня есть переменная двойного типа данных с именем Метка с размером 1211 x 1 .

Я хочу создать IndicatorMatrix (6 столбцов), так что если строка в переменной Label равна 34 , то соответствующая строка в IndicatorMatrix должна иметь значение 0 0 1 10 0 .

Я имею в виду 1 @ 3 и 4-й столбец матрицы индикатора.

1 Ответ

5 голосов
/ 24 мая 2011

Пусть x будет матрица 1211x1 (Label), и пусть im (IndicatorMatrix) будет матрица, которую вы хотите создать. Есть:

h = size(x,1);
im = [zeros(h, 2), repmat(x == 34, 1, 2), zeros(h, 2)];

Это создает матрицу, которая представляет собой горизонтальную конкатенацию нулевой матрицы с 2 столбцами и высотой h, затем булева матрица x == 34 (которая имеет 1, где x было 34, и ноль в других местах), повторенная 2 раза по горизонтали и один раз по вертикали, а затем снова еще одна нулевая матрица.

Обратите внимание, что в вашем случае мы могли бы заменить h на 1211, но я попытался написать более общий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...