我发现了这个自相关代码,但我根本不知道什么是“float_vec_t”,例如。这是一堂课还是什么? (我想将其翻译为动作脚本或JavaScript,我知道好)解释C++自相关代码
class LPCAnalysis{
public:
float_vec_t LPCAnalysis::autoCorrelation(const float_vec_t &x);
};
/* Calculate the (UN-normalized) autocorrelation for a frame of a
signal */
float_vec_t LPCAnalysis::autoCorrelation(const float_vec_t &x)
{
short order=x.size();
float_vec_t R(order);
float sum;
int i,j;
for (i=0;i<order;i++) {
sum=0;
for (j=0;j<order-i;j++) {
sum+=x[j]*x[j+i];
}
R[i]=sum;
}
return R;
}
下面
是我迄今取得的进展:
function LPCAnalysis (x:Array) {
var order:int = x.length
var R:Array= []
var sum:Number
var i:int
var j:int
for (i=0;i<order;i++) {
sum = 0
for (j=0;j<order-i;j++) {
sum+=x[j]*x[j+i]
}
R[i] = sum
}
return R
}
另外,我怎么能提取的最终频率阵列R? (如果R是一个数组)。我应该给这个函数的参数是什么?一个FFT结果,一个麦克风信号?
真的吗? FFT非常不准确!我试图用自相关从他们身边逃走,现在你告诉我,我将再次需要它们= /我在这里问了我如何为吉他调谐器提取频率,并且这些人告诉我使用自相关而不是FFT。如果我不得不使用FFT,他们为什么告诉我那个? – 2011-02-11 20:03:12
自相关在数学上等同于功率谱的逆FFT,因此两者之间的“精度”没有差异。 – 2011-02-11 22:19:57