function seqwrite(X,outfile,opts) % SEQWRITE writes from a sequence object % seqwrite(X,outfile,opts) % % opts.flat : 0 if sequential (default) 1 if flat % opts.sparse : 0 if dense and 1 if sparse (default) % opts.sep : 0 if space separated (default), 1 if tag separated % opts.useoriglabels : 0 if not, 1 if so (default) % opts.dimheader : 0 if want to use it, 1 if not % current default is to set it to 1-opts.flat if nargin<3,opts.seq=1;end if ~isfield(opts,'flat'),opts.flat=0;end if ~isfield(opts,'sparse'),opts.sparse=1;end if ~isfield(opts,'sep'),opts.sep=0;end if ~isfield(opts,'useoriglabels'),opts.useoriglabels=1;end if ~isfield(opts,'dimheader'),opts.dimheader = ~opts.flat;end fid = fopen(outfile,'wt'); numseq = length(X.labels); DIM=size(X.data{1},2); if opts.dimheader fprintf(fid,'\n',DIM); end for k=1:numseq [N,D] = size(X.data{k}); if opts.sparse [Xi,Xj,Xv] = find(X.data{k}); end if D~=DIM error(sprintf('dimension %d of X.data{%d} not equal to dimension %d of X.data{1}',D,k,DIM)); end if ~opts.flat if (opts.sep==1) fprintf(fid,'\n',N); elseif k>1 fprintf(fid,'\n'); end end for n=1:N if (opts.useoriglabels) fprintf(fid,'%d ',X.origlabels(X.labels{k}(n))); else fprintf(fid,'%d ',X.labels{k}(n)); end if opts.sparse f = find(Xi==n); for i=1:length(f) fprintf(fid,'%d:%f ',Xj(f(i)),Xv(f(i))); end else for d=1:DIM fprintf(fid,'%f ',X.data{k}(n,d)); end end fprintf(fid,'\n'); end if ~opts.flat if (opts.sep==1) fprintf(fid,'\n',N); end end end