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

📄 bpsk_sim_function.m

📁 BPSK仿真程序,通过输入有效数值
💻 M
字号:

function [BER,Errors]=BPSK_sim_function(N,EbNo,delay,FilterSwitch);
%相干解调

SamplesPerSymbol=20 ;
BlockSize=5000;

NoiseSigma=sqrt(SamplesPerSymbol/(2*EbNo));
DetectedSymbols=zeros(1,BlockSize);
NumberOfBlocks=floor(N/BlockSize);

% ButterWorths 滤波器
%     [BTx,ATx]=butter(5,2/SamplesPerSymbol);
%     [TxOutput,TxFilterState]=filter(BTx,ATx,0);

% Raised_Cosine 滤波器
    alpha=0.4;   %滚降系数
    T=1/2400;    %码率
    t=[-3*T:2.3*T/7:3*T];
    b=sinc(t./T).*(cos(pi*alpha*t./T)./(1-4*alpha^2*t.^2/T^2))/sqrt(10^0.9740296);
    [TxOutput,TxFilterState] = filter(b,1,0);  % Desired signal
    [RxInput,RxFilterState] = filter(b,1,0);  % Desired signal
%     alpha2=0.2;   %滚降系数
%     b2=sinc(t./T).*(cos(pi*alpha*t./T)./(1-4*alpha^2*t.^2/T^2))/sqrt(10^0.9740296);
     


BRx=ones(1,SamplesPerSymbol);
ARx=1;
Errors=0;


[SymbolSamples,TxSymbols]=random_binary(BlockSize,SamplesPerSymbol);
if FilterSwitch==0
    TxOutput=SymbolSamples;
else
    [TxOutput,TxFilterState]=filter(b,1,SymbolSamples,TxFilterState);
%     [TxOutput,TxFilterState]=filter(BTx,ATx,SymbolSamples,TxFilterState);
end

R=2400;
fs=SamplesPerSymbol*R;
ts=1/fs;

KNN=1:SamplesPerSymbol*BlockSize;
TxOutput=TxOutput.*cos(2*pi*4800*KNN*ts)*sqrt(2);            %exp(i*2*pi*480*KNN*ts)*exp(i*0.1*pi);

NoiseSamples=NoiseSigma*randn(size(TxOutput));

RxInput=TxOutput+NoiseSamples;

RxInput=RxInput.*cos(2*pi*4800*KNN*ts)*sqrt(2);

[RxInput,RxFilterState]=filter(b,1,RxInput,RxFilterState);

IntegratorOutput=filter(BRx,ARx,RxInput);

for k=1:BlockSize
    m=k*SamplesPerSymbol+2*delay;
    if (m<length(IntegratorOutput))
        DetectedSymbols(k)=(1-sign(IntegratorOutput(m)))/2;
        if (DetectedSymbols(k)~=TxSymbols(k))
            Errors=Errors+1;
        end
    end
end


BER=Errors./(BlockSize);
















⌨️ 快捷键说明

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