Как дела bicubic (или другое нелинейное) интерполяция передискретизируемых аудиоданных?

Я недавно прошел тот же самый опыт на своем рабочем месте и нашел, что большинство из них знало теоретические преимущества, но должно было быть продано на преимуществах для них а именно, таким образом, здесь были точки, которые я использовал (успешно):

  • Они экономят время при выполнении отрицательного тестирования, где Вы обрабатываете неожиданные исходные данные (нулевые указатели, за пределы значения, и т.д.), поскольку можно сделать все они в единственном процессе.
  • Они обеспечивают непосредственную обратную связь во время компиляции относительно стандарта изменений.
  • Они полезны для тестирования внутренних представлений данных, которые не могут быть представлены во время нормального времени выполнения.

и большой...

  • Вам, возможно, не понадобилось бы поблочное тестирование, но когда кто-то еще входит и изменяет код без полного понимания, что это может поймать много глупых ошибок, которые они могли бы сделать.
16
задан MusiGenesis 24 July 2009 в 22:55
поделиться

4 ответа

См. Здесь: Как получить родительский процесс в .NET управляемым способом

По ссылке:

using System.Diagnostics;
PerformanceCounter pc = new PerformanceCounter("Process",
"Creating Process ID", Process.GetCurrentProcess().ProcessName);
return Process.GetProcessById((int)pc.NextValue());

[Изменить: также см. Часто задаваемые вопросы о System.Diagnostics для получения дополнительной информации об этом. Спасибо Джастину за ссылку.]

что относительно шумно). Существуют шлицевые формы, формы Эрмита, Ватте, параболические и т. Д. И они обсуждаются с точки зрения аудио . Это не просто обычная наивная подгонка полиномов.

И код включен!

Чтобы решить, что использовать, вы, вероятно, захотите начать с таблицы на стр. 60, в которой алгоритмы сгруппированы по сложности операторов (сколько умножений, и сколько добавляет). Затем выберите одно из лучших решений для соотношения сигнал-шум - используйте слух в качестве ориентира, чтобы сделать окончательный выбор. Примечание: как правило, чем выше SNR, тем лучше.

15
ответ дан 30 November 2019 в 21:29
поделиться

Вы ищете полиномиальную интерполяцию . Идея состоит в том, что вы выбираете ряд известных точек данных вокруг точки, которую хотите интерполировать, вычисляете интерполированный полином с использованием точек данных, а затем выясняете значение полинома и точку интерполяции.

Существуют и другие методы. . Если вы понимаете математику, посмотрите на реконструкцию сигнала или в Google для "интерполяции сигнала".

1
ответ дан 30 November 2019 в 21:29
поделиться
double InterpCubic(double x0, double x1, double x2, double x3, double t)
{
   double a0, a1, a2, a3;

   a0 = x3 - x2 - x0 + x1;
   a1 = x0 - x1 - a0;
   a2 = x2 - x0;
   a3 = x1;

   return a0*(t^3) + a1*(t^2) + a2*t + a3;
}

где x1 и x2 - это выборки, между которыми выполняется интерполяция, x0 - левый сосед x1, а x3 - правый сосед x2. t равно [0, 1], что означает позицию интерполяции между x1 и x2.

7
ответ дан 30 November 2019 в 21:29
поделиться

Честно говоря, кубический интерполяция для аудио обычно не намного лучше, чем линейная. Простым предложением для улучшения вашей линейной интерполяции было бы использование фильтра сглаживания (до или после интерполяции, в зависимости от того, укорачиваете ли вы сигнал или удлиняете его). Другой вариант (хотя и более затратный в плане вычислений) - это интерполяция sinc, которая может быть выполнена с очень высоким качеством.

Мы выпустили простой код передискретизации LGPL, который может выполнять обе эти задачи как часть WDL (см. Resample.h).

3
ответ дан 30 November 2019 в 21:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: