有人可以帮我或给我一些提示吗?
解决方法 Apple提供了一些如何在 vDSP Programming Guide中设置FFT的示例.您还应该查看 vDSP Examples示例应用程序.对于Mac,此代码也应直接转换为iOS.我最近需要对64整数输入波形进行简单的FFT,为此我使用了以下代码:
static FFTSetupD fft_weights;static DSPDoubleSplitComplex input;static double *magnitudes;+ (voID)initialize{ /* Setup weights (twIDdle factors) */ fft_weights = vDSP_create_fftsetupD(6,kFFTradix2); /* Allocate memory to store split-complex input and output data */ input.realp = (double *)malloc(64 * sizeof(double)); input.imagp = (double *)malloc(64 * sizeof(double)); magnitudes = (double *)malloc(64 * sizeof(double));}- (CGfloat)performAcceleratedFastFourIErtransformAndReturnMaximumAmplitudeForArray:(NSUInteger *)waveformArray;{ for (NSUInteger currentinputSampleIndex = 0; currentinputSampleIndex < 64; currentinputSampleIndex++) { input.realp[currentinputSampleIndex] = (double)waveformArray[currentinputSampleIndex]; input.imagp[currentinputSampleIndex] = 0.0f; } /* 1D in-place complex FFT */ vDSP_fft_zipD(fft_weights,&input,1,6,FFT_FORWARD); input.realp[0] = 0.0; input.imagp[0] = 0.0; // Get magnitudes vDSP_zvmagsD(&input,magnitudes,64); // Extract the maximum value and its index double fftMax = 0.0; vDSP_maxmgvD(magnitudes,&fftMax,64); return sqrt(fftMax);}
如您所见,我只使用此FFT中的实数值来设置输入缓冲区,执行FFT,然后读出幅度.
总结以上是内存溢出为你收集整理的iphone – 使用Accelerate框架进行FFT时如何设置缓冲区?全部内容,希望文章能够帮你解决iphone – 使用Accelerate框架进行FFT时如何设置缓冲区?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)