我試圖值轉換成梅爾濾波器,但是,我每次輸出的結果,它始終爲「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;
}
在主,我會傳遞值如..(1,2,3,4,5,6,7 ......)
如果 「1」 被輸入,則公式爲:
m = 2595 * log10(1 + 1/700) = 1.6
任何幫助或建議?
讓你的價值觀雙打,而不是整數。即2595.0,1.0,700.0 – Bart
嘗試'1 + val/700.0' - '/'是整數除法,如果兩個操作數都是整數 – nvlass
這是值得的,雖然你聲明並返回'矢量 mel_Frame;',你永遠不會實際寫任何值進入它。您的功能將始終返回一個空矢量。 –
meagar