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

Это, вероятно, очень просто, но я не вижу этого. Есть ли способ построить матрицу B (ниже), не перебирая все A(i)?

A = [0 0 1 2 0 1];
>> B = [A == A(1);A == A(2);A == A(3);A == A(4);A == A(5);A == A(6)]

B =

 1     1     0     0     1     0
 1     1     0     0     1     0
 0     0     1     0     0     1
 0     0     0     1     0     0
 1     1     0     0     1     0
 0     0     1     0     0     1

person jonem    schedule 26.10.2016    source источник


Ответы (1)


Используйте bsxfun -

bsxfun(@eq,A(:),A)

В MATLAB 2016b и более поздних версиях с автоматическим вещанием это упростилось бы до -

A(:)==A

Похоже, там какой-то ascii-арт, возможно, если бы это был B!

person Divakar    schedule 26.10.2016