📄 all3.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 + -