马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我的信号是现场信号,用matlab设计一个带通滤波器进行滤波,通带的范围是可选的,我不太清楚滤波器的性能指标,只要效果好,可以牺牲计算量等,现在的问题是滤波得到的结果总是信号开头的一段效果不好,如图所示。我试过用不同的函数如fir1,butter,cheby1等,也试过调整参数,但这个问题只是好一点,都不能彻底解决,求助高手!
程序如下:
Tdata = load('D:\work\matlab gui\s.txt');
fs = 3082;
N = 1024;
f = fs*(1:N/2)/N;
t = 1000*(0:1/fs:(N-1)/fs);
[b,a] = ellip(2,0.1,50,[90 100]*2/fs);
SFdata = filter(b,a,Tdata);
subplot(221)
plot(t,Tdata)
grid on;
title('滤波前信号时域');
subplot(2,2,2);
plot(t,SFdata);
grid on;
title('滤波后信号时域');
subplot(2,2,3);
y = abs(fft(Tdata));
plot(f,y(1:N/2));
grid on;
title('滤波前信号频谱');
subplot(2,2,4);
sy = abs(fft(SFdata));
plot(f,sy(1:N/2));
grid on;
title('滤波后信号频谱'); |