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


海神之光
- 粉丝: 5w+
- 资源: 7136
最新资源
- 《基于FPGA的Verilog语言FOC控制永磁同步异步电机资料:涵盖Cordic算法与SVPWM代码实现详解》,FPGA Verilog编程与电机控制:基于FOC的永磁同步与异步电机开环闭环控制理论
- kernel-devel-5.10.0-46.uelc20.x86-64.rpm
- (源码)基于CUDA的并行计算项目 Testworld.zip
- Delphi 12 控件之DelphiDeepseek.zip
- 微信输入法,可以统一电脑整体与微信输入法一致
- B站黑马程序员千万播放C++入门视频课程代码 代码随想录官网力扣题目C++代码
- kernel-headers-5.10.0-46.uelc20.x86-64.rpm
- 基于三菱PLC与组态王技术的兰花灌溉控制系统在农业农田的应用研究,基于三菱PLC与组态王的兰花灌溉控制技术在农业农田的实践应用,93#基于三菱PLC和组态王的兰花灌溉控制系统的农业农田 ,核心关
- 区域双碳目标与路径规划研究(碳达峰).zip
- kernel-modules-5.10.0-46.uelc20.x86-64.rpm
- 三菱PLC与组态王控制下的高效污水处理系统设计与应用,基于三菱PLC与组态王组态控制的智能污水处理系统设计与应用,91#基于三菱PLC和组态王组态控制的污水处理系统 ,三菱PLC; 组态王组态控
- Delphi 12 控件之TMS VCL UI Pack v13.4.0.1 for Delphi & CB 7-12 Athens Full Source.rar
- 基于Java Web的个人财务管理系统的课程设计实现与功能解析
- 元胞自动机交通流仿真:探究公交车专用道与非专用道混合行驶情形下的速度变化及仿真结果分析,元胞自动机交通流仿真:基于公交专用道与非专用道环境下的多模态车辆行驶模拟及平均速度图像生成研究,元胞自动机交通流
- Deepseek Ollama大模型管理脚本
- deepseek 应该怎样提问.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈


