诗岑 2023-01-11 14:37 采纳率: 93%
浏览 28
已结题

【matlab】调用带通滤波器函数

如题,设计了一个滤波器,想过滤后进行傅里叶变换,但是参数怎么设定?看了一下这个函数是没有参数的?

function Hd = daitong
%DAITONG Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.3 and Signal Processing Toolbox 7.5.
% Generated on: 11-Jan-2023 10:52:00

% FIR Window Bandpass filter designed using the FIR1 function.

% All frequency values are in Hz.
Fs = 2000;  % Sampling Frequency

N    = 250;      % Order
Fc1  = 130;      % First Cutoff Frequency
Fc2  = 180;      % Second Cutoff Frequency
flag = 'scale';  % Sampling Flag
% Create the window vector for the design algorithm.
win = hamming(N+1);

% Calculate the coefficients using the FIR1 function.
b  = fir1(N, [Fc1 Fc2]/(Fs/2), 'bandpass', win, flag);
Hd = dfilt.dffir(b);

% [EOF]
ppgwatch=evalin('base','ppgwatch');
y=ppgwatch(:,2);
Fs=10;
T=1/Fs;
N=height(y);
t=(0:1:N-1)*T;
t=t';
y = table2array(ppgwatch(:, 2));
Y = fft(y);
Y=Y(1:N/2+1);
A=abs(Y);
f=(0:1:N/2)*Fs/N;
f=f';
plot(f,A);
set(gca,'XTick',0.0017:5);
set(gca,'YTick',0:0.5:3.5e+03);
axis([0 5 0 3.5e+03]);
xlabel=('hz');
ylabel=('幅值');
  • 写回答

1条回答 默认 最新

  • m0_54204465 2023-01-11 20:54
    关注

    这段代码实现了一个带通滤波器,设计使用了FIR1函数。滤波器的参数有采样频率 Fs, 滤波器阶次 N, 截止频率 Fc1, Fc2, 以及采样标志 flag。在这段代码中,采样频率为 2000Hz,滤波器阶次为 250,截止频率分别为 130Hz 和 180Hz,采样标志为 scale。

    在这段代码最后,使用了 fft 函数将过滤后的信号进行了傅里叶变换,并使用了 plot 函数将频谱绘制出来,并设置了 x 轴和 y 轴的刻度。

    在这段代码中,过滤操作只是在带通滤波器定义和初始化之后,并没有对信号进行过滤。如果需要进行过滤,可以将待过滤的信号与带通滤波器对象进行卷积运算。可以使用 filter 函数实现。例如,如果过滤信号是信号 y, 可以使用 y_filtered = filter(Hd, y) 来进行过滤。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月20日
  • 已采纳回答 1月12日
  • 创建了问题 1月11日

悬赏问题

  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错