Я недавно прошел тот же самый опыт на своем рабочем месте и нашел, что большинство из них знало теоретические преимущества, но должно было быть продано на преимуществах для них а именно, таким образом, здесь были точки, которые я использовал (успешно):
и большой...
См. Здесь: Как получить родительский процесс в .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, тем лучше.
Вы ищете полиномиальную интерполяцию . Идея состоит в том, что вы выбираете ряд известных точек данных вокруг точки, которую хотите интерполировать, вычисляете интерполированный полином с использованием точек данных, а затем выясняете значение полинома и точку интерполяции.
Существуют и другие методы. . Если вы понимаете математику, посмотрите на реконструкцию сигнала или в Google для "интерполяции сигнала".
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.
Честно говоря, кубический интерполяция для аудио обычно не намного лучше, чем линейная. Простым предложением для улучшения вашей линейной интерполяции было бы использование фильтра сглаживания (до или после интерполяции, в зависимости от того, укорачиваете ли вы сигнал или удлиняете его). Другой вариант (хотя и более затратный в плане вычислений) - это интерполяция sinc, которая может быть выполнена с очень высоким качеством.
Мы выпустили простой код передискретизации LGPL, который может выполнять обе эти задачи как часть WDL (см. Resample.h).