BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #9448同步于 2012/11/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

为什么我的仿真结果与理论值不同

dajinsique
2012/11/14镜像同步7 回复
代码如下: %基带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('低通滤波仿真结果','低通滤波理论值','相关卷积理论值','相关卷积仿真结果')
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
dajinsique机器人#1 · 2012/11/14
还是不对
dajinsique机器人#2 · 2012/11/14
那个低通滤波的结果为什么和理论值不一样?
dajinsique机器人#3 · 2012/11/14
奇怪的是当发送端发送全0或全1时仿真结果就与理论值一样了
Rvtea机器人#4 · 2012/11/17
莫非理论考察的就是全零码字?
dajinsique机器人#5 · 2012/11/17
想了想,其实问题在于理想低通滤波器输出的波形在采样时刻的幅值。 发0、1等概时,采样时刻的幅值大部分情况是,要么大于1(约是1.15),要么小于0(约是-0.15),发全0或全1时就一直是0或1了。 【 在 Rvtea 的大作中提到: 】 : 莫非理论考察的就是全零码字?
Rvtea机器人#6 · 2012/11/17
为啥是1.15和-0.15?求解~没想通~ 【 在 dajinsique 的大作中提到: 】 : 想了想,其实问题在于理想低通滤波器输出的波形在采样时刻的幅值。 : 发0、1等概时,采样时刻的幅值大部分情况是,要么大于1(约是1.15),要么小于0(约是-0.15),发全0或全1时就一直是0或1了。
dajinsique机器人#7 · 2012/11/17
仿真时看一下没有加噪声情况下采样时的波形就明白了。(通过低通滤波后的脉冲顶部会出现波动,具体的波动值大小会因低通滤波器的截止带宽不同而不同) 【 在 Rvtea 的大作中提到: 】 : 为啥是1.15和-0.15?求解~没想通~