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

📄 design.m

📁 美国德克萨斯州大学电子工程系开发的一套进行语音分析的MATLAB程序. A MATLAB software tool for speech analysis.
💻 M
字号:
function [filtA,filtB,centr]= design(numch)

% Copyright (c) 1995 by Philipos C. Loizou
%

global LowFreq UpperFreq  Srate filterA filterB


%LowFreq=300;
%UpperFreq=5500;
%Srate=12000;

FS=Srate/2;
DBG=0;
if DBG==1, figure(10); end;
numch2=2*numch;

nOrd=10;
	
range=log10(UpperFreq/LowFreq);
interval=range/numch;

cen=zeros(1,numch);
up=zeros(1,numch2);
low=zeros(1,numch2);
centr=zeros(1,numch2);
k=1;
for i=1:numch  % ----- Figure out the center frequencies for all channels
	upper1(i)=LowFreq*10^(interval*i);
	lower1(i)=LowFreq*10^(interval*(i-1));
	cen(i)=0.5*(upper1(i)+lower1(i));
	low(k)=lower1(i); low(k+1)=cen(i);
	up(k)=cen(i); up(k+1)=upper1(i);
	k=k+2;
end
%-----
centr=0.5*(low+up);


if FS<up(numch2), 	 useHigh=1;
else			 useHigh=0;
end

filtA=zeros(numch2,nOrd+1); 
filtB=zeros(numch2,nOrd+1); 

if DBG==1
   subplot(2,1,1);
	for i=1:6
	 b=filterB(i,:); a=filterA(i,:);
         [h,f]=freqz(b,a,512,Srate);
	 semilogx(f,10*log10(abs(h)),'m');
	 axis([100 FS -50 5]);
	 hold on
	end
	ylabel('Amplitude (dB)');
	set(gca,'Box','off');
	subplot(2,1,2); 
	
end;

 for i=1:numch2
	W1=[low(i)/FS, up(i)/FS];
	if i==numch2
	  if useHigh==0
	     [b,a]=butter(nOrd/2,W1);
	  else
	     [b,a]=butter(nOrd,W1(1),'high');
	  end
	else
	   [b,a]=butter(nOrd/2,W1);
	end
	filtB(i,1:nOrd+1)=b;   %----->  Save the coefficients 'b'
	filtA(i,1:nOrd+1)=a;   %-----> Save the coefficients 'a'

	%if i<=numch
	 % [b2,a2]=butter(nOrd/2,[lower1(i)/FS upper1(i)/FS]);
	 % [h2,f2]=freqz(b2,a2,512,Srate);
	 % plot(f2,10*log10(abs(h2)),'r-');
	 % hold on
	%end

	if  DBG==1
	 [h,f]=freqz(b,a,512,Srate);
	 semilogx(f,10*log10(abs(h)),'m');
	 axis([100 FS -50 5]);
	 hold on
	 ylabel('Amplitude (dB)');
	 xlabel('Frequency (Hz)');
	 set(gca,'Box','off');
	end
  end



⌨️ 快捷键说明

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