题目要求
主动声纳测距是通过发射脉冲信号,通过检测回波时延估计目标距离。本实验中采用相关时延估计方法可实现测距功能 实验条件:
发射信号波形:频率100Hz,采样率1KHz,脉冲长度100ms仿真接收数据从脉冲发射时刻开始,产生两秒的接收数据。其中目标距离750米,声速1500米/s,信噪比5dB利用相关时延估计峰值检测方法估计时延,进而得到目标j距离,验证是否与设置的目标距离750米一致
程序实现
思路
1.首先根据发射信号的条件生成发射信号; 2.然后根据接收信号的特征,通过在发射信号前后面补零实现接收信号的模拟,注意补零的个数是跟时间条件相关的,一个点数代表的时间是
1
f
s
\frac{1}{fs}
fs1 3.利用循环不断滑动,每一次对发射信号和接收信号的部分(两者等长)求相关,等到一个相关系数的向量 4.找到相关系数向量中最大值的位置,在图上标志出来
代码
%主动声呐脉冲测距
clc;clear all;
f=100;%信号频率
fs=1000;%采样率
ts=0.1;%采样时间
l=750;%仿真时目标距离为750m
c=1500;%声速
t0=l/c;%仿真时需要对信号延时的时间
t=0:1/fs:ts-1/fs;%信号的采样点
st=sin(2*pi*f*t);%发射信号
y=[zeros(1,t0/(1/fs)-1),st];%接收信号是发射信号进行时延
y=[y,zeros(1,2*fs-length(y))];%接收信号补充到2s
z=awgn(y,5);%添加噪声,信噪比为5dB
%plot(1/fs:1/fs:2,z);
r=[];%互相关值
for k=0:length(z)-length(st)
r(k+1)=st*z(k+1:length(st)+k)';%每一次滑动1个点,然后对原始信号与接收信号做相关
end
[A,index]=max(r);%找出最大值及其索引
x=(1:length(r))./fs;%横坐标 表示时间
plot(x,r);xlabel('时间/s');ylabel('相关系数');%画出相关函数与时间的函数曲线
text(x(index),A,num2str(x(index)),'color','r');%标记处最大值
hold on;
plot(x(index),A,'r*');%在图上圈出来
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020032614412718.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU4Njc1MA==,size_16,color_FFFFFF,t_70)
|