資源簡介
這是幫別人做畢業(yè)設(shè)計的代碼,主要是驗證OFDM是如何抗多徑干擾的,代碼采用了802.11a標準,采用了兩種調(diào)制方式,QPSK,16QAM做的仿真,是可以運行的,最終有運行figure,

代碼片段和文件信息
clear?all
%%%%%%%%%%%%%?參數(shù)設(shè)置部分?%%%%%%%%%%%%%%%%%
Nsp=52;?????????????%系統(tǒng)子載波數(shù)(不包括直流載波)
Nfft=64;????????????%?FFT?長度
Ncp=16;?????????????%?循環(huán)前綴長度
Ns=Nfft+Ncp;????????%?1個完整OFDM符號長度
noc=53;?????????????%?包含直流載波的總的子載波數(shù)
Nd=6;???????????????%?每幀包含的OFDM符號數(shù)(不包括訓(xùn)練符號)
M1=4;???????????????%?QPSK調(diào)制
M2=16;??????????????%?16-QAM調(diào)制
sr=250000;??????????%?OFDM符號速率
EbNo=0:2:30;?????? %?歸一化信噪比
Nfrm=100;?????????????????????????%?每種信噪比下的仿真幀數(shù)
ts=1/sr/Ns;?????????????????????????%?OFDM符號抽樣時間間隔???產(chǎn)生一個點所需要的時間
t=0:ts:(Ns*(Nd+1)*Nfrm-1)*ts;??????%?抽樣時刻
fd=100;?????????????????????????????%?最大多普勒頻移
h=rayleigh(fdt);???????????????????%?生成單徑Rayleigh衰落信道
h1=sqrt(2/3)*h;
h2=sqrt(1/3)*rayleigh(fdt);
h2=[zeros(14)?h2(1:end-4)];%??延時4個采樣周期
h3=sqrt(3/4)*rayleigh(fdt);%加了第三徑
h3=[zeros(18)?h3(1:end-8)];%??延時8個采樣周期
%訓(xùn)練符號頻域數(shù)據(jù)采用802.11a中的長訓(xùn)練符號數(shù)據(jù)?
Preamble=[1?1?-1?-1?1?1?-1?1?-1?1?1?1?1?1?1?-1?-1?1?1?-1?1?-1?1?1?1?1?...
????1?-1?-1?1?1?-1?1?-1?1?-1?-1?-1?-1?-1?1?1?-1?-1?1?-1?1?-1?1?1?1?1];
Preamble1=zeros(1Nfft);
Preamble1(2:27)=Preamble(27:end);???????????????????%?前導(dǎo)重排后的數(shù)據(jù)?后26個拿到前面
Preamble1(39:end)=Preamble(1:26);
preamble1=ifft(Preamble1);??????????????????????????%?訓(xùn)練符號時域數(shù)據(jù)
preamble1=[preamble1(Nfft-Ncp+1:end)?preamble1];????%?加入循環(huán)前綴
%%%%%%%%%%%%%%%%%%%%%?仿真循環(huán)?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for?ii=1:length(EbNo)
?????%**************************發(fā)射機部分?*****************************
????msg1=randsrc(NspNd*Nfrm[0:M1-1]);?????????%?QPSK信息數(shù)據(jù)?/randsrc?產(chǎn)生均布數(shù)組
????msg2=randsrc(NspNd*Nfrm[0:M2-1]);?????????%?16-QAM信息數(shù)據(jù)
????data1=pskmod(msg1M1pi/4);?????????????????%?QPSK調(diào)制
????data2=qammod(msg2M2)/sqrt(10);?????????????%?16-QAM調(diào)制并歸一化
????data3=zeros(NfftNd*Nfrm);??????????????????%?根據(jù)FFT要求,對數(shù)據(jù)重排
????data4=zeros(NfftNd*Nfrm);
????data3(2:27:)=data1(27:end:);
????data3(39:end:)=data1(1:26:);
????data4(2:27:)=data2(27:end:);
????data4(39:end:)=data2(1:26:);
????????
??%??clear?data1?data2;???????????????????????????%?清除不需要的臨時變量
????data3=ifft(data3);??????????????????????????%?IFFT變換
????data4=ifft(data4);
????data3=[data3(Nfft-Ncp+1:end:);data3];??????%?加入循環(huán)前綴
????data4=[data4(Nfft-Ncp+1:end:);data4];
%?????data3=[zeros(16600);data3];???????%?不加循環(huán)前綴
%?????data4=[zeros(16600);data4];
??
????
????spow1=norm(data3‘fro‘).^2/(Nsp*Nd*Nfrm);???%?計算符號能量
????spow2=norm(data4‘fro‘).^2/(Nsp*Nd*Nfrm);
????????
????data5=zeros(Ns(Nd+1)*Nfrm);????????????????%?加入訓(xùn)練符號
????data6=data5;???%data6存第二路數(shù)據(jù)
????
????%data7=data5;???%data7存第三路數(shù)據(jù)?
????
????
????for?indx=1:Nfrm%把訓(xùn)練符號加入到數(shù)據(jù)前面,組成訓(xùn)練和符號的結(jié)合體,一共100個
????????data5(:(indx-1)*(Nd+1)+1)=preamble1.‘;
????????data5(:(indx-1)*(Nd+1)+2:indx*(Nd+1))=data3(:(indx-1)*Nd+1:indx*Nd);%data3是QPSK經(jīng)ifft后的數(shù)據(jù)
?????????
????????data6(:(indx-1)*(Nd+1)+1)=preamble1.‘;
????????data6(:(indx-1)*(Nd+1)+2:indx*(Nd+1))=data4(:(indx-1)*Nd+1:indx*Nd);%data4是16QAM經(jīng)ifft后的數(shù)據(jù)
????????
%?????????data7(:(indx-1)*(Nd+1)+1)=preamble1.‘;
%?????????data7(:(indx-1
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????9639??2013-04-13?17:08??新建文件夾\ofdmcode.m
?????文件????????1156??2010-07-31?14:01??新建文件夾\rayleigh.m
?????目錄???????????0??2013-05-05?20:41??新建文件夾\
評論
共有 條評論