【发布时间】:2012-12-04 20:53:04
【问题描述】:
我正在尝试将值转换为 Mel 过滤器,但每次输出结果时,它始终为“0”,即使它是双精度值。它应该是一个浮点数吗?这是一篇关于等式的文章:http://en.wikipedia.org/wiki/Mel_scale
这里是函数:
double MFCC::mel_filter(int val)
{
double tmp;
tmp = 2595 * log10(1 + val / 700);
cout << tmp << endl;
return tmp;
}
vector<double> MFCC::mel_frame(int size)
{
vector<double> mel_Frame;
for(int i=1; (i < size); i++)
{
this->mel_filter(i);
}
return mel_Frame;
}
在main中,我将传递诸如.. (1, 2, 3, 4, 5, 6, 7 ......)之类的值
如果输入“1”,则等式为:
m = 2595 * log10(1 + 1 / 700) = 1.6
有什么帮助或建议吗?
【问题讨论】:
-
让你的值加倍,而不是整数。即 2595.0、1.0、700.0
-
尝试
1 + val/700.0-- 如果两个操作数都是整数,/是整数除法 -
尽管您声明并返回
vector<double> mel_Frame;,但您从未真正向其中写入任何值,这毫无价值。您的函数将始终返回一个空向量。 -
@meagar 我正在测试,我会写信给它。