返回信息流close all;
clear all;
N=5e5;
M=2;
k=log2(M);
EbNo=0:15;
tx=randint(N,1,M);%产生N行1列,并且数据都是在0~M-1之间
%Tx_Sig=de2bi(tx,[],k,'left-msb');
%Tx_S=reshape(Tx_Sig,1,length(Tx_Sig)*k); %Transmitted bits
%mod_Sig=exp(j*tx*2*pi/M);
h = modem.pskmod('M', 2, 'PhaseOffset', 0, 'SymbolOrder',...
'binary', 'InputType', 'bit');
mod_Sig=modulate(h,tx);
chan = rayleighchan(5e-4,75,[0 5e-7],[0 -3]);
%1 sample time of the input signal
%2 maximum doppler shift
%3 a vector of path delays
%4 a vector of average path gains
ray_Sig=filter(chan,mod_Sig);
%采样时间用chan的采样时间
for n = 1:length(EbNo)
noise_Sig=awgn(ray_Sig,EbNo(n),0.04);
% Add Gaussian noise.
h = modem.pskdemod('M', 2, 'PhaseOffset', 0, 'SymbolOrder',...
'binary', 'OutputType', 'bit', 'DecisionType',...
'hard decision');
demod_Sig=demodulate(h,noise_Sig); % Demodulate.
rx=demod_Sig;
[nErrors, BER(n)] = biterr(tx,rx);
end
% Compute theoretical performance results, for comparison.
BERtheory = berfading(EbNo,'psk',M,1);
% Plot BER results.
semilogy(EbNo,BERtheory,'b-',EbNo,BER,'r*');
legend('Theoretical BER','Empirical BER');
xlabel('EbNo (dB)'); ylabel('BER');
title('Binary DPSK over Rayleigh Fading Channel');
其BER总是0.5左右,导致最后画出的曲线几乎是一条直线,与理论值差别较大,但是不知道原因在哪里;
simulink中bit error calculation模块有个参数receive delay需要设置,在脚本语言中也需要设置吗?而且我发现即使有1个delay的话BER仍然在0.5左右。
这是一条镜像帖。来源:北邮人论坛 / matlab / #7507同步于 2010/8/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
求助:别的论坛上看到的一个rayleigh_bpsk调制解调程序
dhwl
2010/8/30镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。