% %%参数定义%% %NumLoop=1000;NumSubc=128;NumCP=8;SyncDelay=0;%子载波数 128%位数/符号 2%符号数/载波 1000%训练符号数 0%循环前缀长度 8(1/16)*T%调制方式 4-QAM%多径信道数 3%IFFTSize 128%信道最大时延2% %%QAMMODULATION%% %%GeneratetherandombinarystreamfortransmittestBitsTx=floor(rand(1,NumLoop*NumSubc)*2);%Modulate(GeneratesQAMsymbols)%input:BitsTx(1,NumLoop*NumSubc);output:SymQAM(NumLoop,NumSubc/2)SymQAMtmp=reshape(BitsTx,2,NumLoop*NumSubc/2).';SymQAMtmptmp=bi2de(SymQAMtmp,2,'left-msb');%QAMmodulation%00->-1-i,01->-1+i,10->1-i,11->1+i%利用查表法进行QAM星座映射QAMTable=[-1-i-1+i1-i1+i];SymQAM=QAMTable(SymQAMtmptmp+1);% %%IFFT%% %%input:SymQAM(NumLoop,NumSubc/2);output:SymIFFT(NumSubc,NumLoop)SymIFFT=zeros(NumSubc,NumLoop);SymIFFTtmp=reshape(SymQAM,NumSubc/2,NumLoop);SymIFFTtmptmp=zeros(NumSubc,NumLoop);SymIFFTtmptmp(1,:)=real(SymIFFTtmp(1,:));%实数SymIFFTtmptmp(NumSubc/2+1,:)=imag(SymIFFTtmp(1,:));% 实数%构造共轭对称矩阵SymIFFTtmptmp(2:NumSubc/2,:)=SymIFFTtmp(2:NumSubc/2,:);SymIFFTtmptmp((NumSubc/2+2):NumSubc,:)=flipdim(conj(SymIFFTtmp(2:NumSubc/2,:)),1);SymIFFT=ifft(SymIFFTtmptmp,NumSubc,1);% %% Addcyclicprefix %% %%input:SymIFFT(NumSubc,NumLoop);output:SymCP(NumSubc+NumCP,NumLoop)NumAddPrefix=NumSubc+NumCP;SymCP=zeros(NumAddPrefix,NumLoop);RowPrefix=(NumSubc-NumCP+1):NumSubc;SymCP=[SymIFFT(RowPrefix,:);SymIFFT];% %% Gothroughthechannel %% %%input:SymCP(NumSubc+NumCP,NumLoop);output:SymCh(1,(NumSubc+NumCP)*NumLoop)SymCh=zeros(1,(NumSubc+NumCP)*NumL
OFDM-MATLAB-仿真程序 来自淘豆网m.daumloan.com转载请标明出处.