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

【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 基于ucc28019的pfc电路中芯片一直不工作
  • ¥15 yolov8在3588板子端c++推理报错
  • ¥50 unitywebrequest分段下载导致报错,如何解决?
  • ¥15 错误使用 gretna_GUI_PreprocessInterface>RunBtn_Callback
  • ¥15 WPF如何用Chart绘画出Y轴的左边数据
  • ¥15 pycharm无法查看内置代码
  • ¥15 跑hls xfopencv的例程standalone_hls_axi_example出的错误,csim没问题,c synthesis出的错误
  • ¥15 sqlserver update语句逐行生效
  • ¥20 Windows10系统命令行调用
  • ¥15 php环境如何实现国密SM2相关功能