在做脉冲成型仿真时遇到的问题,PAM2,4,8三种情况下的的信噪比与BER的关系图应该是怎么样的?
仿真环境为Matlab,生成码元数为100w,滤波器用的是平方根升余弦滤波器,得出的结果总是不正确。下面是PAM4的代码:
N = 1000000; %产生100w个码元
M = 4;Nysm = 6;sampsPerSym = 15;%参数设定
R = 1000;filtDelay = Nysm/(2*R);Fs = sampsPerSym*R;
beta = 0.5;Data=[];
x = randi([0,M-1],N,1); %产生基带信号序列
sign = pammod(x,M); %进行PAM4调制
rctFilt = comm.RaisedCosineTransmitFilter('Shape','Square root','RolloffFactor',beta,'FilterSpanInSymbols',Nysm,'OutputSamplesPerSymbol',sampsPerSym);
rcrFilt = comm.RaisedCosineReceiveFilter('Shape','Square root','RolloffFactor',beta,'FilterSpanInSymbols',Nysm,'InputSamplesPerSymbol',sampsPerSym,'DecimationFactor',sampsPerSym);
yc = rctFilt([sign;zeros(Nysm/2,1)]);
yc1 = yc(filtDelay*Fs+1:end);
for A=1:20
yz = awgn(yc1,A,'measured');
yr1 = rcrFilt([yz; zeros(Nysm*sampsPerSym/2, 1)]);
yr = yr1(filtDelay*R+1:end);
for j=1:length(yr) %判决;四种情况下不同的判决门限
if yr(j)>1.5
yr(j)=3;
elseif yr(j)>0&&yr(j)<1.5
yr(j)=1;
elseif yr(j)<0&&yr(j)>-1.5
yr(j)=-1;
else
yr(j)=-3;
end
end
error(A) = 0;
for c=1:N %对比误码
if(sign(c)~=yr(c))
error(A)=error(A)+1;
end
end
f(A)=error(A)/N;
end
figure(1)
semilogy(f,'--or');
xlabel('SNR');ylabel('log(E)');title('误码率曲线图');legend('beta=0.5');legend('boxoff');