При одномерном векторе векторов с плавающей или двойной точностью, как можно рассчитать автокорреляции для этого вектора с использованием функций из библиотеки vDSP в Accelerate Framework?
Можно было бы предположить, что функции vDSP_acor () и vDSP_acorD ()выполнит этот расчет, но документация vDSP_Library.pdf (доступно здесь ) не очень хорошо объясняет, как используются аргументы функции.
Аналогично, vDSP_conv () иФункции vDSP_convD () упоминают о способности выполнять корреляции и свертки между двумя векторами, но не предоставляют достаточно объяснений или примеров кода, чтобы я мог их успешно использовать.Например, если ядро фильтра используется для свертки двухмерной матрицы, я бы предположил, что потребуются два вызова vDSP_convD () с разными значениями signalStride, но это не указано в документации.Другое упущение - как данные в фильтре должны быть упакованы.Если заполнены нулями, имеет ли значение, если нули идут первыми, последними или они должны быть равномерно распределены по обе стороны от ненулевых записей?Существуют ли требования к длине фильтра, длине результата и длине ввода?
Предложения для полезных примеров: Реализация автокорреляции вектора с самим собой с использованием как vDSP_acor (), так и vDSP_conv ().Двоичное умножение двух массивов в частотной области, которые упакованы как реальные данные, которые были перенаправлены FFT с использованием vDSP_fft2d_zrip (), которые будут использоваться при вычислении функции автокорреляции до того, как IFT вернет ненормализованный ответ.Реализация гауссовой свертки ядра на одномерном и двумерном массиве.В общем, это фантастическая библиотека (вы можете сказать БЫСТРО ?!), но я обнаружил, что эти конкретные функции немного сложны для понимания, и вышеупомянутые примеры, вероятно, будут широко использоваться, потому что они так распространены в обработке сигналов и анализе изображений.
Предложения для сопровождающих справочного документа vDSP_Library: я предполагаю, что "пространственная область" и "временная область" эквивалентны по всему документу.Если нет, пожалуйста, сделайте это различие.Также, пожалуйста, убедитесь, что любые формулы имеют четко определенные параметры, которые соответствуют объявленным именам аргументов в обсуждаемых функциях.
Сноска: здесь автокорреляция, на которую я ссылаюсь, определяется следующим образом: A [T] = <(X [t] -m) (X [tT] -m)> / v, где A [T] - автокорреляция при лаге T, t - индекс сигнала X, m - среднее значение X по всем t,v - дисперсия X по всем t, а угловые скобки <> указывают среднее значение по всем доступным парам X, которые находятся на расстоянии T.