?? ofdm.m
字號:
clear;clc;
SNR=10;%信噪比取值,dB為單位
fl=128;%設置FFT長度
Ns=6;%設置一個幀結構中OFDM信號的個數
para=128;%設置并行傳輸的子載波個數
sr=250000;
br=sr.*2;
gl=32;%設置保護時隙的長度
Signal=rand(1,para*Ns*2)>0.5;
for i=1:para
for j=1:Ns*2
SigPara(i,j)=Signal(i*j);
end
end
for j=1:Ns
ich(:,j)=SigPara(:,2*j-1);
qch(:,j)=SigPara(:,2*j);
end
kmod=1./sqrt(2);
ich1=ich.*kmod;
qch1=qch.*kmod;
x=ich1+qch1.*sqrt(-1);
y=ifft(x);
ich2=real(y);
qch2=imag(y);
%插入保護間隙
ich3=[ich2(fl-gl+1:fl,:);ich2];
qch3=[qch2(fl-gl+1:fl,:);qch2];
%并串轉換
ich4=reshape(ich3,1,(fl+gl)*Ns);
qch4=reshape(qch3,1,(fl+gl)*Ns);
%形成復數發射數據
TrData=ich4+qch4.*sqrt(-1);
%接收機
%加入高斯白噪聲
ReData=awgn(TrData,SNR,'measured');
%接收端
%移去保護時隙
idata=real(ReData);
qdata=imag(ReData);
idata1=reshape(idata,fl+gl,Ns);
qdata1=reshape(qdata,fl+gl,Ns);
idata2=idata1(gl+1:gl+fl,:);
qdata2=qdata1(gl+1:gl+fl,:);
%FFT
Rex=idata2+qdata2*sqrt(-1);
ry=fft(Rex);
ReIChan=real(ry);
ReQChan=imag(ry);
ReIChan=ReIChan/kmod;
ReQChan=ReQChan/kmod;
%QPSK逆映射
for j=1:Ns
RePara(:,2*j-1)=ReIChan(:,j);
RePara(:,2*j)=ReQChan(:,j);
end
Resig=reshape(RePara,1,para*Ns*2);
%符號抽樣判決
ReSig=Resig>0.5;
figure(2)
subplot(211),stem(ReSig(1:20)),grid;subplot(212),stem(Signal(1:20)),grid
%End of script file.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -