用matlab设计一个带阻滤波器,信号有5Hz,40Hz,50Hz,要求把40Hz的滤除,程序是这样的,滤波器和产生的信

用matlab设计一个带阻滤波器,信号有5Hz,40Hz,50Hz,要求把40Hz的滤除,程序是这样的,滤波器和产生的信
w1=38/100;
w2=42/100;
[B,A]=butter(1,[w1,w2],'stop');
[h,w]=freqz(B,A);
f=w/pi*100;
figure(1),
plot(f,20*log10(abs(h)));
axis([0,80,-30,10]);
grid;
xlabel('频率/Hz')
ylabel('幅度/dB')
title('频率响应曲线')
fs=200;
t=0:1/fs:1;
x1=sin(2*pi*5*t)+sin(2*pi*50*t)+sin(2*pi*40*t);
Y1=fft(x1,128);
Y2=abs(Y1);
f=(0:64)*100/64;
figure(2),
subplot(2,1,1),plot(f,Y2(1:65)),title('原始信号');
y=filter(B,A,Y2);
subplot(2,1,2),plot(y),title('滤波后信号');
fjzyz660530 1年前 已收到1个回答 举报

9ahl3e 幼苗

共回答了16个问题采纳率:100% 举报

% 代码如下:
fs=200;
t=0:1/fs:1;
x1=sin(2*pi*5*t)+sin(2*pi*50*t);
plot(t,x1);
title('sin(2*pi*5*t)+sin(2*pi*50*t)波形图');
x2=sin(2*pi*5*t)+sin(2*pi*50*t)+sin(2*pi*40*t);
figure;
plot(t,x2);
title('sin(2*pi*5*t)+sin(2*pi*50*t)+sin(2*pi*40*t)波形图');
fx = fft(x);
fx1 = fftshift(fx);
iCenter = 101;
for i = 1 :200
if abs(i-iCenter) >38 && abs(i - iCenter)

1年前

3
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.026 s. - webmaster@yulucn.com