24小时热门版块排行榜    

查看: 279  |  回复: 0

lmszz

铁虫 (初入文坛)

[求助] 程序求助

帮忙看看matlab程序两列随机数据经过互相关计算,为什么不能画出正确的互相关图并得到正确的延迟点数?新虫存粮是12个金币,不好意思,谢谢!
clear all;
Fs=1468;        %采样频率间序列
T=1/Fs;         %采样周期
W=20479;        %信号长度(20479)
t=(0:W-1)*T;    %时
A=xlsread('E:\0.xls','sheet1','A1:B2000');  %以矩阵形式读进数据
L=10;           %电极间距(可变)
x=1:1:2000;
N=2000;         %采样信号长度
y1=A(:,1);
y2=A(:,2);
figure(1);
subplot(3,1,1),
plot(x,y1);   %第一组数据画图
title('图1');
subplot(3,1,2),
plot(x,y2);    %第二组数据画图
title('图2');
%设计低通滤波器
Wp =100/Fs;
Ws = 200/Fs;    %截止频率100Hz,阻带截止频率200Hz
[n,Wn] = buttord(Wp,Ws,1,50);   %阻带衰减大于50db,通带纹波小于1db
%估算得到Butterworth低通滤波器的最小阶数N(10)和3dB截止频率Wn(0.0774)
[a,b]=butter(n,Wn);     %设计Butterworth低通滤波器,确定传递函数的分子分母系数
[h,f]=freqz(a,b,'whole',Fs);        %求数字低通滤波器的频率响应
f=(0:length(f)-1)'*Fs/length(f);    %进行对应的频率转换
subplot(3,1,3),
plot(f,abs(h));     %绘制Butterworth低通滤波器的幅频响应图
title('巴氏低通滤波器');
grid;
%低通滤波
p1=filter(a,b,y1);       %y1经过低通滤波器以后的新数据
p2=filter(a,b,y2);       %y2经过低通滤波器以后的新数据
figure(2);
subplot(2,1,1),
plot(x,p1);     %绘制y1经过低通滤波器以后的时域图形
title('除燥数据1');
subplot(2,1,2),
plot(x,p2);     %绘制y2经过低通滤波器以后的时域图形
title('除燥数据2');
figure(3);
plot(x,p1,x,p2);
%相关运算
[a,b]=xcorr(p1,p2,'coeff');  %互相关计算, 返回矢量长度为2*N-1互相关函数序列,,当b没有指定时,其范围为[-N+1,N-1]
dt=.1;
figure(4);
plot(b*dt,a);      %绝对互相关图
title('互相关图');
a=abs(a);
[amax,bmax]=max(a);
sample_delay=bmax-N;              %计算与中心点相差的样点数
t0=sample_delay/Fs;
v=L/t0;
回复此楼

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lmszz 的主题更新
信息提示
请填处理意见