返回信息流代码如下:
%基带OOK的低通滤波接收与匹配滤波接收比较
L=8;
M=1000;
N=L*M;
Rb=2;%kBaud码元速率
Tb=1/Rb;
fs=L*Rb;
T=N/fs;
dt=1/fs;
t=(0:dt:T-dt);
df=1/T;
f=(-fs/2:df:fs/2-df);
SNR=(0:0.5:17);
SNR1=10.^(SNR/10);
A=1; %信号幅值
Eb=(A^2)*Tb/2; %Eb=(A^2)*Tb/2
N0=Eb./SNR1; %噪声单边功率谱密度
sigma=sqrt(N0*fs/2); %总的噪声方差 fs越大,此处越接近真实值
EP=zeros(1,N);
Pb1=zeros(1,length(SNR));
Pb2=zeros(1,length(SNR));
r2=zeros(1,N);
maxloop=100;
for sn=1:length(SNR)
for loop=1:maxloop
a=(rand(1,M)>0.5);
s=ones(L,1)*a;
s=s(:)';
S=t2f(s,fs);
P=abs(S).^2/T;%样本信号的功率谱密度
EP=EP*(1-1/loop)+P/loop;%平均功率谱密度的计算公式
noise=sigma(sn)*randn(1,length(s));
r=s+noise;
%低通滤波接收
r1=real(LPF(r,Rb,fs));
r1data=r1(L/2:L:N); %定时采样样
r1data=(r1data>A/2); %简单判决
ee=nnz(r1data~=a);
Pb1(sn)=Pb1(sn)+ee;
%相关积分/匹配滤波接收
for ii=1:M
tmp=dt*conv(r((ii-1)*L+1:ii*L),ones(1,L));
r2((ii-1)*L+1:ii*L)=tmp(1:L);
%tmp=dt*conv(s((ii-1)*L+1:ii*L),ones(1,L));
%r3((ii-1)*L+1:ii*L)=tmp(1:L);
end
r2data=r2(L:L:N); %定时采样样
r2data=(r2data>0.5*A^2*Tb); %简单判决
ee=nnz(r2data~=a);
Pb2(sn)=Pb2(sn)+ee;
end
Pb1(sn)=Pb1(sn)/(maxloop*M);
Pb2(sn)=Pb2(sn)/(maxloop*M);
%a=input('仿真过程大约需要10分钟,是否执行?[y确认/其他键退出]','s');
fprintf('%d \n',SNR(sn))
end
close all
figure
subplot(2,1,1)
plot(t,s)
title('OOK信号的波形')
xlabel('t/ms')
ylabel('s(t)/V')
axis([0,10,-1,2])
subplot(2,1,2)
plot(f,EP)
title('OOK信号的平均功率谱密度')
xlabel('f/kHz')
ylabel('功率谱密度/(W/kHz)')
axis([-6,6,0,0.15])
figure
semilogy(SNR,Pb1,'-')
str=['总数:' num2str(M*maxloop)];
xlabel(str)
grid on
hold on
standard1=0.5*erfc(sqrt(SNR1/4));
semilogy(SNR,standard1,'-+')
hold on
standard2=0.5*erfc(sqrt(SNR1/2));
semilogy(SNR,standard2,'-*')
hold on
semilogy(SNR,Pb2,'o-')
axis([0,18,0.0000001,1])
legend('低通滤波仿真结果','低通滤波理论值','相关卷积理论值','相关卷积仿真结果')
这是一条镜像帖。来源:北邮人论坛 / matlab / #9448同步于 2012/11/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
为什么我的仿真结果与理论值不同
dajinsique
2012/11/14镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
想了想,其实问题在于理想低通滤波器输出的波形在采样时刻的幅值。
发0、1等概时,采样时刻的幅值大部分情况是,要么大于1(约是1.15),要么小于0(约是-0.15),发全0或全1时就一直是0或1了。
【 在 Rvtea 的大作中提到: 】
: 莫非理论考察的就是全零码字?
为啥是1.15和-0.15?求解~没想通~
【 在 dajinsique 的大作中提到: 】
: 想了想,其实问题在于理想低通滤波器输出的波形在采样时刻的幅值。
: 发0、1等概时,采样时刻的幅值大部分情况是,要么大于1(约是1.15),要么小于0(约是-0.15),发全0或全1时就一直是0或1了。
仿真时看一下没有加噪声情况下采样时的波形就明白了。(通过低通滤波后的脉冲顶部会出现波动,具体的波动值大小会因低通滤波器的截止带宽不同而不同)
【 在 Rvtea 的大作中提到: 】
: 为啥是1.15和-0.15?求解~没想通~