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

📄 ss.m

📁 通过Monte Carlo仿真
💻 M
字号:
function [p]=ss(snr_in_dB,Lc,A,w0)
%[p]=ss(snr_in_dB,Lc,A,w0)
% ss finds the measured error rate,the function
% that returns the measured probability of error for the
% given value of the snr_in_dB,Lc,A and w0

snr=10^(snr_in_dB/10);
sgma=1; % noise standard deviation is fixed
Eb=2*sgma^2*snr; %signal level required to achieve the 
                 % given signal to noise ratio
E_chip=Eb/Lc; % energy per chip
N-10000;      % number of bits transmitted
% the generation of the data,noise,interference,decoding process and error
%counting is performed all together in order to decrease the run time of 
% the program. this is accomplished by avoiding very large sized vectors.

num_of_err=0;
for i=1:N,
    %generate the next data bit
    temp=rand;
    if(temp<0.5)
        data=-1;
    else
        data=1;
    end;
    %repeat it Lc times,i.e.divide it into chips
    for j=1:Lc,
        repeated_data(j)=data;
    end;
    %pn sequence for the duration of the bit is generated next
    for j=1:Lc,
        temp=rand;
        if(temp<0.5)
            pn_seq(j)=-1;
        else
            pn_seq(j)=1;
        end;
    end;
    %the transmitted signal is
    trans_sig=sqrt(Ec_chip)*repeated_data.*pn_seq;
    %AWGN with variance sgma^2
    noise=sgma*randn(1,Lc);
    %interferece
    n=(i-1)*Lc+1:i*Lc;
    interference=A*sin(w0*n);
    %received signal
    rec_sig=trans_sig+noise+interference;
    %determine the decision variable from the received signal
    temp=rec_sig.*pn_seq;
    decision_variable=sum(temp);
    %making decision
    if (decision_variable<0),
        decision=-1;
    else
        decision=1;
    end;
    %if it is an error,increment the error counter
    if (decision~=data),
        num_of_err=num_of_err+1;
    end;
end;
%then the measured error probability is
p=num_of_err/N;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -