【发布时间】:2015-08-29 21:42:25
【问题描述】:
我正在寻找一些想法来过滤噪声信号。 我的采样条件是:
- 频率采样率:8000 Hz
- 信号样本数:32000 字节 (约 4 秒)
我想从我的信号中提取 15.84 Hz 的频率。我的滤波器带宽一定很窄。比如 0.01 Hz 或更低。 (带通滤波器:15.83Hz 到 15.85Hz)
你的想法是什么?
我在 matlab 中写了 FIR 带通滤波器(汉宁窗)。但是有什么办法可以更好地提取准确的 15.84 Hz 吗?
这是我的 matlab 代码:
function Hd = hannigfilter
% FIR Window Bandpass filter designed using the FIR1 function.
% All frequency values are in Hz.
Fs = 8000; % Sampling Frequency
N = 4 * 4096; % Order -> for accurate filtering
Fc1 = 15.83; % First Cutoff Frequency
Fc2 = 15.85; % Second Cutoff Frequency
flag = 'scale'; % Sampling Flag
% Create the window vector for the design algorithm.
win = hann(N+1);
% Calculate the coefficients using the FIR1 function.
b = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
Hd = dfilt.dffir(b);
和:
band_passed_signal = filter(Hd.Numerator,1,mySignal);
谢谢。
【问题讨论】:
-
我投票结束这个问题,因为它是关于信号处理的,而不是关于编程的。 dsp.stackexchange.com 是正确的提问地点。
-
我觉得你太死板了。 matlab 本质上是一种技术计算语言,而不是编程语言。算法和实现之间的界限通常很模糊。
标签: matlab filter signal-processing