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