function x=load_many_htk(list,dir,ext,number); % x=load_many_htk(list,dir,ext,number); % % loads all the data from a list and a dir to a matrix - htk format % big endian htk default. % number of wanted items from the list should be specified. % first pass - determine size N=0; files=0; ff=fopen(list,'r'); while (files < number) ss=fscanf(ff, '%s',[1 1]); if (isempty(ss)) break; end files=files+1; % name=[dir '/features/' ss '.fea']; %disp(name); name=[dir '/' ss '.' ext]; disp(name); [m,veccount]=readhtk (name); N=N+veccount; end fclose(ff); vecsize = size(m,1); % allocate x = zeros(vecsize,N); disp (['reading ',num2str(N),' vectors from ',num2str(files), ' files...']); % 2nd pass - read fil=0; cnt=0; beg=1; ff=fopen(list,'r'); while (fil < number) ss=fscanf(ff, '%s',[1 1]); if (isempty(ss)) break; end name=[dir '/' ss '.' ext]; %disp(name); htk=readhtk(name); vecs=size(htk,2); endd = beg+vecs-1; % put it where it belongs x(:,beg:endd) = htk; %disp (vecs); fil=fil+1; cnt=cnt+vecs; % update beg beg = endd+1; end disp('ready');