如题,设计了一个滤波器,想过滤后进行傅里叶变换,但是参数怎么设定?看了一下这个函数是没有参数的?
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=('幅值');
这段代码实现了一个带通滤波器,设计使用了FIR1函数。滤波器的参数有采样频率 Fs, 滤波器阶次 N, 截止频率 Fc1, Fc2, 以及采样标志 flag。在这段代码中,采样频率为 2000Hz,滤波器阶次为 250,截止频率分别为 130Hz 和 180Hz,采样标志为 scale。
在这段代码最后,使用了 fft 函数将过滤后的信号进行了傅里叶变换,并使用了 plot 函数将频谱绘制出来,并设置了 x 轴和 y 轴的刻度。
在这段代码中,过滤操作只是在带通滤波器定义和初始化之后,并没有对信号进行过滤。如果需要进行过滤,可以将待过滤的信号与带通滤波器对象进行卷积运算。可以使用 filter 函数实现。例如,如果过滤信号是信号 y, 可以使用 y_filtered = filter(Hd, y) 来进行过滤。