📄 shangjiao6.m
字号:
%%%%%波形的发射和接收
clear all;
close all;
Q=20;%%一个元素周期内的数据个数为20个
fs=5e6*20;%%中频载频
f0=10e9;%%%射频
ifft_fft_long=2048;%%%ifft和fft点数
pcode_long=2048;%2048点的伪码
pcode_peroid=6;%伪码周期为6;
M=2;%增加周期用于后期处理的
data_long=pcode_long*(pcode_peroid+M);
do_Long=pcode_long*pcode_peroid;
%%伪码生成
data_1=pcode(11,1);%%生成伪码
data=bu(data_1,pcode_long-1);%%最后补0
data_c_b=data.';%%数据串并转换
ifft_data_lie=ifft(data_c_b).*ifft_fft_long;%%数据IFFT
ifft_data=ifft_data_lie.'%%ifft后的数据并串转换
tt=0:(1/fs)*Q:(1/fs)*Q*(ifft_fft_long-1);%%串行数据率为fs/Q
% %%信号自相关性
% x_data=xcorr(ifft_data);
% number=1:1:length(x_data);
% figure;
% plot(number,x_data/max(x_data));
% title('经过多载波调制后的串行信号的自相关性');
% % break;
%%%%画出IFFT后的实部和虚部图
figure;
subplot(211);
% stem(tt(1:20),real(ifft_data(1:20)));%%画出实部(部分)
plot(tt,real(ifft_data));%%画出实部(全部)
xlabel('时间(s)');
ylabel('幅度');
title('载波的同相分量');
subplot(212);
% stem(tt(1:20),imag(ifft_data(1:20)));%%画出虚部(部分)
plot(tt,imag(ifft_data));%%画出虚部(全部)
title('载波的正交分量');
xlabel('时间(s)');
ylabel('幅度');
%%%画出信号的频率谱和功率谱
figure;
ff=(fs/Q)*(1:ifft_fft_long)/ifft_fft_long;
subplot(211);
plot(ff,abs(fft(ifft_data))/ifft_fft_long);
title('通过多载频后的信号的频谱');
subplot(212);
pwelch(ifft_data,[],[],[],fs/Q);
title('通过多载频后的信号的功率谱');
%%发射信号
%%经过D/A
% Q=20;一个元素周期内的数据个数(每个数据重复20次,为了把数据搬移到中频上)
L=length(ifft_data);
chips=[ifft_data;zeros(Q-1,L)];
gg=ones(Q,1);
dummy=conv(gg,chips(:));
u=dummy(1:ifft_fft_long*Q);%%%重复后数据,改数据用于和中频混合
figure;
tt2=0:1/fs:1/fs*(length(u)-1);%%数据率为fs
subplot(211);
plot(tt2(1:400),real(u(1:400)));
title('信号经过D/A后的同相分量');
subplot(212);
plot(tt2(1:400),imag(u(1:400)));
title('信号经过D/A后的正交分量');
figure;
ff2=fs*(1:ifft_fft_long*Q)/ifft_fft_long*Q;
subplot(211);
plot(ff2,abs(fft(u,2048*20))/2048);
subplot(212);
pwelch(u,[],[],[],fs);
%%加滤波器平滑D/A后的信号
%%设置滤波器参数
Rs=fs;
[b,a]=butter(13,1/10);
[H,F]=freqz(b,a,ifft_fft_long,Rs);
%%滤波器的频响特性
figure;
plot(F,20*log10(abs(H)));
axis([0 10e6 -100 10]);
title('D/A滤波器的频响特性');
xlabel('频率(Hz)');
ylabel('幅度(dB)');
u_filter_after=filter(b,a,u);%%%数据经过滤波平滑
figure;
subplot(211);
plot(tt2(20:420),real(u_filter_after(20:420)));
title('经过D/A滤波器后的同相分量');
xlabel('时间(s)');
ylabel('幅度');
subplot(212);
plot(tt2(20:420),imag(u_filter_after(20:420)));
title('经过D/A滤波器后的正交分量');
xlabel('时间(s)');
ylabel('幅度');
%%最后要发射的模拟信号;
u_tr_signal=repmat(u_filter_after,1,(pcode_peroid+M));%%%重复个周期
[row,column]=size(u_tr_signal);
tr_signal_final=reshape(u_tr_signal,1,row*column);
tt8=0:1/fs:1/fs*(length(tr_signal_final)-1);
figure;
% plot(tt8,u_tr_signal);
plot(tt8(20:420),real(tr_signal_final(20:420)));
figure;
plot(tt8(20:420),imag(tr_signal_final(20:420)));
%%搬移到中频上
fcs=300e6;%%%这个频率是为了画出信号搬移到中频后的波形,没有实际意义!
fc=100e6;
tt5=0:1/fcs:(1/fcs)*(length(tr_signal_final)-1);
s_shangbian=(tr_signal_final).*exp(j*2*pi*fc*tt5);%%混频
figure;
subplot(211);
plot(tt5,real(s_shangbian));
axis([2e-7 3e-6 -100 100]);
title('加入中频的I通道信号');
xlabel('时间(s)');
ylabel('幅度');
subplot(212);
plot(tt5,imag(s_shangbian));
axis([2e-7 3e-6 -100 100]);
title('加入中频的Q通道信号');
xlabel('时间(s)');
ylabel('幅度');
figure;
plot(tt5,(real(s_shangbian)+imag(s_shangbian)));%%画出最后发射的波形
axis([1e-6 3e-6 -100 100]);
title('加入中频的发射信号');
xlabel('时间(s)');
ylabel('幅度');
%%%目标信息加入
T=length(s_shangbian);
t=0:1/fs:1/fs*(T-1);
%%目标1
door1=34;%%目标1距离门为35个门(因为第一个门为0)
% fd1=(fs/Q)/ifft_fft_long*40;%%目标1多普勒
fd1=90e3;%%目标1多普勒频率(可以修改)
re_ma1=zeros(1,T);
re_ma1(door1*Q+1:T)=s_shangbian(1:T-(door1*Q));%%加入距离信息
% %%%查看距离门移动是否正确
% re_ma1_caiyang=reshape(re_ma1,20,T/20);%%进行5M抽样
% hang_1=re_ma1_caiyang(1,:);
% %%%%%
doppler1=exp(j*2*pi*fd1*t);%%用复信号
re_wave1=re_ma1.*doppler1;%%加入多普勒信息
%%目标2
door2=8;%%目标2距离门为9个门(因为第一个门为0)
% fd2=(fs/20/ifft_fft_long)*5;%%目标2多普勒
fd2=10e3;%%目标2多普勒频率
re_ma2=zeros(1,T);
re_ma2(door2*Q+1:T)=s_shangbian(1:T-(door2*Q)); %%加入距离信息
%%%查看距离门移动是否正确
re_ma2_caiyang=reshape(re_ma2,20,T/20);%%进行5M抽样
hang_2=re_ma2_caiyang(1,:);
%%%%%
doppler2=exp(j*2*pi*fd2*t); %%用复信号
re_wave2=re_ma2.*doppler2; %%加入多普勒信息
%%%加入噪声
nosie=randn(1,T);%%生成高斯白噪声
SNR1=0;%%目标1信噪比
a1=(10^(SNR1/10))*1;%%换算成幅度
SNR2=0;%%目标2信噪比
a2=(10^(SNR2/10))*1;%%换算成幅度
%%%%回波生成
final_re_wave=a1*re_wave1+a2*re_wave2+nosie;%%加了噪声后的回波信号
% final_re_wave=a1*re_wave1+a2*re_wave2;%%没加噪声后的回波信号
figure;
tt6=0:1/fcs:(1/fcs)*(length(tr_signal_final)-1);
plot(tt6,final_re_wave);
axis([1e-6 3e-6 -100 100]);
title('加入目标信息的回波');
xlabel('时间(s)');
ylabel('幅度');
%%%回波接收处理
%%%%去中频
s_xianbian=final_re_wave.*exp(-j*2*pi*fc*tt6);%%去掉中频,这里为了方便。实际情况中要和论文中那样进行I/Q双通道处理
figure;
plot(tt6,real(s_xianbian));%%画出回波信号的实部
axis([1e-6 3e-6 -100 100]);
title('去掉载频后的I通道回波');
xlabel('时间(s)');
ylabel('幅度');
figure;
plot(tt6,imag(s_xianbian));%%画出回波信号的虚部
axis([1e-6 3e-6 -100 100]);
title('去掉载频后的Q通道回波');
xlabel('时间(s)');
ylabel('幅度');
%%%%进行A/D
%%采样率必须满足大于fs/Q,也就是一个ofdm符号周期内每个子载波都能被采样一次
s_caiyang=reshape(s_xianbian,20,T/20);%%进行5M采样
chuli_signal=s_caiyang(1,:);
tt7=0:(1/fs)*Q:(1/fs)*Q*(length(chuli_signal)-1);
% figure;
% % plot(tt7,chuli_signal);
% % axis([0 3e-3 -150 150]);
% %
% % xlabel('时间(s)');
% % ylabel('幅度');
% % title('经过A/D采样后的回波信号');
figure;
% subplot(211);
% plot(tt7,real(chuli_signal));
plot(tt7(1:2000),real(chuli_signal(1:2000)));%%画出采样后信号的实部
xlabel('时间(s)');
ylabel('幅度');
title('采样后的I通道数据');
figure;
% subplot(212);
% plot(tt7,imag(chuli_signal));
plot(tt7(1:2000),imag(chuli_signal(1:2000)));%%画出采样后信号的虚部
xlabel('时间(s)');
ylabel('幅度');
title('采样后的Q通道数据');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -