Мне нужно сравнить некоторые melcpstrums (аудио коэффициенты).
Например, 11 mceps для одного аудио
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]);
,
Других решений пока нет …