在R中从fft中提取虚部的虚部

时间:2013-12-07 17:53:46

标签: r filtering

我需要过滤前向傅立叶变换的虚部。

我一直在尝试使用filter.complex(但R一直说功能filter.complex不存在)

我只使用了过滤器,并收到以下警告信息 -

imaginary parts discarded in coercion

请告诉我,如果我遗失了某些东西

这是一个例子:

    x = fft(rec-mean(rec))/sqrt(length(rec))
    y = fft(soi-mean(soi))/sqrt(length(soi))
    fyx = filter.complex(y * Conj(x), rep(1, 15), sides = 2, circular = TRUE)

2 个答案:

答案 0 :(得分:0)

我试图找到一个filter.complex函数失败了(我在搜索这些东西方面做得相当不错。)我认为它不存在。我想你可能已经掌握了一些旧的S代码,这些代码是为调度复杂类而设置的。如果我将命令修剪为:

fyx = filter(y * Conj(x), rep(1, 15), sides = 2, circular = TRUE)

....,我得到了相同的信息。它显然来自在C级调用的更深层代码,因为当您在命令行中键入“filter”时出现的R代码中不会显示该消息。使用Google搜索错误消息表明它可能来自:http://svn.r-project.org/R/trunk/src/main/coerce.c

这只是一个警告,而不一定是你做错事的证据。

答案 1 :(得分:0)

我弄清楚出了什么问题。函数'filter.complex'未在任何包中定义。 所以,我把它定义如下 -

filter.complex=function(x,...){complex(real=filter(Re(x),...), imag=filter(Im(x),...))}

这过滤了我需要的虚部。