我是R的初学者,我试图在没有找到任何东西的情况下找到有关以下内容的信息。
图中绿色图形由红色和黄色图形组成。但是假设我只有绿色图表之类的数据点。如何使用低通/高通滤波器提取低频/高频(即近似红色/黄色图表) ?
更新:图表是用
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
应该有什么值的提示,但最初的 octave 文档至少提到了让我前进的弧度。我的原始图表中的值没有选择任何特定的频率,所以我最终得到了以下不那么简单的频率: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。