www.pudn.com > asr.rar > HMMTRAIN.M, change:2004-11-06,size:2374b


%%%%%%%%%%%%%%%%%% 
%%  hmmtrain.m  %% 
%%%%%%%%%%%%%%%%%% 
 
%% Determine if file type is matched%% 
if( (Files==[]) | ... 
   (findstr(lower(CrntFile),'.vqc')==[]) ) 
  msg=str2mat('Error Message: ',... 
              '  ',... 
              'Selected files are',... 
              'not in vqc format'); 
             
  set(cmthndl,'string',msg); 
  return; 
end 
 
%% Clear Plot Area %% 
set(FigNumber,'CurrentAxes',fig21); 
cla; 
set(fig21,'visible','off'); 
set(FigNumber,'CurrentAxes',fig22); 
cla; 
set(fig22,'visible','off'); 
set(FigNumber,'CurrentAxes',fig); 
cla 
set(fig,'visible','off'); 
 
%% Show message %% 
msg=str2mat('Input Parameters:        ', ... 
            ' <state# >  <LRflag   >', ... 
            ' <symbol#>  <not used >',... 
            '* LRflag: 1 left-right model',... 
            '          0 ergodic model'); 
set(cmthndl,'string',msg); 
crntmsg=msg; 
 
%% Set parameters %% 
N = str2num(ip1); 
if(N ==0 | N ==[]) 
  N = 5; 
  set(ip1hndl,'string',num2str(5)); 
end 
M = str2num(ip2); 
if(M ==0 | M ==[]) 
  M = 64; 
  set(ip2hndl,'string',num2str(64)); 
end 
LRflag = str2num(ip3); 
if(~(LRflag == 1 | LRflag==0)|... 
  LRflag ==[]) 
  LRflag = 1; 
  set(ip3hndl,'string',num2str(1)); 
end 
set(ip4hndl,'String','xxxx'); 
 
%% Read in training patterns 
trn_seq = []; 
no_file=size(Files,1); 
for i=1:no_file 
   filename=[Pathname Files(i,:)]; 
   filename=deblank(filename); 
   CrntFile=filename; 
   eval(['load ' filename ';']); 
   dot_pos=find(Files(i,:) == '.'); 
   var_name = Files(i,1:dot_pos-1); 
   eval(['len=length(' var_name ');']); 
   eval(['trn_seq(1:len,i)= ' var_name ';' ]); 
end 
 
%% HMM Training and plot learning curve %% 
 
[a,b,pai,lrn]=hmmtrn(trn_seq,N,M,LRflag); 
set(FigNumber,'CurrentAxes',fig); 
title('Learning Curve'); 
plot(lrn,'*'); 
pause(3); 
cla; 
set(gca,'Box','off'); 
set(gca,'visible','off'); 
 
%% Plot  distributions %% 
set(FigNumber,'CurrentAxes',fig21); 
set(gca,'visible','on'); 
plot(a'); 
title('Distribution A'); 
set(FigNumber,'CurrentAxes',fig22); 
set(gca,'visible','on'); 
plot(b); 
title('Distribution B'); 
 
%% Save result if Saveflag = 1 %% 
if(Saveflag==1) 
  [outfile,outpath]=uiputfile('*.*',... 
       'Save HMM model To A File (in mat format)'); 
  if(outfile ~= 0) 
     outfilename=[outpath outfile]; 
     eval(['save ' outfilename ' N M a b pai;']); 
  end 
end