Matlab 输出参数“;GC&x201D;调用“时未分配;C:\ibm\u gc\ammaChirp.m

Matlab 输出参数“;GC&x201D;调用“时未分配;C:\ibm\u gc\ammaChirp.m,matlab,Matlab,我在ibm\U gc中调用函数GammaChirp。当我运行代码时,我得到错误:???在调用“C:\Users\Deepak\Documents\MATLAB\ibm\U gc\GCFBv210pack\GammaChirp.m期间,未分配输出参数“gc”(可能还有其他参数) ??类型为“double”的输入参数的未定义函数或方法“GC” =>ibm_gc在13处出错 ibm_gc.m的代码如下: function sig = ibm_gc(target,masker,snr,lc,frs) %

我在ibm\U gc中调用函数GammaChirp。当我运行代码时,我得到错误:???在调用“C:\Users\Deepak\Documents\MATLAB\ibm\U gc\GCFBv210pack\GammaChirp.m期间,未分配输出参数“gc”(可能还有其他参数) ??类型为“double”的输入参数的未定义函数或方法“GC” =>ibm_gc在13处出错 ibm_gc.m的代码如下:

function sig = ibm_gc(target,masker,snr,lc,frs)
% Produce an IBM (ideal binary mask) processed mixture.
% The first variable is required.
% When the second variable is not provided the function returns an all-one
% masked signal.
% snr: input SNR in dB.
% lc: local SNR criterion in dB.
% fRange: frequency range.
% Written by DeLiang Wang at Oticon in Feb'07
target=wavread('C:\Users\Deepak\Documents\MATLAB\17_8_16\clean.wav');
%masker=wavread('C:\Users\Deepak\Documents\MATLAB\17_8_16\babble.wav');
if nargin < 2
    [numChan,numFrame] = size(cochleagram(GammaChirp(target)));
    sig = synthesis(target,ones(numChan,numFrame));  % equivalent to an all-one mask
    return
end 
if nargin < 3
    snr = 0;      % default input SNR is 0 dB
end
if nargin < 4
    lc = 0;       % default lc is 0 dB
end
if nargin < 5
    frs = [80, 5000]; % default frequency range in Hz
end

numChan = 128;      % default is 128 channels
lt = length(target); lm = length(masker);
if (lt >= lm)       % equalize the lengths of the two files
    target = target(1:lm);
else
    masker = masker(1:lt);
end

change = 20*log10(std(target)/std(masker)) - snr;
masker = masker*10^(change/20);     % scale masker to specified input SNR
gt = GammaChirp(target,numChan,frs);
gm = GammaChirp(masker,numChan,frs);

ct = cochleagram(gt);     
cm = cochleagram(gm);

[numChan,numFrame] = size(ct);     % number of channels and time frames

if isinf(-lc)
    mask = ones(numChan,numFrame);  % give an all-one mask with lc = -inf
else
    for c = 1:numChan
        for m = 1:numFrame
            mask(c,m) = ct(c,m) >= cm(c,m)*10^(lc/10);     % this way to avoid division by zero
        end
    end
end    
dlmwrite('mask.out',mask);
mixture = target+masker;
sig = synthesisFast(mixture,mask,frs);
%
%   Gammachirp : Theoretical auditory filter 
%   Toshio IRINO
%   7 Apr. 97 (additional comments)
%   20 Aug. 97 (Simplify & Carrier Selection)
%   10 Jun. 98 (SwNorm)
%   26 Nov. 98 (phase = phase + c ln fr/f0)
%   7  Jan. 2002 (adding 'envelope' option)
%   22  Nov. 2002 (debugging 'peak' option)
%
%   gc(t) = t^(n-1) exp(-2 pi b ERB(Frs)) cos(2*pi*Frs*t + c ln t + phase)
%
%   function [GC, LenGC, Fps, InstFreq ] ...
%          = GammaChirp(Frs,SR,OrderG,CoefERBw,CoefC,Phase,SwCarr,SwNorm);
%   INPUT : Frs : Asymptotic Frequency ( vector )
%       SR  : Sampling Frequency
%       OrderG  : Order of Gamma function t^(OrderG-1)        == n   
%       CoefERBw: Coeficient -> exp(-2*pi*CoefERBw*ERB(f))    == b
%       CoefC   : Coeficient -> exp(j*2*pi*Frs + CoefC*ln(t)) == c
%       Phase   : Start Phase(0 ~ 2*pi)                       
%       SwCarr  : Carrier ('cos','sin','complex','envelope': 3 letters)
%       SwNorm  : Normalization of peak spectrum level ('no', 'peak')
%   OUTPUT: GC  : GammaChirp                     ( matrix )
%       LenGC   : Length of GC for each channel  ( vector )
%               Fps     : Peak Frequency                 ( vector )
%       InstFreq: Instanteneous Frequency        ( matrix )
%
%   
function [GC, LenGC, Fps, InstFreq ] ...
    = GammaChirp(Frs,SR,OrderG,CoefERBw,CoefC,Phase,SwCarr,SwNorm);

if nargin < 2,            help GammaChirp; return; end;
Frs = Frs(:);
NumCh = length(Frs);
if nargin < 3,            OrderG = [];                 end;
if length(OrderG) == 0,   OrderG = 4;                  end; % Default GammaTone
if length(OrderG) == 1,   OrderG = OrderG*ones(NumCh,1); end;
if nargin < 4,            CoefERBw = [];           end; 
if length(CoefERBw) == 0, CoefERBw = 1.019;            end; % Default GammaTone
if length(CoefERBw) == 1, CoefERBw = CoefERBw*ones(NumCh,1); end; 
if nargin < 5,            CoefC  = [];                 end;
if length(CoefC) == 0,    CoefC  = 0;                  end; % Default GammaTone
if length(CoefC) == 1,    CoefC  = CoefC*ones(NumCh,1); end; 
if nargin < 6,            Phase  = [];                  end;
if length(Phase) == 0,    Phase  = 0;                  end; 
if length(Phase) == 1,    Phase  = Phase*ones(NumCh,1); end; 
if nargin < 7,            SwCarr = [];                 end;
if length(SwCarr) == 0,   SwCarr = 'cos';          end;
if nargin < 8,            SwNorm = [];                 end;
if length(SwNorm) == 0,   SwNorm = 'no';           end;


[ERBrate ERBw] = Freq2ERB(Frs);                             % G&M (1990)
LenGC1kHz = (40*max(OrderG)/max(CoefERBw) + 200)*SR/16000;  % 2 Aug 96 
[dummy ERBw1kHz] = Freq2ERB(1000);  

if strcmp(SwCarr,'sin'), Phase = Phase - pi/2*ones(1,NumCh); end;
%%% Phase compensation
Phase = Phase + CoefC.*log(Frs/1000); % relative phase to 1kHz

LenGC = fix(LenGC1kHz*ERBw1kHz./ERBw);

%%%%%  Production of GammaChirp  %%%%%
GC       = zeros(NumCh,max(LenGC));
if nargout > 2, Fps = Fr2Fpeak(OrderG,CoefERBw,CoefC,Frs); end; % Peak Freq.
if nargout > 3, InstFreq = zeros(NumCh,max(LenGC));        end;


for nch = 1:NumCh,
  t = (1:LenGC(nch)-1)/SR;

  GammaEnv = t.^(OrderG(nch)-1).*exp(-2*pi*CoefERBw(nch)*ERBw(nch)*t);
  GammaEnv = [ 0 GammaEnv/max(GammaEnv)];

  if strcmp(SwCarr(1:3),'env') % envelope
    Carrier = ones(size(GammaEnv));
  elseif strcmp(SwCarr(1:3),'com') % complex
    Carrier = [ 0 exp(i * (2*pi*Frs(nch)*t + CoefC(nch)*log(t) +Phase(nch)) )];
  else
    Carrier = [ 0 cos(2*pi*Frs(nch)*t + CoefC(nch)*log(t) +Phase(nch))];
  end;

  GC(nch,1:LenGC(nch)) = GammaEnv.*Carrier;

  if nargout > 3, 
    InstFreq(nch,1:LenGC(nch)) = [0, [Frs(nch) + CoefC(nch)./(2*pi*t)]];
  end;

  if strcmp(SwNorm,'peak') == 1,  % peak gain normalization
     [frsp freq] = freqz(GC(nch,1:LenGC(nch)),1,LenGC(nch),SR);
     fp = Fr2Fpeak(OrderG(nch),CoefERBw(nch),CoefC(nch),Frs(nch));
     [dummy np] = min(abs(freq-fp)); 
     GC(nch,:) = GC(nch,:)/abs(frsp(np));
  end;

end; % nch = ...

return

%% ERBw = 0.128*Frs;     % Complete Constant Q only for check.

% old 
% Amp = ones(NumCh,1);                                  % No normalization
% if strcmp(SwNorm,'peak'),  Amp = ERBw./ERBw1kHz; end; % Peak spectrum==const. 
% when it is gammatone
%  if strcmp(SwNorm,'peak'),   ...
%         Amp = 2.815*sqrt(4/OrderG).*CoefERBw.*ERBw/SR; end;
% Peak spectrum==const. The gain is 1.0 when filtering sinusoid at cf.
% GC(nch,:) = GC(nch,:)/max(abs(freqz(GC(nch,:),1,LenGC(nch))));
%
函数sig=ibm\U gc(目标、遮罩、信噪比、lc、frs) %生产IBM(理想二进制掩码)处理过的混合物。 %第一个变量是必需的。 %当未提供第二个变量时,函数返回一个all one %屏蔽信号。 %snr:输入snr,单位为dB。 %lc:以dB为单位的局部SNR标准。 %频率范围。 %王德良于2007年2月在奥的康撰写 target=wavread('C:\Users\Deepak\Documents\MATLAB\17_8_16\clean.wav'); %masker=wavread('C:\Users\Deepak\Documents\MATLAB\17_8_16\babble.wav'); 如果nargin<2 [numChan,numFrame]=大小(耳蜗图(GammaChirp(target)); sig=合成(目标,一个(numChan,numFrame));%相当于一个全一掩码 返回 结束 如果nargin<3 snr=0;%默认输入snr为0 dB 结束 如果nargin<4 lc=0;%默认lc为0 dB 结束 如果nargin<5 frs=[805000];%默认频率范围(以Hz为单位) 结束 numChan=128;%默认值为128个通道 lt=长度(目标);lm=长度(遮罩); 如果(lt>=lm)%使两个文件的长度相等 目标=目标(1:lm); 其他的 遮罩=遮罩(1:lt); 结束 变更=20*log10(标准(目标)/标准(遮罩))-信噪比; 遮罩=遮罩*10^(更改/20);%将遮罩缩放到指定的输入信噪比 gt=GammaChirp(目标、numChan、frs); gm=GammaChirp(蒙面人、纽姆坎人、frs); ct=耳蜗图(gt); cm=耳蜗图(gm); [numChan,numFrame]=大小(ct);%通道数和时间帧 如果isinf(-lc) mask=one(numChan,numFrame);%使用lc=-inf给出一个全一掩码 其他的 对于c=1:numChan 对于m=1:numFrame 掩模(c,m)=ct(c,m)>=cm(c,m)*10^(lc/10);%这样可以避免被零除 结束 结束 结束 dlmwrite('mask.out',mask); 混合物=目标+遮罩; sig=合成速度(混合物、掩模、frs); GammaChirp.m的代码如下:

function sig = ibm_gc(target,masker,snr,lc,frs)
% Produce an IBM (ideal binary mask) processed mixture.
% The first variable is required.
% When the second variable is not provided the function returns an all-one
% masked signal.
% snr: input SNR in dB.
% lc: local SNR criterion in dB.
% fRange: frequency range.
% Written by DeLiang Wang at Oticon in Feb'07
target=wavread('C:\Users\Deepak\Documents\MATLAB\17_8_16\clean.wav');
%masker=wavread('C:\Users\Deepak\Documents\MATLAB\17_8_16\babble.wav');
if nargin < 2
    [numChan,numFrame] = size(cochleagram(GammaChirp(target)));
    sig = synthesis(target,ones(numChan,numFrame));  % equivalent to an all-one mask
    return
end 
if nargin < 3
    snr = 0;      % default input SNR is 0 dB
end
if nargin < 4
    lc = 0;       % default lc is 0 dB
end
if nargin < 5
    frs = [80, 5000]; % default frequency range in Hz
end

numChan = 128;      % default is 128 channels
lt = length(target); lm = length(masker);
if (lt >= lm)       % equalize the lengths of the two files
    target = target(1:lm);
else
    masker = masker(1:lt);
end

change = 20*log10(std(target)/std(masker)) - snr;
masker = masker*10^(change/20);     % scale masker to specified input SNR
gt = GammaChirp(target,numChan,frs);
gm = GammaChirp(masker,numChan,frs);

ct = cochleagram(gt);     
cm = cochleagram(gm);

[numChan,numFrame] = size(ct);     % number of channels and time frames

if isinf(-lc)
    mask = ones(numChan,numFrame);  % give an all-one mask with lc = -inf
else
    for c = 1:numChan
        for m = 1:numFrame
            mask(c,m) = ct(c,m) >= cm(c,m)*10^(lc/10);     % this way to avoid division by zero
        end
    end
end    
dlmwrite('mask.out',mask);
mixture = target+masker;
sig = synthesisFast(mixture,mask,frs);
%
%   Gammachirp : Theoretical auditory filter 
%   Toshio IRINO
%   7 Apr. 97 (additional comments)
%   20 Aug. 97 (Simplify & Carrier Selection)
%   10 Jun. 98 (SwNorm)
%   26 Nov. 98 (phase = phase + c ln fr/f0)
%   7  Jan. 2002 (adding 'envelope' option)
%   22  Nov. 2002 (debugging 'peak' option)
%
%   gc(t) = t^(n-1) exp(-2 pi b ERB(Frs)) cos(2*pi*Frs*t + c ln t + phase)
%
%   function [GC, LenGC, Fps, InstFreq ] ...
%          = GammaChirp(Frs,SR,OrderG,CoefERBw,CoefC,Phase,SwCarr,SwNorm);
%   INPUT : Frs : Asymptotic Frequency ( vector )
%       SR  : Sampling Frequency
%       OrderG  : Order of Gamma function t^(OrderG-1)        == n   
%       CoefERBw: Coeficient -> exp(-2*pi*CoefERBw*ERB(f))    == b
%       CoefC   : Coeficient -> exp(j*2*pi*Frs + CoefC*ln(t)) == c
%       Phase   : Start Phase(0 ~ 2*pi)                       
%       SwCarr  : Carrier ('cos','sin','complex','envelope': 3 letters)
%       SwNorm  : Normalization of peak spectrum level ('no', 'peak')
%   OUTPUT: GC  : GammaChirp                     ( matrix )
%       LenGC   : Length of GC for each channel  ( vector )
%               Fps     : Peak Frequency                 ( vector )
%       InstFreq: Instanteneous Frequency        ( matrix )
%
%   
function [GC, LenGC, Fps, InstFreq ] ...
    = GammaChirp(Frs,SR,OrderG,CoefERBw,CoefC,Phase,SwCarr,SwNorm);

if nargin < 2,            help GammaChirp; return; end;
Frs = Frs(:);
NumCh = length(Frs);
if nargin < 3,            OrderG = [];                 end;
if length(OrderG) == 0,   OrderG = 4;                  end; % Default GammaTone
if length(OrderG) == 1,   OrderG = OrderG*ones(NumCh,1); end;
if nargin < 4,            CoefERBw = [];           end; 
if length(CoefERBw) == 0, CoefERBw = 1.019;            end; % Default GammaTone
if length(CoefERBw) == 1, CoefERBw = CoefERBw*ones(NumCh,1); end; 
if nargin < 5,            CoefC  = [];                 end;
if length(CoefC) == 0,    CoefC  = 0;                  end; % Default GammaTone
if length(CoefC) == 1,    CoefC  = CoefC*ones(NumCh,1); end; 
if nargin < 6,            Phase  = [];                  end;
if length(Phase) == 0,    Phase  = 0;                  end; 
if length(Phase) == 1,    Phase  = Phase*ones(NumCh,1); end; 
if nargin < 7,            SwCarr = [];                 end;
if length(SwCarr) == 0,   SwCarr = 'cos';          end;
if nargin < 8,            SwNorm = [];                 end;
if length(SwNorm) == 0,   SwNorm = 'no';           end;


[ERBrate ERBw] = Freq2ERB(Frs);                             % G&M (1990)
LenGC1kHz = (40*max(OrderG)/max(CoefERBw) + 200)*SR/16000;  % 2 Aug 96 
[dummy ERBw1kHz] = Freq2ERB(1000);  

if strcmp(SwCarr,'sin'), Phase = Phase - pi/2*ones(1,NumCh); end;
%%% Phase compensation
Phase = Phase + CoefC.*log(Frs/1000); % relative phase to 1kHz

LenGC = fix(LenGC1kHz*ERBw1kHz./ERBw);

%%%%%  Production of GammaChirp  %%%%%
GC       = zeros(NumCh,max(LenGC));
if nargout > 2, Fps = Fr2Fpeak(OrderG,CoefERBw,CoefC,Frs); end; % Peak Freq.
if nargout > 3, InstFreq = zeros(NumCh,max(LenGC));        end;


for nch = 1:NumCh,
  t = (1:LenGC(nch)-1)/SR;

  GammaEnv = t.^(OrderG(nch)-1).*exp(-2*pi*CoefERBw(nch)*ERBw(nch)*t);
  GammaEnv = [ 0 GammaEnv/max(GammaEnv)];

  if strcmp(SwCarr(1:3),'env') % envelope
    Carrier = ones(size(GammaEnv));
  elseif strcmp(SwCarr(1:3),'com') % complex
    Carrier = [ 0 exp(i * (2*pi*Frs(nch)*t + CoefC(nch)*log(t) +Phase(nch)) )];
  else
    Carrier = [ 0 cos(2*pi*Frs(nch)*t + CoefC(nch)*log(t) +Phase(nch))];
  end;

  GC(nch,1:LenGC(nch)) = GammaEnv.*Carrier;

  if nargout > 3, 
    InstFreq(nch,1:LenGC(nch)) = [0, [Frs(nch) + CoefC(nch)./(2*pi*t)]];
  end;

  if strcmp(SwNorm,'peak') == 1,  % peak gain normalization
     [frsp freq] = freqz(GC(nch,1:LenGC(nch)),1,LenGC(nch),SR);
     fp = Fr2Fpeak(OrderG(nch),CoefERBw(nch),CoefC(nch),Frs(nch));
     [dummy np] = min(abs(freq-fp)); 
     GC(nch,:) = GC(nch,:)/abs(frsp(np));
  end;

end; % nch = ...

return

%% ERBw = 0.128*Frs;     % Complete Constant Q only for check.

% old 
% Amp = ones(NumCh,1);                                  % No normalization
% if strcmp(SwNorm,'peak'),  Amp = ERBw./ERBw1kHz; end; % Peak spectrum==const. 
% when it is gammatone
%  if strcmp(SwNorm,'peak'),   ...
%         Amp = 2.815*sqrt(4/OrderG).*CoefERBw.*ERBw/SR; end;
% Peak spectrum==const. The gain is 1.0 when filtering sinusoid at cf.
% GC(nch,:) = GC(nch,:)/max(abs(freqz(GC(nch,:),1,LenGC(nch))));
%
%
%Gammachirp:理论听觉滤波器
%伊里诺俊男
%1997年4月7日(补充意见)
%1997年8月20日(简化和承运人选择)
%1998年6月10日(SwNorm)
%1998年11月26日(相位=相位+c ln fr/f0)
%2002年1月7日(添加“信封”选项)
%2002年11月22日(调试“峰值”选项)
%
%gc(t)=t^(n-1)exp(-2πb ERB(Frs))cos(2*pi*Frs*t+c lnt+phase)
%
%函数[GC、LenGC、Fps、INSTREFQ]。。。
%=GammaChirp(Frs、SR、OrderG、CoefERBw、CoefC、Phase、SwCarr、SwNorm);
%输入:Frs:渐近频率(矢量)
%SR:采样频率
%OrderG:Gamma函数的阶数t^(OrderG-1)=n
%系数bw:Coeficient->exp(-2*pi*CoefERBw*ERB(f))==b
%CoefC:Coeficient->exp(j*2*pi*Frs+CoefC*ln(t))=c
%阶段:启动阶段(0~2*pi)
%SwCarr:承运人('cos'、'sin'、'complex'、'envelope':3封信)
%SwNorm:峰值频谱电平的标准化(“否”、“峰值”)
%输出:GC:GammaChirp(矩阵)
%LenGC:每个通道的GC长度(矢量)
%Fps:峰值频率(矢量)
%INSTREFQ:瞬时频率(矩阵)
%
%   
函数[GC、LenGC、Fps、INSTREFQ]。。。
=GammaChirp(Frs、SR、OrderG、CoefERBw、CoefC、Phase、SwCarr、SwNorm);
如果nargin<2,则帮助GammaChirp;返回;结束;
Frs=Frs(:);
NumCh=长度(Frs);
如果nargin<3,则OrderG=[];结束;
如果长度(OrderG)=0,OrderG=4;结束;%默认GammaTone
如果长度(OrderG)==1,OrderG=OrderG*ones(NumCh,1);结束;
如果nargin<4,则CoefERBw=[];结束;
如果长度(CoefERBw)==0,则CoefERBw=1.019;结束;%默认GammaTone
如果长度(CoefERBw)==1,则CoefERBw=CoefERBw*个(NumCh,1);结束;
如果nargin<5,则CoefC=[];结束;
如果长度(CoefC)==0,则CoefC=0;结束;%默认GammaTone
如果长度(CoefC)==1,则CoefC=CoefC*个(NumCh,1);结束;
如果nargin<6,则相位=[];结束;
如果长度(相位)==0,相位=0;结束;
如果长度(相位)==1,相位=相位*个(NumCh,1);结束;
如果nargin<7,则SwCarr=[];结束;
如果长度(SwCarr)=0,则SwCarr='cos';结束;
如果nargin<8,则SwNorm=[];结束;
如果长度(SwNorm)=0,则SwNorm='否';结束;
[ERBrate ERBw]=频率2ERB(Frs);%G&M(1990)
LenGC1kHz=(40*最大(订单)/最大(CoefERBw)+200)*SR/16000;%1996年8月2日
[虚拟ERBw1kHz]=频率2ERB(1000);
如果strcmp(SwCarr,'sin'),相位=相位-pi/2*one(1,NumCh);结束;
%%%相位补偿
相位=相位+CoefC.*对数(Frs/1000);%相对于1kHz的相位
LenGC=固定(LenGC1kHz*ERBw1kHz./ERBw);
%%%%%GammaChirp产量(%)
GC=零(NumCh,max(LenGC));
如果nargout>2,Fps=Fr2Fpeak(OrderG、CoefERBw、CoefC、Frs);结束;%峰值频率。
如果nargout>3,INSTREFQ=0(NumCh,max(LenGC));结束;
对于nch=1:NumCh,
t=(1:LenGC(nch)-1)/SR;
GammaEnv=t.^(顺序g(nch)-1.*exp(-2*pi*CoefERBw(nch)*ERBw(nch)*t);
GammaEnv=[0 GammaEnv/max(GammaEnv)];
如果strcmp(SwCarr(1:3),“环境”)%信封
载体=个(尺寸(GammaEnv));
其他strcmp(SWCAR(1:3),'com')%复合物
载波=[0 exp(i*(2*pi*Frs(nch)*t+CoefC(nch)*log(t)+相位(nch))];
其他的
载波=[0 cos(2*pi*Frs(nch)*t+CoefC(nch)*log(t)+相位(nch))];
结束;
GC(nch,1:LenGC(nch))=GammaEnv.*承运人;
如果nargout>3,
instreq(nch,1:LenGC(nch))=[0[Frs(nch)+CoefC(nch)。/(2*pi*t)];
结束;
如果strcmp(SwNorm,'peak')==1,则峰值增益正常