📄 dopllecombarker.m
字号:
%张润宁论文中多普勒补偿问题, 巴克码(加噪声)
%改变fd的值可以改变多普勒频率的大小
%改变SNR的值可以改变信噪比的大小
clear all;
T=0.2*10.^-6; %子脉冲宽度T
B=1/T; %子脉冲带宽B=1/T
fd=0.05*B %多普勒频率fd
SNR=20 %信噪比SNR
Pnoise=0.01; %噪声功率Pnoise
Psignal=Pnoise*10.^(SNR/10); %信号功率Psignal
%Psignal=1;
%Pnoise=0
sequence=[1 1 1 1 1 -1 -1 1 1 -1 1 -1 1];
SeqLength=length(sequence); %序列长度P=SeqLength
%%%%%%%%%%%%%%%%%
%加多普勒信息和噪声
Vector=1:SeqLength;
%SignalR=BPCSeq.*exp(1i*2*pi*fd*T*Vector); %回波信号加多普勒信息
rand('state',sum(100*clock));
SignalR=sqrt(Psignal)*sequence.*exp(1i*2*pi*fd*T*Vector)+sqrt(Pnoise)*randn(1,SeqLength); %SignalR_N为加噪声和多普勒信息的回波信号
%%%%%%%%%%%%%%%%%
s1=SignalR.*SignalR;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%用两次内插的方法来实现分频处理
u=s1(1:(SeqLength+1)/2);
for k=0:(SeqLength-1)/2
%k
Even=2*k;
Odd=2*k+1;
v(Even+1)=u(Even/2+1);
if (Odd<SeqLength)
v(Odd+1)=(u((Odd-1)/2+1)+u((Odd+1)/2+1))/2;
end
end
s2=v;
%s2为分频后的结果
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s3=SignalR.*conj(s2);
matchfilter=sequence(SeqLength:-1:1); %全景匹配滤波器
MFOut3=conv(s3,matchfilter);
[PSL_A,ISL_A]=PSLandISL(MFOut3)
mm_A=max(abs(MFOut3))
MFOut1=conv(SignalR,matchfilter);
[PSL_1,ISL_1]=PSLandISL(MFOut1)
mm_1=max(abs(MFOut1))
figure(1)
subplot(2,2,3)
plot(20*log10(0.01+abs(MFOut1)/max(abs(MFOut1))));
title('C(补偿前)S/N=6dB,fd/B=0.0')
y=length(MFOut1);
axis([0,y,-40,5]);
grid on
subplot(2,2,4)
plot(20*log10(0.01+abs(MFOut3/max(abs(MFOut3)))));
title('D(补偿后)S/N=6dB,fd/B=0.0')
y=length(MFOut3);
axis([0,y,-40,5]);
grid on
%subplot(2,2,3)
%plot(s)
%subplot(2,2,4)
%plot(s3)
%匹配滤波器的输出基本是和论文中的图一致的(P26)
%但是补偿后的脉压输出有很大的不同
%问题估计存在于插值实现分频的计算中
%经过检查,不是插值的问题
%完成,开始错在公式s3=s.*conj(s2),写成s3=s2.*conj(s2)了
%如何在信号中加噪声??x=s+n? 解决了见公式[s=s+Pnoise*rand(1,SeqLength)]
%2002/3/25增加了计算SNR损失的函数PSLandISLandMSSLandLSNRandLPG
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -