请大家指教检测超声波信号滤波
请大家指教检测超声波信号滤波有这样的检测超声波回波信号,其频率是5Mhz,以80Mhz的采样率抽取数据
得到附件中的数据,时间窗口长度是40微秒。该信号如果用时域平均法可以得到很好的效果,
但由于实际应用中有些情况不能实现,所以想实现滤波器滤波。
我采用的是IIR型滤波器,
具体实现如下:
=buttord(39000000/40000000,400000/40000000,6,30);
=butter(n,Wn);
y=filter(b,a,x)
滤波后,没有多大改变,噪声的幅值压低不太明显。
刚刚入门,就要对该信号滤波,希望论坛上的各位老师能给予指导,作谱分析和建议更合适的滤波器
[ 本帖最后由 james551304 于 2009-10-30 07:56 编辑 ] 如图
上面的图是原始信号,箭头指向回波信号,幅值低的信号是想要进行滤波处理的,
下面的图示我作的频谱分析,
还不知道准不准确,还需大家指点,
[ 本帖最后由 james551304 于 2009-10-30 21:48 编辑 ] 从数据来看,用自适应陷波器以获取5Mhz的信号;用低通滤波器不一定合适。因为是非稳态信号,用FFT分析也是不合适,可用STFT来观察。 谢谢宋老师的及时回答,给我指明了方面, 看到了曙光,呵呵,:lol 我按这个思路走下去
参考网络上的程序, 使用了自适应陷波器来获取5Mhz的信号
clear all
load data.txt
Fs = 80000000;
N = 3200;
i = ';
%原始信号
x = data;
%陷波器参考信号,主要考虑超声波信号可以用余弦函数表示,故采用如下形式
u = cos(2*pi*5000000* i/Fs);
%陷波器结构
L = 20; step_size = 0.005; w = zeros(1,L);
%执行
e(L) = x(L);
for k = L : N regressor = flipud(u(k-L+ 1:k));
w = w + step_size * regressor' * e(k);
e(k+1) = x(k) - w * regressor;
end %计算初始信号和经滤波的信号
f = ';
F = abs(fft(x));
E = abs(fft(e));
%plot figure;
subplot(411) ;plot(x); title('initial signal'); subplot(412) ;
plot(e); title('initial signal after filtering');
subplot(413) ;plot(f,F( 1:length( f)));title( 'spectrum of initial signal');
subplot(414) ;plot(f,E( 1:length( f)));title( 'spectrum of initial signal after filtering');
得到如下图,但觉得既然是陷5Mhz的信号,剩下的应该是噪声,而图中的结果却是信号,
该信号与原信号相比, 噪声部分幅度很接近,但回波信号部分
幅值降低了,是滤波器只对回波信号起作用了?
想听听老师们的意见,另外stft处理的话会不会时间代价很高,不能满足实时要求, 顶一下,同问。
楼主做超声波检测的吗?我也是,一起学习啊 原帖由 james551304 于 2009-10-31 22:23 发表 http://www.chinavib.com/forum/images/common/back.gif
谢谢宋老师的及时回答,给我指明了方面, 看到了曙光,呵呵,:lol 我按这个思路走下去
参考网络上的程序, 使用了自适应陷波器来获取5Mhz的信号
clear all
load data.txt
Fs = 80000000;
N = 3200;
...
从数据来看,回波信号不是一个5MHz的单频信号,因此用自适应陷波器的结果也不甚理想。回波信号有一定的带宽,可以用带通滤波器来获得回波。这里设计了一个FIR波波器,通带是4-6MHz,程序为
ws1 = 0.05*pi; wp1 = 0.1*pi;
wp2 = 0.15*pi; ws2 = 0.2*pi;
As = 50;
deltaw= min((wp1-ws1),(ws2-wp2));
N0 = ceil(6.2*pi/deltaw);
N=N0+mod(N0+1,2);
wdbla = (hamming(N))';
wc1 = (ws1+wp1)/2; wc2 = (wp2+ws2)/2;
hd = ideal_lp(wc2,N) - ideal_lp(wc1,N);
h = hd .* wdbla;
freqz(h,1);
figure
x=load('data.txt');
fs=80000000;
N=length(x);
n=1:N;
t=(n-1)/fs;
subplot 211; plot(t,x); grid;
title('initial signal');
% 滤波
y=filtfilt(h,,x);
subplot 212; plot(t,y); grid;
title('initial signal after filtering');
figure
plot(t,x,'r',t,y,'b'); grid;
xlim();
legend('回波滤波前波形','回波滤波后波形')
回波滤波前后的波形比较为下图。 小波去噪好像效果不错
页:
[1]