我需要过滤前向傅立叶变换的虚部。
我一直在尝试使用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)
答案 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),...))}
这过滤了我需要的虚部。