如何对R中的数据点运行高通或低通过滤? [英] How do I run a high pass or low pass filter on data points in R?

查看:10
本文介绍了如何对R中的数据点运行高通或低通过滤?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是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包中使用巴特沃斯过滤建议我获得以下信息:

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/250f_high = 1/500 * 2*10 = 1/25和采样频率f_s = 500/500 = 1。然后,我为低/高通滤波器选择了介于低频和高频之间的f_c(分别为1/100和1/50)。

推荐答案

每个OP请求:

signal package包含用于信号处理的各种滤波器。大部分功能与Matlab/Octave中的信号处理功能相当/兼容。

这篇关于如何对R中的数据点运行高通或低通过滤?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆