【发布时间】:2011-10-29 16:13:34
【问题描述】:
我是R 的初学者,我试图找到有关以下内容的信息,但没有找到任何东西。
图中的绿色图形由红色和黄色图形组成。但是假设我只有绿色图表之类的数据点。如何使用low pass/high pass filter 提取低频/高频(即近似红色/黄色图表)?
更新:图表是用
生成的number_of_cycles = 2
max_y = 40
x = 1:500
a = number_of_cycles * 2*pi/length(x)
y = max_y * sin(x*a)
noise1 = max_y * 1/10 * sin(x*a*10)
plot(x, y, type="l", col="red", ylim=range(-1.5*max_y,1.5*max_y,5))
points(x, y + noise1, col="green", pch=20)
points(x, noise1, col="yellow", pch=20)
更新 2:使用 signal 包中的 Butterworth 过滤器建议我得到以下信息:
library(signal)
bf <- butter(2, 1/50, type="low")
b <- filter(bf, y+noise1)
points(x, b, col="black", pch=20)
bf <- butter(2, 1/25, type="high")
b <- filter(bf, y+noise1)
points(x, b, col="black", pch=20)
计算有点麻烦,signal.pdf 几乎没有提示W 应该具有什么值,但original octave documentation 至少提到了radians,这让我继续前进。我的原始图表中的值没有选择任何特定的频率,所以我最终得到了以下不那么简单的频率:f_low = 1/500 * 2 = 1/250、f_high = 1/500 * 2*10 = 1/25 和采样频率f_s = 500/500 = 1。然后我为低通/高通滤波器(分别为 1/100 和 1/50)选择了介于低频和高频之间的 f_c。
【问题讨论】:
-
如果您给我们reproducible example,例如您用于图表的数据/代码,人们将能够更轻松地为您提供帮助。这将有助于向我们展示您到目前为止所做的尝试。
-
添加:信号包包含所有类型的过滤器:cran.r-project.org/web/packages/signal/signal.pdf
-
无论如何,这都是一个过于宽泛的编程问题。您至少应该指定要使用的过滤器。有很多选项可能对您的真实数据有意义,也可能没有意义。
-
@Joris 请把你对信号的评论变成答案,我会接受的。这正是我一直在寻找的东西(尽管我发现我必须对多年前所学的过滤器进行大量的重新学习......)。
-
我认为你已经错过了傅里叶分析的整个领域。正确应用的分析应该能够提取出只有两个正弦信号的事实。
标签: r signal-processing frequency-analysis