clear
close all
%信号参数提取模块(此模块为数字解调方式实现参数提取)
t=1:256*1024;% 一维数组256K
%产生A/D采样数据, 采样频率为500MHz,信号频率为375.0MHz
x=100*sin(2*pi*375.0/500.0*t);
%产生脉冲,脉冲重复间隔(PRI)为10us,脉冲宽度(PW)为1us
PRI=5000;
PW=500;
[u,v]=size(t);%求出数组的维数u行v列
pulsenum=v/PRI;
for i=1:pulsenum
for j=1:PRI-PW
x((i-1)*PRI+j)=0;
end
end
x1=x+10*randn(size(t));
figure(1)
plot(x1,'b');
%采用Hilbert实现信号包络检测
%A路信号作FFT
afft=fft(x1);
%对A路信号求模,然后作信号搜索
afft_mod=abs(afft);
figure(2)
plot(afft_mod);
%现在假设一个门限,今后的门限数据由通道校正数据给出
threshold=1e5;
%由于采样频率fs为500MHz,中频带宽对应为275-475M,因实序列的FFT是关于fs/2对称的
%因此将275M-475M带宽看作25M-225M的带宽是一样的,25M对应的数字频率为13107,225M对应的数字频率为117964
startbw=13107;endbw=117964;
%因为最多要作4个信号,每个信号间隔频率为5M,因此我们采用分段(每段取为4M,即2097)搜索极值,然后每段中的极值再与门限比较,高过门限则
%有可能认为是一个信号,当然两个极值间对应的间隔小于设定的信号间隔频率,将合并,合并的原则为以两个极值中的较大极值对应的频率为信号,
%较小值被剔除(当然较小极值有可能为一真实信号,也有可能为脉冲信号的副瓣)
%声明:采用FPGA实现信号搜索可以采用另外的思路,只要保证上述功能即可。
seglen=2097;%分段长度
seg=round((endbw-startbw)/seglen);% 找出最近的整数integer,即分段的数目
for j=1:seg
[maxvalue(j),maxPos(j)]=max(afft_mod(startbw+(j-1)*seglen:startbw+j*seglen)); %将信息的所在数组位置返回给maxPos(j)
maxPos(j)=maxPos(j)+startbw+(j-1)*seglen; % 更新位置信息
end
for j=1:seg
if maxvalue(j)<threshold
maxPos(j)=0;
maxvalue(j)=0;
end
end;
%合并两个频率间隔较近的信号
for j=1:seg-1
if maxPos(j)~=0 && maxPos(j+1)~=0
if abs(maxPos(j)-maxPos(j+1))<seglen
if maxvalue(j)>maxvalue(j+1)
maxvalue(j+1)=0;
maxPos(j+1)=0;
else
maxvalue(j)=0;
maxPos(j)=0;
end
end
end
end
%信号个数统计
signum=0;
MAXSIGNALNUM=4;
realsigpos(1:10)=0;
while(signum<MAXSIGNALNUM)
[mod,freqpos]=max(maxvalue);% 将maxvalue的最大值赋给mod,将其位置信息赋给freqpos
if mod==0
break; % no signal
else
signum=signum+1;
realsigpos(signum)=maxPos(freqpos); % 提取最值处的信号位置
maxvalue(freqpos)=0; % 将当前最大模值清除
maxPos(freqpos)=0; % 将当前最大模值位置信息清除
end;
end;
%有信号则进行参数提取处理处理
%信号滤波带宽暂取4M左右,在FPGA中实现时采用实际信号的3dB带宽
%逆FFT的点数由主控计算机设定,此处定为64k点
sigbw=2048;%对应数字频率的滤波带宽大概为4M
z(1:64*1024)=0; % 一维数组
if signum~=0
for j=1:signum
z(1:sigbw)=afft(realsigpos(j)-sigbw/2:realsigpos(j)+sigbw/2-1);
end
demodule_rst=abs(ifft(z)); % 将经过快速傅里叶变换的有效信号进行逆变换求模
% figure;
% plot(demodule_rst);
%以最大值的3dB作门限,求出每个脉冲的到达时间(TOA),脉冲宽度(PW),通过统计的方式得出信号脉冲重复间隔PRI
[maxdemudle,maxdemodulepos]=max(demodule_rst);
demodule_rst=demodule_rst/maxdemudle*255; % 功能?
figure(3);
plot(demodule_rst);
wavethresh=128; % maxValue-3dB
pulsenum=0;
m=1;
while(m<=64*1024)
if demodule_rst(m)>wavethresh
TOA(pulsenum+1)=m; % 找出第一个超出门限的值
for jj=m:64*1024
if demodule_rst(jj)<wavethresh
PW(pulsenum+1)=(jj-m); % 求出第一个脉冲宽度
pulsenum=pulsenum+1; % 脉冲个数加1
break;
end
end;
m=jj;% 下一次循环从jj之后开始
else
m=m+1;
end
end
for ii=1:pulsenum-1
PRI(ii)=TOA(ii+1)-TOA(ii);% 初步求得脉冲重复间隔
end;
% 用统计的方法求出重复间隔
pris(10)=0;
pws(10)=0;
prissum(10)=0;
prinum(10)=0;
pritypenum=1;
prierror=5;
for ii=1:pulsenum-1
if ii==1
pris(pritypenum)=PRI(ii);
prissum(pritypenum)=PRI(ii);
prinum(pritypenum)=1;
pws(pritypenum)=PW(ii);
else
for jj=1:pritypenum
if abs (PRI(ii)-pris(jj)) < prierror
prissum(jj)=prissum(jj)+PRI(ii); % 若两个PRI误差小于5,直接相加得间隔之和
pws(pritypenum)=pws(pritypenum)+PW(ii); % 第一种脉冲宽度直接相加和
prinum(jj)=prinum(jj)+1; % 脉冲个数加1
break;
end
if jj==pritypenum+1 % a new 脉冲重复间隔
pritypenum=pritypenum+1;
pris(pritypenum)=PRI(ii);
prissum(pritypenum)=PRI(ii);
prinum(pritypenum)=1;
pws(pritypenum)=PW(ii);
end
end
end
for ii=1:pritypenum
if prinum(ii)~=0
pris(ii)=prissum(ii)/prinum(ii); % 统计得出每种的脉冲重复间隔
pw(ii)=pws(ii)/prinum(ii); % 统计得出每种的脉冲宽度
end;
end;
%输出:
rf=realsigpos(j)*500/262144; % 频率参数
for ii=1:pritypenum
pris(ii)=pris(ii)*8;
pw(ii)=pw(ii)*8;
end %脉冲重复周期和脉冲宽度参数
end
end
没有合适的资源?快使用搜索试试~ 我知道了~
【信号检测】基于matlab雷达信号基本检测【含Matlab源码 3580期】.zip
共4个文件
jpg:3个
m:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 114 浏览量
2023-12-07
10:05:45
上传
评论
收藏 88KB ZIP 举报
温馨提示
CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测
资源推荐
资源详情
资源评论
收起资源包目录
【信号检测】基于matlab雷达信号基本检测【含Matlab源码 3580期】.zip (4个子文件)
【信号检测】基于matlab雷达信号基本检测【含Matlab源码 3580期】
运行结果1.jpg 56KB
运行结果2.jpg 17KB
jiance.m 5KB
运行结果3.jpg 57KB
共 4 条
- 1
资源评论
海神之光
- 粉丝: 5w+
- 资源: 6110
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功