Мне нужно сравнить некоторые melcpstrums (аудио коэффициенты).
Например, 11 мэпсов для одного аудио
mcepsA[0]=4.93723823
mcepsA[1]=2.3972343
mcepsA[2]=1.2305712
и т.п.
Теперь мне нужно сравнить их с 11 различными mceps, например с
mcepsB[0]=3.9902323
mcepsB[1]=1.988323
mcepsB[2]=9.93723
и т.п.
Я вычисляю звуковую разницу следующим образом:
double diff=0;
for (unsigned int i=0;i<11;i++)
{
if (mcepsA[i] > mcepsB[i])
{
diff+=mcepsA[i]-mcepsB[i];
}
else
{
diff+=mcepsB[i]-mcepsA[i];
}
}
Однако сохранение всех значений mcep для меня действительно проблематично. К сожалению, я не математик. Есть ли здесь кто-то, кто распознает эту проблему и, возможно, знает решение для меня, где я могу, возможно, хранить все mcepsA в одном значении вместо 11 из них?
Спасибо вам за помощь.
Ваши значения 11 кепстуров выводятся из сотен, если не тысяч звуковых образцов. Вы действительно, действительно должны проверить, где происходят ваши проблемы с производительностью; это маловероятно, что эти несколько строк являются проблемой.
Тем не менее, используйте diff += abs(mcepsA[i]-mcepsB[i]);
,