Julia中就地“rfft”和“irfft”的状态

时间:2014-09-11 01:11:07

标签: fft julia fftw

所以我正在做一些与爱好相关的事情,包括对大型真实数组进行傅里叶变换,这些数组几乎不适合内存,并且很想知道是否存在rfft和{{的就地版本保存RAM,因为RAM消耗对我很重要。 These transforms are possible despite the input-vs-output-type mismatch,并需要额外的一行填充。

Implement in-place rfft! and irfft!中,Tim Holy表示他正在研究使用包含缓冲区的irfft对象的就地rfft!irfft!,但随后史蒂文约翰逊说,他正在使用RCpair来实现一些相同的东西,他在here上详细说明了这一点。

从那时起,事情变得有点奇怪。在0.3.00.4.0的文档中,虽然列出了A_mul_B!(y, plan, x),但未提及A_mul_B!。但是当我尝试将它们输入朱莉娅时,我得到了

A_mul_B

这表明情况实际上是文档目前描述的相反

因为A_mul_B! A_mul_B! (generic function with 28 methods) A_mul_B ERROR: A_mul_B not defined 似乎存在,但未在任何地方记录,我试图猜测如何就地测试它如下:

A_mul_B!

导致

A = rand(Float32, 10, 10);
p = plan_rfft(A);
A_mul_B!(A,p,A)

因此...

  1. 现场实际FFT仍在进行中吗?或者我使用ERROR: `A_mul_B!` has no method matching A_mul_B!(::Array{Float32,2}, ::Function, ::Array{Float32,2}) 错了?

  2. 0.3.0文档和0.3.0的函数库之间是否存在不匹配?

1 个答案:

答案 0 :(得分:2)

史蒂芬约翰逊提出的请求被列为公开,未合并;这意味着工作尚未完成。我的那个是关闭的,但是如果你想要代码,你可以通过点击提交来获取它。

文档确实省略了A_mul_B!的提及。 A_mul_B相当于A*B,因此现在不会单独导出。 A_mul_B!将像这样使用:代替C = A*B,您可以说A_mul_B!(C, A, B)

您能否编辑文档来解决这些问题? (您可以在网络浏览器中编辑文件here。)