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