Thursday 15 March 2012

matlab - is there a better way of assigning values to a matrix -



matlab - is there a better way of assigning values to a matrix -

say have matrix

a=zeros(10,3);

and vector

ll=[1 1 1 2 2 2 3 1 3 2]';

and want assign value in each row corresponding value in ll row 1

i.e output be

a= 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0

how using loop

for ii=1:length(ll) a(ii,ll(ii)=1; end

this should trick:

ll=[1 1 1 2 2 2 3 1 3 2]'; a=bsxfun(@eq,ll,1:max(ll))

i'm using bsxfun check when entry of ll equal element of row vector [1 2 3] (in case). if entry of ll 1, equal entry in first column of [1 2 3] vector , give 1 in first column of a , zeros in rest of columns of row.

matlab

No comments:

Post a Comment