⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdmasim.m

📁 CDMA的MATLAB仿真
💻 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 + -