function [sample_data, digit_img] = vis_digits(data, index, numrandom, showimg) % assume data is m x m x K matrix, each m x m slice is an image % pull and stitich a bigger collage from the designated indexes % % EE4830, Spring 2008 [m1, m2, k] = size(data); if nargin < 4, showimg = true; end if nargin < 3, numrandom = 0; end if ~isempty(index) n = length(index); end if nargin>2 && numrandom>0 n = numrandom; index = randperm(k); index = sort(index(1:n)); end assert(~isempty(index), 'data sample cannot be empty'); numcols = ceil(sqrt(n)); digit_img = zeros(m1*numcols, m2*numcols); ij = 0; for i = 1 : numcols idx = (i-1)*m1 + (1:m1); for j = 1 : numcols jdx = (j-1)*m2 + (1:m2); ij = ij + 1; if ij <= length(index) digit_img(idx, jdx) = data(:, :, index(ij)) ; end end end if showimg imshow(digit_img) end if nargout>0, sample_data = double(data(:,:,index)); sample_data = reshape(sample_data, m1*m2, length(index)); else sample_data = []; end