我想知道如何滤除具有恒定频率和电压的常规正弦波信号。
我对整个 DSP 领域真的很陌生,但想象一下我会有一个特定频率的常规正弦波(比如说 30Hz),在那个信号之上,我还有一堆其他的小峰值(我会想采样和阅读)。我会选择什么方法?
这是我的意思的可视化:

请原谅我糟糕的绘画技巧,但我将如何过滤掉那个正弦波,并保持电压的小尖峰?可能值得分享的是,尖峰之间的时间确实对我对尖峰的测量产生了影响,或者换个说法:x 单位时间内的尖峰数量确实有影响。
任何正确方向的指导都将不胜感激。
谢谢你。
我想知道如何滤除具有恒定频率和电压的常规正弦波信号。
我对整个 DSP 领域真的很陌生,但想象一下我会有一个特定频率的常规正弦波(比如说 30Hz),在那个信号之上,我还有一堆其他的小峰值(我会想采样和阅读)。我会选择什么方法?
这是我的意思的可视化:

请原谅我糟糕的绘画技巧,但我将如何过滤掉那个正弦波,并保持电压的小尖峰?可能值得分享的是,尖峰之间的时间确实对我对尖峰的测量产生了影响,或者换个说法:x 单位时间内的尖峰数量确实有影响。
任何正确方向的指导都将不胜感激。
谢谢你。
陷波滤波器通常是去除不需要的频率的好方法。但是,如果您确定不需要的正弦波的确切频率、相位和幅度,那么您也可以考虑将噪声信号添加到频率和幅度相同但与不需要的正弦波相位相差 180 度的正弦波中。
为了说明陷波滤波器示例,下图显示了尝试生成具有一些奇数脉冲(黑色)的正弦波,然后使用知道确切频率的陷波滤波器(红色)对其进行滤波。
在下面实现它的 R 代码。
# 24782
# install.packages('signal')
T <- 1024
t <- 0:(T-1)
fs <- 1000
omega <- 2*pi*30/1000
phi <- 0.9279835
x <- sin(omega*t + phi)
changed <- sample(1:T, 10)
y <- x
y[changed] <- y[changed] + 3
alpha <- 0.9
num <- c(1, -2*cos(omega), 1)
den <- c(1, -2*alpha*cos(omega), alpha*alpha)
yf <- signal::filter(num, den, y)
plot(t,y, type="l", lwd=10)
lines(t,yf, col="red", lwd=4)
legend(850, 4, c("Original", "Filtered"), lwd=c(2.5,2.5),col=c("black","red"))
您可以对原始信号进行采样,然后使用带阻滤波器滤除 30 Hz 频率分量。
Fdatool 是一个简单易用的 MATLAB 工具