给定一个一维的浮点或双精度向量,如何使用加速框架中的vDSP库函数计算该向量的自相关性?虽然vDSP_acor()和vDSP_acorD()函数被认为可以执行此计算,但是vDSP_Library.pdf文档(可在这里找到)并没有很好地解释如何使用函数参数。同样,vDSP_conv()和vDSP_convD()函数提到了可以在两个向量之间执行相关性和卷积的能力,但是它们没有提供足够的解释或示例代码,以便我能够成功使用它们。例如,如果使用滤波器核对二维矩阵进行卷积,则我想可能需要调用两次vDSP_convD(),并且signalStride的值不同,但是文档中省略了这一点。另一个省略的内容是滤波器中的数据必须如何打包。如果用零填充,那么零是否要先出现,后出现,或者它们需要均匀分布在非零条目的两侧?是否有滤波器长度、结果长度和输入长度的要求?
我希望您能提供一些有用的示例:使用vDSP_acor()和vDSP_conv()实现向量自身的自相关,二进制乘法是两个在频率域中作为实数据打包并进行前向FFT处理的数组,在IFT返回未归一化答案之前将用于计算自相关函数。在1D和2D数组上实现高斯核卷积。总的来说,这是一个很棒的库(可以说非常快!),但我发现这些特定的函数有点难以理解,上述示例可能会被广泛使用,因为它们在信号处理和图像分析中非常常见。
对于vDSP_Library参考文档的维护者,我的建议是:我假设“空间域”和“时间域”在整个文档中是等效的。如果不是,请确保进行区分。此外,请检查任何公式是否具有与所讨论的函数中声明的参数名称匹配的明确定义的参数。
注:这里所指的自相关性定义如下:A[T] = <(X[t]-m)(X[t-T]-m)>/v,其中A[T]是T时滞的自相关性,t是信号X的索引,m是X在所有t上的平均值,v是X在所有t上的方差,尖括号<>表示对所有间隔为T的X对进行平均。
我希望您能提供一些有用的示例:使用vDSP_acor()和vDSP_conv()实现向量自身的自相关,二进制乘法是两个在频率域中作为实数据打包并进行前向FFT处理的数组,在IFT返回未归一化答案之前将用于计算自相关函数。在1D和2D数组上实现高斯核卷积。总的来说,这是一个很棒的库(可以说非常快!),但我发现这些特定的函数有点难以理解,上述示例可能会被广泛使用,因为它们在信号处理和图像分析中非常常见。
对于vDSP_Library参考文档的维护者,我的建议是:我假设“空间域”和“时间域”在整个文档中是等效的。如果不是,请确保进行区分。此外,请检查任何公式是否具有与所讨论的函数中声明的参数名称匹配的明确定义的参数。
注:这里所指的自相关性定义如下:A[T] = <(X[t]-m)(X[t-T]-m)>/v,其中A[T]是T时滞的自相关性,t是信号X的索引,m是X在所有t上的平均值,v是X在所有t上的方差,尖括号<>表示对所有间隔为T的X对进行平均。
vDSP_acorD
的解释似乎是合理的。对于卷积,似乎默认情况下它实际上可能会执行相关操作,并且您必须指定步幅为-1并将滤波器的最后一个元素传递给函数才能实际执行卷积。但是,卷积文档中还有其他一些使其在一般情况下更难使用(例如,用于执行高斯核的卷积)的事情。 - oldmanjankvDSP_acor
例程似乎只支持1D,所以无论如何都不能帮助你。 - Paul R