Daniel@0: function M = assign_cols(cols, vals, M) Daniel@0: % ASSIGN_COLS Assign values to columns of a matrix Daniel@0: % function M = assign_cols(M, cols, vals, M) Daniel@0: % Daniel@0: % Example: Daniel@0: % M = assign_cols(data, ones(1,N)) Daniel@0: % will construct a 1-of-K encoding of the data, where K=ncols=max(data) and N=nrows=length(data) Daniel@0: % Daniel@0: % Example: Daniel@0: % M = zeros(3,2); Daniel@0: % M = assign_cols([1 2 1], [10 20 30], M) Daniel@0: % is equivalent to Daniel@0: % M(1, 1) = 10 Daniel@0: % M(2, 2) = 20 Daniel@0: % M(3, 1) = 30 Daniel@0: % Daniel@0: Daniel@0: if nargin < 3 Daniel@0: nr = length(cols); Daniel@0: nc = max(cols); Daniel@0: M = zeros(nr, nc); Daniel@0: else Daniel@0: [nr nc] = size(M); Daniel@0: end Daniel@0: Daniel@0: if 0 Daniel@0: for r=1:nr Daniel@0: M(r, cols(r)) = vals(r); Daniel@0: end Daniel@0: end Daniel@0: Daniel@0: if 1 Daniel@0: rows = 1:nr; Daniel@0: ndx = subv2ind([nr nc], [rows(:) cols(:)]); Daniel@0: M(ndx) = vals; Daniel@0: end