雷达辐射源调制信号仿真
说明:通过Matlab进行单载频(CW),线性调频(LFM)、非线性调频(NLFM)、二相编码(BPSK)、四相编码(QPSK)、二频编码(BFSK)、四频编码(QFSK)七种雷达脉内调制信号的方仿真。
环境:Matlab
直通☛ 200页+ FPGA/IC秋招面试笔试题
@[toc]
1.单载频信号
function [cws]=cw(snr,T,f0)
Fs=2500e6;%时域采样频率2500MHz
N=8192;
t=(0:1/Fs:T);%时间序列
s=exp(1i*2*pi*f0*t);%原信号
s=awgn(s,snr);%加高斯白噪声后的信号
s=fft(s,N)/max(fft(s,N));%fft,归一化
cws.data=s;%加高斯白噪声后的信号
cws.label=0;%加高斯白噪声后的信号
% %绘图
%plot((0:N-1)*Fs/N,abs(cws.data));
2.线性调频信号
function [chirps]=chirp(snr,T,f0)
Fs=2500e6;%时域采样频率2500MHz
N=8192;
t=(0:1/Fs:T);%时间序列
B=(45+(55-45)*rand(1))*1e6;%调频带宽(45~55M)
K=rand(1)-0.5;%调频斜率(正负随机选择)
if(K>0)
K=B/T;%
else
K=-B/T;%
end
s=exp(1i*(2*pi*f0*t+pi*K*t.*t));%原信号
s=awgn(s,snr);
s=fft(s,N)/max(fft(s,N));%fft,归一化
chirps.data=s;%加高斯白噪声后的信
chirps.label=1;%加高斯白噪声后的信号
% %绘图
%plot((0:N-1)*Fs/N,abs(s));
3.非线性调频信号
function [nlfms]=nlfm(snr,T,f0)
Fs=2500e6;%时域采样频率2500MHz
N=8192;
B=(45+(55-45)*rand(1))*1e6;%调频带宽(45~55M)
%计算窗函数群时延函数
syms f;
W(f)=0.54+0.46*cos(2*pi/B*f);%定义窗函数
Tf=matlabFunction(vpa(double(vpa(T/int(W,-B/2,B/2)))*int(W,-B/2,f)));%计算群时延函数
%调频函数拟合(群时延反函数拟合)
f=(-B/2 : B/(T*Fs) : B/2);
[xData, yData] = prepareCurveData( Tf(f), f );
Ft= fit( xData, yData, 'smoothingspline');
t=(0 : 1/Fs : T);
Ft=Ft(t);
%相位函数计算
P=zeros(1,length(t));
for j=2:length(t)
P(j)=P(j-1)+2*pi*Ft(j)*(1/Fs);
end
s=exp(1i*(2*pi*f0.*t+P));%原信号
s=awgn(s,snr);%加高斯白噪声后的信
s=fft(s,N)/max(fft(s,N));%fft,归一化
nlfms.data=s;
nlfms.label=2;%加高斯白噪声后的信号
% %绘图
% plot((0:N-1)*Fs/N,abs(s));
4.二相编码信号
function [bpsks]=bpsk(snr,T,f0)
Fs=2500e6;%时域采样频率2500MHz
N=8192;
barker_13=[1 1 1 1 1 -1 -1 1 1 -1 1 -1 1];
p=T/13.0;
pn=fix(p*Fs);%子码点数
cs=ones(13,pn);
for j=(1:13)
if(barker_13(j)==-1)
cs(j,:)=cs(j,:)*-1;
end
end
cs=[cs(1,:),cs(2,:),cs(3,:),cs(4,:),cs(5,:),cs(6,:),cs(7,:),cs(8,:),cs(9,:),cs(10,:),cs(11,:),cs(12,:),cs(13,:)];
t=(0:pn*13-1)/Fs;%时间序列
s=exp(1i*2*pi*f0*t).*cs;%原信号
s=awgn(s,snr);
s=fft(s,N)/max(fft(s,N));%fft,归一化
bpsks.data=s;%加高斯白噪声后的信号
bpsks.label=3;%加高斯白噪声后的信号
% %绘图
%plot((0:N-1)*Fs/N,abs(s));
5.四相编码信号
function [qpsks]=qpsk(snr,T,f0)
N=8192;%fft点数
Fs=2500e6;%时域采样频率2500MHz
tler_28A=[1 1i 1 -1i 1 -1i -1 1i -1 1i 1 1i -1 1i 1 1i -1 1i 1 1i -1 1i -1 -1i 1 -1i 1 1i];
p=T/28.0;
pn=fix(p*Fs);%子码点数
cs=ones(28,pn);
for j=(1:28)
if(tler_28A(j)==-1)
cs(j,:)=cs(j,:)*-1;
end
if(tler_28A(j)==1i)
cs(j,:)=cs(j,:)*1i;
end
if(tler_28A(j)==-1i)
cs(j,:)=cs(j,:)*-1i;
end
end
cs=[cs(1,:),cs(2,:),cs(3,:),cs(4,:),cs(5,:),cs(6,:),cs(7,:),cs(8,:),cs(9,:),cs(10,:),cs(11,:),cs(12,:),cs(13,:),cs(14,:),cs(15,:),cs(16,:),cs(17,:),cs(18,:),cs(19,:),cs(20,:),cs(21,:),cs(22,:),cs(23,:),cs(24,:),cs(25,:),cs(26,:),cs(27,:),cs(28,:)];
t=(0:pn*28-1)/Fs;%时间序列
s=exp(1i*2*pi*f0*t).*cs;%原信号
s=awgn(s,snr);
s=fft(s,N)/max(fft(s,N));%fft,归一化
qpsks.data=s;%加高斯白噪声后的信号
qpsks.label=4;%加高斯白噪声后的信号
% plot((0:N-1)*Fs/N,abs(s));
6.二频编码信号
function [bfsks]=bfsk(snr,T,f0)
Fs=2500e6;%时域采样频率2500MHz
N=8192;
barker_13=[1 1 1 1 1 -1 -1 1 1 -1 1 -1 1];
p=T/13.0;
pn=fix(p*Fs);%子码点数
cs=ones(13,pn);
cst=(0:pn-1)/Fs;
f1=f0+(10+(50-10)*rand(1))*1e6;%
p0=0;
for j=(1:13)
if(barker_13(j)==1)
cs(j,:)=exp(1i*(p0+2*pi*f0*cst));
p0=p0+2*pi*f0*cst(pn);
else
cs(j,:)=exp(1i*(p0+2*pi*f1*cst));
p0=p0+2*pi*f1*cst(pn);
end
end
s=[cs(1,:),cs(2,:),cs(3,:),cs(4,:),cs(5,:),cs(6,:),cs(7,:),cs(8,:),cs(9,:),cs(10,:),cs(11,:),cs(12,:),cs(13,:)];
s=awgn(s,snr);%加高斯白噪声后的信号
s=fft(s,N)/max(fft(s,N));%fft,归一化
bfsks.data=s;
bfsks.label=5;%加高斯白噪声后的信号
% %绘图
% plot((0:N-1)*Fs/N,abs(s));
7.四频编码信号
function [qfsks]=qfsk(snr,T,f0)
Fs=2500e6;%时域采样频率2500MHz
N=8192;
frank_16=[0 0 0 0 0 1 2 3 0 2 4 6 0 3 6 9];
p=T/16.0;
pn=fix(p*Fs);%子码点数
cs=ones(16,pn);
cst=(0:pn-1)/Fs;
df=(10+(50-10)*rand(1))*1e6;
p0=0;
for j=(1:16)
if(mod(frank_16(j),4)==0)
cs(j,:)=exp(1i*(p0+2*pi*(f0+df*mod(frank_16(j),4))*cst));
p0=p0+2*pi*f0*cst(pn);
else
if(mod(frank_16(j),4)==1)
cs(j,:)=exp(1i*(p0+2*pi*(f0+df*mod(frank_16(j),4))*cst));
p0=p0+2*pi*f0*cst(pn);
else
if(mod(frank_16(j),4)==2)
cs(j,:)=exp(1i*(p0+2*pi*(f0+df*mod(frank_16(j),4))*cst));
p0=p0+2*pi*f0*cst(pn);
else
cs(j,:)=exp(1i*(p0+2*pi*(f0+df*mod(frank_16(j),4))*cst));
p0=p0+2*pi*f0*cst(pn);
end
end
end
end
s=[cs(1,:),cs(2,:),cs(3,:),cs(4,:),cs(5,:),cs(6,:),cs(7,:),cs(8,:),cs(9,:),cs(10,:),cs(11,:),cs(12,:),cs(13,:),cs(14,:),cs(15,:),cs(16,:)];
s=awgn(s,snr);
s=fft(s,N)/max(fft(s,N));%fft,归一化
qfsks.data=s;%加高斯白噪声后的信号
qfsks.label=6;%加高斯白噪声后的信号
% %绘图
% plot((0:N-1)*Fs/N,abs(s));
7.总函数
%%
clear all;
clc;disp('正在生成');
for n=(0:0)
T_min=0.5;T_max=3;%脉宽(us)
f_min=200;f_max=220;%载频(MHz)
snr_min=-18;snr_max=-18;%信噪比
for i=(0:0)
data1(i*7+1)= cw (snr_min+(snr_max-snr_min)*rand(1),(T_min+(T_max-T_min)*rand(1))*1e-6,(f_min+(f_max-f_min)*rand(1))*1e6);
data1(i*7+2)= chirp (snr_min+(snr_max-snr_min)*rand(1),(T_min+(T_max-T_min)*rand(1))*1e-6,(f_min+(f_max-f_min)*rand(1))*1e6);
data1(i*7+3)= nlfm (snr_min+(snr_max-snr_min)*rand(1),(T_min+(T_max-T_min)*rand(1))*1e-6,(f_min+(f_max-f_min)*rand(1))*1e6);
data1(i*7+4)= bpsk (snr_min+(snr_max-snr_min)*rand(1),(T_min+(T_max-T_min)*rand(1))*1e-6,(f_min+(f_max-f_min)*rand(1))*1e6);
data1(i*7+5)= qpsk (snr_min+(snr_max-snr_min)*rand(1),(T_min+(T_max-T_min)*rand(1))*1e-6,(f_min+(f_max-f_min)*rand(1))*1e6);
data1(i*7+6)= bfsk (snr_min+(snr_max-snr_min)*rand(1),(T_min+(T_max-T_min)*rand(1))*1e-6,(f_min+(f_max-f_min)*rand(1))*1e6);
data1(i*7+7)= qfsk (snr_min+(snr_max-snr_min)*rand(1),(T_min+(T_max-T_min)*rand(1))*1e-6,(f_min+(f_max-f_min)*rand(1))*1e6);
x=['n=',num2str(n),'i=',num2str(i)];
disp(x);
end
file_name=['data1',num2str(n),'.mat'];
save(file_name,'data1');
end
% for j=(1:7)
% subplot(7,1,j);
% plot(abs(data(j).data));
% grid on;
% end
clc;disp('完成');