clear;
clc;
SNR=10; % 信噪比
%fl=128; % 設置FFT長度
Ns=6; %設置一個禎結構中OFDM信號的個數
para=128;%設置并行傳輸的子載波個數
sr=250000; %符號速率
br=sr.*2;% 每個子載波的比特率
gl=32; %保護時隙的長度
fl=para;
Signal=rand(1,para*Ns*2)>0.5;%產生0,1 隨即序列,符號數為para*Ns*2
for i=1:para
for j=1:Ns*2
SigPara(i,j)=Signal(i*j);%串并變換
end
end
%QPSK調制,將數據分為兩個通道
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);
%形成復數發(fā)射數據
TrData=ich4+qch4.*sqrt(-1);
%接收機
%加入高斯白噪聲
BerSnrTable = zeros(20,3);
for snr=0:19; % = SNR + 10*log10(log2(2));
BerSnrTable(snr+1,1) = snr;
ReData = awgn(TrData,snr,'measured');
end;
%ReData=awgn(TrData,SNR,'measured');
ReData = channel(ReData,SNR);
%接收端
%移去保護間隔
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(1);
subplot(2,1,1),stem(ReData(1:10)),grid minor;
title('經過信道的信號');
xlabel('x'),ylabel('y');
subplot(2,1,2),stem(TrData(1:10)),grid;
title('經過QAM的未經過信道的信號')
figure(2);
subplot(2,1,1),stem(ReSig(1:100)),grid minor;
title('接收到的信號');
xlabel('x'),ylabel('y');
subplot(2,1,2),stem(Signal(1:100)),grid;
title('原始信號')
%figure(3);
%subplot(1,1,1),plot(ReData(1:100),TrData(1:100)),grid minor;
%title('resignal');
%xlabel('x'),ylabel('y');
%figure(4);
%subplot(1,1,1),plot(ReSig(1:100),Signal(1:100)),grid minor;
%title('resignal');
%xlabel('x'),ylabel('y');
聯系:highspeedlogic
QQ :1224848052
微信:HuangL1121
郵箱:1224848052@qq.com
網站:http://www.mat7lab.com/
網站:http://www.hslogic.com/
微信掃一掃: