⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 realdatatest64v2.m

📁 雷达信号处理中脉冲压缩算法的matlab例子程序
💻 M
字号:
clear all;
u3i=load('000ci.txt');   %011ci.txt  文件与程序同一文件夹
u3q=load('000cq.txt');   %文件名    %011cq.txt
%u3i,u3q是原始数据存放数组 指令:plot(u3i);figure;plot(u3q)画原始数据图
%plot(abs(u3i+j*u3q))求模
%信号参数
fs=30e6;         %AD对信号采样率
T=3e-6;          %信号最大时间宽度。 1us  3us 10us
B=24e6;		     %信号带宽
K=B/T;           %调频信号线性增长速度
f0=0;            %初始频率	
Ns=fix(T*fs);    %信号有效的采样点数
t0=1/fs;         %采样周期
Num=256;          %脉压点数   1us = 64,  3us=256, 10us=512.
WordLength=16;   %保存信号位数
%----------------------------------------------------
%     生成时域信号 
%----------------------------------------------------
i=[0:1:Ns-1];
t=(i-fix((Ns-1)/2))*t0;
phase2=2*pi*(f0*t+K*t.^2/2);
Signal=([exp(j*phase2) zeros(1,Num-Ns)]);

ch_num=1:Ns;
xghamming=0.54-0.46*cos(2*pi*((ch_num-1)/(Ns-1)));
%加预失真时去掉%CjSig=conj(fft((Signal.*[xghamming zeros(1,(Num-Ns))]),Num));
art=[hamming(Ns)' zeros(1,Num-Ns)];
CjSig=conj(fft(Signal.*art,Num));
% % %
%CjSig=conj(fft((Signal.*[hamming(Ns)' zeros(1,(Num-Ns))]),Num));%化为相关的一步
%CjSig=conj(fft((Signal.*art),Num));   %%截断三句之三
CjSig_Widownon=CjSig;%.*hamming(Num)';
%CjSig_Widownon_black=CjSig.*blackman(length(Num))'; 
%此处可以加窗,具体加什么窗可自行决定
%-----------------------------------------------------
%==========================================================================
%先扩Shift_Num倍以保证精度,注意在VHDL中要将所扩部分进行处理
%以下即为所要扩充位数选择的算法
AbsMax=max(abs([real(CjSig_Widownon) imag(CjSig_Widownon)]));
Shift_Num=fix(log2(ceil((2^(WordLength-1))/(AbsMax)))); %补码   
CjSig_Widownon_Aug=CjSig_Widownon.*2^Shift_Num;  %移8位

%------------------------以下计算原信号扩充位数
%这两步是为了尽量扩大精度
Sig_AbsMax=max(abs([real(Signal) imag(Signal)]));
Sig_Shift_Num=fix(log2(ceil((2^(WordLength-1))/(Sig_AbsMax)))); %补码   
Signal_Aug=Signal.*2^Sig_Shift_Num;

%----------------------------
si=(u3i);
 %si=si(1:5940);
 

 jmpnum =167;  %(可修改)%735是重新采样间隔  用示波器采样频率除以30MHz   
 selnum =5000; %(可修改) %5000是实际看到的点数,尽量靠近chirp第一点 
 fnum =floor(selnum/jmpnum);    
 
 sizeofsigp=size(u3i);
 sizeofsig=sizeofsigp(1);
 numsigadj=sizeofsig/jmpnum;
 maxnumforpro = floor((sizeofsig - selnum )/jmpnum);
 
 if maxnumforpro-fnum>=Num 
     numadj=Num;
 else
 numadj = maxnumforpro-fnum;
 end
  sq=(u3q);
 
  if  (numadj)>=Num 
 ind=[fnum:fnum+numadj-1];csi=si(ind*jmpnum);  
 ind=[fnum:fnum+numadj-1];csq=sq(ind*jmpnum);
  else
  ind=[fnum:fnum+numadj-1];csi=[si(ind*jmpnum)' zeros(1,Num-(numadj))]';  
 ind=[fnum:fnum+numadj-1];csq=[sq(ind*jmpnum)' zeros(1,Num-(numadj))]';  ;   
  end
 
asdfg= csi'+j*(csq');

%----
zxcv=ifft(fft(asdfg).*(CjSig_Widownon));
x=fftshift(abs(zxcv));%%%x=fftshift(abs(ifft(fft(Signal).*(CjSig_Widownon))));
plot(20*log10(eps+x/max(x)))
title('db图')

figure
plot((x))
title('时域');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -