Hi everyone,
I am encountering a problem while using the fitgmdist function. In case an "error" appears, I want to pass on the for-loop to the next seed_start value, but if it is merely a "warning" and thus the code could be executed and actually fit the Gaussian, then I want to use the current seed_start value and terminate the for-loop.
Unfortunately, if Matlab encounters a warning message, then it treats it the same as an error and passes it on to the next seed_start value.
I have tried turning off warnings but I cannot solve it this way (not displayed in code below).
Is there any way I can terminate the loop in the catch statement?
Thank you!
AIC=zeros(1,5); %test for Gaussian mixture distributions from 1 to 5 components (components correspond to speakers)
gm=cell(1,5);options = statset('MaxIter',10000);for seed_start=1:101 %if a GMM doesn't succeed because of an ill-conditioned covariance
% created at a certain iteration, then use another seed value for the fitgmdist function to act on
if seed_start==1 try rng 'default' %for reproducibility
for k=1:5 gm{k}=fitgmdist(X,k,'Options',options,'CovarianceType','diagonal'); AIC(k)=gm{k}.AIC; end catch end else try rng(seed_start-1) %use other initial values
for k=1:5 gm{k}=fitgmdist(X,k,'Options',options,'CovarianceType','diagonal'); AIC(k)=gm{k}.AIC; end catch endendend
Best Answer