雷达辐射源调制信号仿真(代码)

该博客介绍了如何使用Matlab进行雷达辐射源调制信号的仿真,包括单载频、线性调频、非线性调频、二相编码、四相编码、二频编码和四频编码七种类型。提供了详细的仿真步骤和代码示例。
摘要由CSDN通过智能技术生成

雷达辐射源调制信号仿真

说明:通过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('完成');




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字硬鉴

你的鼓励就是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值