【问题标题】:How to correctly bandpass filter in frequency with MATLAB?如何使用 MATLAB 正确地进行频率带通滤波器?
【发布时间】:2021-03-05 15:39:27
【问题描述】:

我对 matlab 和信号处理还很陌生,但我正在做一个项目,但我被卡住了。我的目标是做一个带通快速傅立叶变换 (FFT) 滤波器,其截止频率为真实信号的 0.5 Hz 和 3 Hz。我的输入信号是一个 405Hz 采样的信号,大约有 35000 个样本。我的实现如下所示:

%ZFiltered = My signal 
filtered = bandpass(fft(zFiltered), [0.5 3], sampling_frequency);
res = ifft(filtered);

subplot(2,1,1)
plot(zFiltered)

subplot(2,1,2)
plot(abs(res))

我的问题是:为什么我得到的信号也包含虚部?为什么看起来像this

【问题讨论】:

    标签: matlab signal-processing fft


    【解决方案1】:

    我不清楚你的目标;您的问题暗示了以下三种不同的方法

    1. 在您的代码尝试执行此操作时,使用带通滤波器过滤您的原始信号
    2. 使用fftifft 函数过滤原始信号
    3. 计算与filter 函数一起使用时充当带通滤波器的数字滤波器的系数

    方法一:用bandpass函数过滤

    参考bandpass documentation,您将使用原始信号并指定滤波器频带和采样频率,如下所示:

    filtered_signal = bandpass(zFiltered,[freq_low freq_high],sample_freq);
    plot(zFiltered); hold on;
    plot(filtered_signal);
    

    输入在哪里

    • zFiltered:原始(未过滤的信号)
    • freq_low=0.5 : 带通范围的最低频率(Hz)`
    • freq_high=3 : 带通范围的最高频率(Hz)
    • sample_freq=405 : 以Hz为单位的采样频率

    您使用数字快速傅里叶变换函数fft 的方法会产生复杂的结果,因为您正在查看由变换计算的实际分量(根据定义,这些分量具有实部和虚部)。您可以使用以下方法计算信号的功率:

    P = abs(res/n).^2;
    

    它为您提供傅里叶变换中表示的每个频率的信号功率(有关更多信息,请参阅fft 函数文档here)。


    方法 2:使用 fft ifft 函数进行过滤

    使用傅里叶变换和傅里叶逆变换功能对信号进行滤波。这里的步骤是使用fft 将信号带入频域。将要过滤的元素设置为零,然后应用傅里叶逆变换 (ifft) 以获得过滤后的信号。每个分量代表一个给定的离散频率,范围在 0Hz 和F_s/2 之间,对信号有贡献。将要抑制的 FFT 组件设置为 zoro 并应用 ifft 以获取滤波器信号。请参阅 fft docsifft docs 了解有关这些函数以及在频域中处理信号的一些复杂性的信息。


    方法 3:使用标准差分方程的系数进行过滤

    计算数字带通滤波器的系数。这种方法计算标准差分方程的系数(向量AB)(详见filter docs)。执行此操作的函数示例是butter,它给出了表示给定频率的巴特沃斯滤波器的系数。您还可以查看designfilt 函数以获取更多选项。

    【讨论】:

    • 谢谢您的回答,目标是您实际描述的第三种方法,我的主要问题是如何过滤fft之后的信号。当您说将元素设置为零时,您的意思是创建一个由零和一组成的向量并使用它进行过滤?
    • @alberto :我已经用更多细节编辑了这个问题。我改变了不同方法的顺序。请阅读fftifft 函数的文档。基本上,您需要获取 fft 变换 (fft_componnents) 的结果,并对要过滤掉的频率执行 fft_components(suppres_frequency_indices)=0。这有意义吗?
    猜你喜欢
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    相关资源
    最近更新 更多