24小时热门版块排行榜    

查看: 939  |  回复: 0

wfyuhaibo

铁虫 (初入文坛)

[求助] 提取Mfcc特征参数的时候,Mel频率滤波器组的程序也看不懂啊?求大神指教

function m = melfb(p, n, fs)
% MELFB         Determine matrix for a mel-spaced filterbank
% Inputs:       p   number of filters in filterbank   滤波器数
%               n   length of fft     FFT变换的点数
%               fs  sample rate in Hz    采样频率
% Outputs:      x   a (sparse) matrix containing the filterbank amplitudes
%                   size(x) = [p, 1+floor(n/2)]
% Usage:        For example, to compute the mel-scale spectrum of a
%               colum-vector signal s, with length n and sample rate fs:
%
%               f = fft(s);
%               m = melfb(p, n, fs);
%               n2 = 1 + floor(n/2);
%               z = m * abs(f(1:n2)).^2;
%
%               z would contain p samples of the desired mel-scale spectrum
%
%               To plot filterbanks e.g.:
%
%               plot(linspace(0, (12500/2), 129), melfb(20, 256, 12500)\'),
%               title(\'Mel-spaced filterbank\'), xlabel(\'Frequency (Hz)\');

f0 = 700 / fs;
fn2 = floor(n/2);
lr = log(1 + 0.5/f0) / (p+1);

% convert to fft bin numbers with 0 for DC term
bl = n * (f0 * (exp([0 1 p p+1] * lr) - 1));      为什么是【0,1,p,p+1】p+1?

b1 = floor(bl(1)) + 1;
b2 = ceil(bl(2));         %朝正无穷方向取整
b3 = floor(bl(3));
b4 = min(fn2, ceil(bl(4))) - 1;

pf = log(1 + (b1:b4)/n/f0) / lr;
fp = floor(pf);
pm = pf - fp;
r = [fp(b2:b4) 1+fp(1:b3)];
c = [b2:b4 1:b3] + 1;
v = 2 * [1-pm(b2:b4) pm(1:b3)];

m = sparse(r, c, v, p, 1+fn2); %由向量r,c,v 生成一个p*(1+fn2),且最多含有length(v)个元素的稀疏矩阵
最后一句是为什么啊?

[ Last edited by wfyuhaibo on 2015-6-8 at 19:51 ]
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

找到一些相关的精华帖子,希望有用哦~

科研从小木虫开始,人人为我,我为人人
相关版块跳转 我要订阅楼主 wfyuhaibo 的主题更新
信息提示
请填处理意见