⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 morder.m

📁 这是一个用于语音信号处理的工具箱
💻 M
字号:
% Function for estimating the AR model order
% Author : Minkyu Lee
% Date : 20-Mar-1995
% %Modified by Karthik May 27 1997


PV=[275 100 519 240];
s2 = 'Model Order Selection';

% Open analysis window
while exist('lp_order_win_h')==1
   try1 = 'get(lp_order_win_h,''position'');';
   eval(try1,catch2);
   if check ==0
      clear lp_order_win_h;
      check = 1;
      break;
   end
   s1 = get(lp_order_win_h,'Name');
   if ~strcmp(s1,s2)
      clear lp_order_win_h;
      break;
   end
   figure(lp_order_win_h);
   break;
end;

if exist('lp_order_win_h')~=1;
	lp_order_win_h=figure('Position',PV,...
      'Resize','on',...
      'Numbertitle','off',...
		'Name',s2);
end

min_order=10;
step=1;
max_order=14;
speech1=SPEECH_OLD(round(LEFT):round(LEFT)+lp_frame_len-1);
Np=length(speech1);
Window = hamming(Np);	% Window type
epsilon=1e-15;		% A small number to test for the ill-conditioning
		         	% of the matrix  
% call Matlab function to calculate spectrogram from input signal
mode=0;		% for covariance method
fpe=zeros(1,max_order);
aic=zeros(1,max_order);
cat=zeros(1,max_order);
sig2=zeros(1,max_order);

wait_counter = min_order;

wait_window = figure('Numbertitle','off',...
   'Color',BACK_COLOR,...
   'Name','Doing Model Order Analysis..Please wait',...
   'Position',[117 248 560 150]);
pause(0.01);

wait_window_slider = uicontrol('Style','Slider',...
   'Position',[50 100 410 30],...
   'Max',max_order,...
   'Min',min_order,...
   'Value',wait_counter);

wait_window_display = uicontrol('Style','Text',...
   'Position',[50 50 410 30],...
   'Backgroundcolor','white',...
   'Foregroundcolor','blue',...
   'String','Analysing the current frame');

pause(0.01);

for k=min_order:step:max_order
	[iflag A sig2(k)] = covmcov(speech1, Np, k, mode, epsilon);
	fpe(k)=(Np+k)/(Np-k)*sig2(k);
	aic(k)=Np*log(sig2(k))+2*k;
	rho_tilda(k)=Np/(Np-k)*sig2(k);
	cat(k)=0;
	for i=1:k,
		cat(k)=cat(k)+1/rho_tilda(k);
	end	
   cat(k)=cat(k)/Np-1/rho_tilda(k);
   wait_counter = k;
   set(wait_window_slider,'Value',wait_counter);
end

set(wait_window_display,'String','Almost done...Collecting Results');
pause(0.01);
v=[min_order:step:max_order];
[Y FPE]=min(fpe(v));
[Y AIC]=min(aic(v));
[Y CAT]=min(cat(v));
FPE=(FPE-1)*step+min_order;
AIC=(AIC-1)*step+min_order;
CAT=(CAT-1)*step+min_order;
set(wait_window_display,'String','Done..Printing Results. Thanks for being Patient');
pause(0.1);
close(wait_window);
clear wait window wait_counter;
figure(lp_order_win_h);
subplot(311),plot(v,fpe(v));
title('Final prediction error (FPE)');
subplot(312),plot(v,aic(v));
title('Akaike information criterion (AIC)');
subplot(313),plot(v,cat(v));
title('Criterion autoregressive transfer function (CAT)');
xlabel('Model order');

% Set position and size of analysis window
PV=[52 265 161 62];
s2 = 'Selection of Model Order';

% Open analysis window
while exist('lp_order_con_h')==1
   try1 = 'get(lp_order_con_h,''position'');';
   eval(try1,catch2);
   if check ==0
      clear lp_order_con_h;
      check = 1;
      break;
   end
   s1 = get(lp_order_con_h,'Name');
   if ~strcmp(s1,s2)
      clear lp_order_con_h;
      break;
   end
   figure(lp_order_con_h);
   break;
end;

if exist('lp_order_con_h')~=1;
	lp_order_con_h=figure('Position',PV,...
      'Resize','on',...
      'color',BACK_COLOR,...
		'Numbertitle','off',...
		'Name',s2);
   
   lp_order_cancel_h=uicontrol('Style','pushbutton',...
      'Position',[10 20 130 30],...
      'String','Cancel',...
      'Callback','mord_ok');
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -