天天看點

【OFDM通信】基于matlab OFDM通信系統仿真【含Matlab源碼 1005期】

二、OFDM簡介

【OFDM通信】基于matlab OFDM通信系統仿真【含Matlab源碼 1005期】

三、部分源代碼

%本程式用于OFDM基本原理的仿真,資料采用QPSK調制
clear all;
close all;
clc;
SubCarryN=128;%子載波數
fftLen=128;%FFT長度為128
SymbN=6;%一幀中OFDM符号個數
GuardLen=32;%保護時隙的長度
SNR=50;%信噪比取值,dB為機關 

SignalLen=SubCarryN*SymbN*2;%輸入比特序列長度=子載波數x每載波符号數x每符号比特數
Signal=round(rand(1,SignalLen));%輸出待調制的二進制比特流

for i=1:SubCarryN
    for j=1:SymbN*2
       ParaBitSig(i,j)=Signal(i*j);%串并轉換為行數SubCarryN,列數2*SymbN        
    end
end
%進行QPSK資料調制,将資料分為兩個通道
for j=1:SymbN
    ich(:,j)=ParaBitSig(:,2*j-1);%同相分量
    qch(:,j)=ParaBitSig(:,2*j);%正交分量
end
kmod=1./sqrt(2);
ich0=ich.*2-1;
qch0=qch.*2-1;
ich1=ich0.*kmod;
qch1=qch0.*kmod;
x=ich1+qch1.*sqrt(-1);%産生複信号

y=ifft(x);%通過傅裡葉反變換,将頻域資料轉換為時域資料
ich2=real(y);%I信道取變換後的實部
qch2=imag(y);%Q信道取變換後的虛部

%插入保護間隔
ich3=[ich2(fftLen-GuardLen+1:fftLen,:);ich2];
qch3=[qch2(fftLen-GuardLen+1:fftLen,:);qch2];

%并串轉換
ich4=reshape(ich3,1,(fftLen+GuardLen)*SymbN);
qch4=reshape(qch3,1,(fftLen+GuardLen)*SymbN);
%形成複數發射資料
TrData=ich4+qch4.*sqrt(-1);
%接收機部分
%加入高斯白噪聲
ReData=awgn(TrData,SNR,'measured');
%接收端
%移去保護時隙
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,fftLen+GuardLen,SymbN);
qdata1=reshape(qdata,fftLen+GuardLen,SymbN);
idata2=idata1(GuardLen+1:GuardLen+fftLen,:);
qdata2=qdata1(GuardLen+1:GuardLen+fftLen,:);

%FFT
Rex=idata2+qdata2*sqrt(-1);
ry=fft(Rex);
%QPSK解調
ReIChan=real(ry);
ReQChan=imag(ry);
ReIChan1=ReIChan/kmod;
ReQChan1=ReQChan/kmod;
ReIChan0=(ReIChan1+1)/2;
ReQChan0=(ReQChan1+1)/2;
%QPSK逆映射
for j=1:SymbN
    RePara(:,2*j-1)=ReIChan0(:,j);
    RePara(:,2*j)=ReQChan0(:,j);
end
ReSig=reshape(RePara',1,SubCarryN*SymbN*2);
%符号抽樣判決
Resig=ReSig>0.5;
%畫圖      

四、運作結果

【OFDM通信】基于matlab OFDM通信系統仿真【含Matlab源碼 1005期】
【OFDM通信】基于matlab OFDM通信系統仿真【含Matlab源碼 1005期】
【OFDM通信】基于matlab OFDM通信系統仿真【含Matlab源碼 1005期】

五、matlab版本及參考文獻

​1 matlab版本​

2014a

​2 參考文獻​

[1] 沈再陽.精通MATLAB信号處理[M].清華大學出版社,2015.

[2]高寶建,彭進業,王琳,潘建壽.信号與系統——使用MATLAB分析與實作[M].清華大學出版社,2020.

繼續閱讀