联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp

您当前位置:首页 >> Matlab编程Matlab编程

日期:2018-08-12 06:37

function pm=multanalytFineCSPB(x,fs,f0floor,nvc,nvo,mu,mlt,imgi);


%       Dual waveleta analysis using cardinal spline manipulation

%               pm=multanalytFineCSPB(x,fs,f0floor,nvc,nvo,mu,mlt)

%       Input parameters

%              

%               x       : input signal (2kHz sampling rate is sufficient.)

%               fs      : sampling frequency (Hz)

%               f0floor : lower bound for pitch search (60Hz suggested)

%               nvc     : number of total voices for wavelet analysis

%               nvo     : number of voices in an octave

%mu: temporal stretch factor

%mlt: harmonic ID#

%imgi: display indicator, 1: dispaly on (default), 0: display off

%       Outpur parameters

%               pm      : wavelet transform using iso-metric Gabor function

%

%       If you have any questions,  mailto:kawahara@hip.atr.co.jp

%

%       Copyright (c) ATR Human Information Processing Research Labs. 1996

%       Invented and coded by Hideki Kawahara

%       30/Oct./1996

%       07/Dec./2002 waitbar was added

%10/Aug./2005 modified by Takahashi on waitbar

%10/Sept./2005 modified by Kawahara on waitbar


if nargin==7; imgi=1; end;%10/Sept./2005

t0=1/f0floor;

lmx=round(6*t0*fs*mu);

wl=2^ceil(log(lmx)/log(2));

x=x(:)';

nx=length(x);

tx=[x,zeros(1,wl)];

txx=tx;

gent=((1:wl)-wl/2)/fs;


%nvc=18;


wd=zeros(nvc,wl);

wd2=zeros(nvc,wl);

ym=zeros(nvc,nx);

pm=zeros(nvc,nx);

mpv=1;

%fs

%mu=1.0;

if imgi==1; hpg=waitbar(0,['wavelet analysis for initial F0 and P/N estimation with HM#:' num2str(mlt)]); end; % 07/Dec./2002 by H.K.%10/Aug./2005

for ii=1:nvc

 tb=gent*mpv;

 t=tb(abs(tb)<3.5*mu*t0);

 wbias=round((length(t)-1)/2);

 wd1=exp(-pi*(t/t0/mu).^2);%.*exp(i*2*pi*t/t0);

 wd2=max(0,1-abs(t/t0/mu));

 wd2=wd2(wd2>0);

 wwd=conv(wd2,wd1);

 wwd=wwd(abs(wwd)>0.00001);

 wbias=round((length(wwd)-1)/2);

 wwd=wwd.*exp(i*2*pi*mlt*t(round((1:length(wwd))-wbias+length(t)/2))/t0);

 pmtmp1=fftfilt(wwd,tx);

%  ampp=abs(pmtmp1(wbias+1:wbias+nx));

%  txx=[x./ampp,zeros(1,wl)];

%  txx=tx;

%  pmtmp1=fftfilt(wwd,txx);  

%  disp(['ii= ' num2str(ii) '  sum=' num2str(sum(abs(wwd)),6)]);

 pm(ii,:)=pmtmp1(wbias+1:wbias+nx)*sqrt(mpv);

 mpv=mpv*(2.0^(1/nvo));

 if imgi==1; waitbar(ii/nvc); end; %,hpg);% 07/Dec./2002 by H.K.%10/Aug./2005

%  keyboard;

end;

if imgi==1; close(hpg); end; % 07/Dec./2002 by H.K.%10/Aug./2005

%[nn,mm]=size(pm);

%pm=pm(:,1:mlt:mm);


版权所有:编程辅导网 2021 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp