📄 cdmasim.m
字号:
%File CDMAsim.m
function [BER,ErrorRun]=CDMAsim(N,SF,EbNo,NumInterference,MPathDelay,Kfactor_dB)
rand('state',sum(100*clock));randn('state',sum(100*clock));
NIterate=1e3;
NumberOfIterations=ceil(N/NIterate);
ErrorState=0;ErrorRun=[];RunCount=1;
Kfactor=10^(EbNo/10);
EbNolinear=10^(EbNo/10);
MPathComponents=length(MPathDelay);
%
%Design IIR filter for fading signal
FilterOrder=4;Ripple=0.5;BW=0.01;
[b,a]=cheby1(FilterOrder,Ripple,BW);
%
%Generate spreading sequence
%
DesiredSequence=MSequence(SF+1);%desired signal
M=length(DesiredSequence);
%
%The simulation loop begins here
%
for cnt=1:NumberOfIterations
%
%generate and spread symbols for desired user
%
DesiredSymbols=sign(rand(1,NIterate)-0.5);
DesiredChips=reshape(DesiredSequence.'*DesiredSymbols,1,M*NIterate);
%
%Generate noise
%
NoiseAmplitude=sqrt(SF/(2*EbNolinear));
DesiredNoise= NoiseAmplitude*randn(1,M*NIterate+0);
%
%add signal and noise
%
IncomingSignal=DesiredChips+DesiredNoise;
%
%Receive and detect incoming signal
%
IncomingChips=reshape(IncomingSignal,M,NIterate);
DespreadSymbols=DesiredSequence*IncomingChips;
DetectedSymbols=sign(DespreadSymbols);
%
%compute Bit Error Rate
%
ErrorVector=0.5*abs(DetectedSymbols-DesiredSymbols);
ErrorIterate(cnt)=sum(ErrorVector);
BERIterate(cnt)=ErrorIterate(cnt)/NIterate;
for k=1:NIterate
if (ErrorVector(k)==0) & (ErrorState==0)
RunCount=RunCount+1;
elseif (ErrorVector(k)==1) & (ErrorState==1)
ErrorRun=[ErrorRun RunCount];
RunCount=1;ErrorState=0;
elseif (ErrorVector(k)==1) &(ErrorState==0)
ErrorRun=[ErrorRun RunCount];
RunCount=1;ErrorState=1;
elseif (ErrorVector(k)==1) & (ErrorState==1)
RunCount=RunCount+1;
else
s1=sprintf('ErrorVector(%d)=%d,ErrorState=%d! Unexpected Condition!');
%error(s1);
end
end
end
Errors=sum(ErrorIterate);
BER=mean(BERIterate);
ErrorRun=[ErrorRun RunCount];
%End of function file
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -