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

📄 all3.m

📁 一个OFDM系统的仿真程序,可看出信噪比与误码率之间的关系.
💻 M
字号:
echo off;clear all;close all;clc;
tic
% --------------------------------------------- %
%         Parameter Declaration                 %
% --------------------------------------------- %
% Initialize the parameters
NumLoop = 1000;
NumSubc = 20;
NumCP = 8;
SyncDelay = 0;
%-----------------------------------------------
% 子载波数            128
% 位数/ 符号          2
% 帧个数              1000
% 训练符号数          0
% 循环前缀长度        8   (1/16)*T
% 调制方式            BPSK
% 多径信道数          5 
% IFFT Size          128 
% 信道最大时延        2

% --------------------------------------------- %
%                BPSK Modulation                %
% --------------------------------------------- %
% Generate the random binary stream for transmit test
BitsTx = floor(rand(1,NumLoop*NumSubc)*2);

BPSKTable = [-1 1];
SymBPSK = BPSKTable(BitsTx+1);        % Modulate (Generates BPSK symbols)

% --------------------------------------------- %
%                   IFFT                        %
% --------------------------------------------- %

SymIFFT = zeros(NumSubc,NumLoop);
SymIFFTtmp = reshape(SymBPSK,NumSubc,NumLoop);
SymIFFT = ifft(SymIFFTtmp,NumSubc,1);

% --------------------------------------------- %
%             Add cyclic prefix                 %
% --------------------------------------------- %

NumAddPrefix = NumSubc + NumCP;
SymCP = zeros(NumAddPrefix,NumLoop);
RowPrefix = (NumSubc - NumCP + 1):NumSubc;
SymCP = [SymIFFT(RowPrefix,:);SymIFFT];

% --------------------------------------------- %
%             Go through the channel            %
% --------------------------------------------- %
BerSnrTable = zeros(20,5);
for snr=0:20;  
    BerSnrTable(snr+1,1) = snr;
    BerSnrTable(snr+1,2) = 10^(BerSnrTable(snr+1,1)/10);      %将信噪比由db变换到一般数据比
    BerSnrTable(snr+1,3) = 1/sqrt(2*BerSnrTable(snr+1,2));    %信道的噪声标准差

             %       高斯信道        %
         SymCh = SymCP+randn(size(SymCP))/BerSnrTable(snr+1,2);            
             %                       %
         
           %        瑞利信道          %
           x=[0:0.01:2];
           ch=raylpdf(x,0.5);
           plot(x,ch)
             
             %                       %
         
% --------------------------------------------- %
%            Remove Guard Intervals             %
% --------------------------------------------- %
SymDeCP = SymCh((NumCP+1+SyncDelay):NumAddPrefix+SyncDelay,:);

% --------------------------------------------- %
%                     FFT                       %
% --------------------------------------------- %

SymFFTtmp = fft(SymDeCP,NumSubc,1);

% --------------------------------------------- %
%        Make Decision(Include DeBPSK)          %
% --------------------------------------------- %

BitsRx = zeros(1,NumSubc*NumLoop);
BitsRxtmp = SymFFTtmp(:).';
for m = 1:NumLoop*NumSubc
    Real =real(BitsRxtmp(1,m));
    if Real>0
        BitsRx(1,m)=1;
    else 
        BitsRx(1,m)=0;
    end
end

% --------------------------------------------- %
%          Compute Error Number/Rate            %
% --------------------------------------------- %

[Num,Ber] = symerr(BitsTx,BitsRx)
BerSnrTable(snr+1,4) = Num ;
BerSnrTable(snr+1,5) = Ber ;
end

figure(1);
plot(BerSnrTable(:,1),BerSnrTable(:,5),'*-');
xlabel('SNB(dB)');ylabel('BER');
title('高斯信道下信噪比与误码率之间的关系');

% ------------------------------------------------------------------------
time_of_sim = toc
echo on;
% --------------------------------------------- %
%                   The END                     %
% --------------------------------------------- %

⌨️ 快捷键说明

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