fir.m

来自「一个简单的FIR滤波器实现编程」· M 代码 · 共 50 行

M
50
字号
fs=50;
fp=30;
Fs=200;
M=512;
rf=(fs-fp)/Fs;
N=3.3/rf;
if mod(N,2)==0 
   NN=N;
else
   NN=N-1;
end
wp=2*pi*fp/Fs;
wc=wp;
for n=1:N
   hd(n)=(sin((n-M/2)*wc))/(pi*(n-M/2));
end
figure(2);
subplot(221);
plot(hd);
title('移位后的理想滤波器图');
for n=1:N
  hn(n)=(sin((n-NN/2)*wc))/(pi*(n-NN/2))*(0.54-0.46*cos((2*pi*n)/(N-1)));
end
subplot(222);
plot(hn);
title('加汉明窗后的滤波器图');

%对心电信号进行滤波
load BBB.txt
subplot(223);
plot(BBB);
title('原心电信号图');
for n=1:M
   sm=0;
  for i=1:M
    if (n-i)<=0||(n-i)>=N hn=0;
    else
        hn=(sin(((n-i)-NN/2)*wc))/(pi*((n-i)-NN/2))*(0.54-0.46*cos((2*pi*(n-i))/(N-1)));
    end
    sm=BBB(i)*hn+sm;
  end
  y(n)=sm;
end
subplot(224);
plot(y);
title('滤波后的心电图');

 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?