james551304 发表于 2009-10-29 23:10

请大家指教检测超声波信号滤波

请大家指教检测超声波信号滤波
有这样的检测超声波回波信号,其频率是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:46

如图

上面的图是原始信号,箭头指向回波信号,幅值低的信号是想要进行滤波处理的,

下面的图示我作的频谱分析,

还不知道准不准确,还需大家指点,

[ 本帖最后由 james551304 于 2009-10-30 21:48 编辑 ]

songzy41 发表于 2009-10-31 19:28

从数据来看,用自适应陷波器以获取5Mhz的信号;用低通滤波器不一定合适。因为是非稳态信号,用FFT分析也是不合适,可用STFT来观察。

james551304 发表于 2009-10-31 22:23

谢谢宋老师的及时回答,给我指明了方面, 看到了曙光,呵呵,: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处理的话会不会时间代价很高,不能满足实时要求,

小文2456 发表于 2009-11-10 20:01

顶一下,同问。
楼主做超声波检测的吗?我也是,一起学习啊

songzy41 发表于 2009-11-11 12:30

原帖由 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('回波滤波前波形','回波滤波后波形')

回波滤波前后的波形比较为下图。

lsplf 发表于 2016-1-15 13:48

小波去噪好像效果不错
页: [1]
查看完整版本: 请大家指教检测超声波信号滤波