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

代碼片段和文件信息
clear?all
%%%%%%%%%%%%%?參數設置部分?%%%%%%%%%%%%%%%%%
Nsp=52;?????????????%系統子載波數(不包括直流載波)
Nfft=64;????????????%?FFT?長度
Ncp=16;?????????????%?循環前綴長度
Ns=Nfft+Ncp;????????%?1個完整OFDM符號長度
noc=53;?????????????%?包含直流載波的總的子載波數
Nd=6;???????????????%?每幀包含的OFDM符號數(不包括訓練符號)
M1=4;???????????????%?QPSK調制
M2=16;??????????????%?16-QAM調制
sr=250000;??????????%?OFDM符號速率
EbNo=0:2:30;?????? %?歸一化信噪比
Nfrm=100;?????????????????????????%?每種信噪比下的仿真幀數
ts=1/sr/Ns;?????????????????????????%?OFDM符號抽樣時間間隔???產生一個點所需要的時間
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個采樣周期
%訓練符號頻域數據采用802.11a中的長訓練符號數據?
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);???????????????????%?前導重排后的數據?后26個拿到前面
Preamble1(39:end)=Preamble(1:26);
preamble1=ifft(Preamble1);??????????????????????????%?訓練符號時域數據
preamble1=[preamble1(Nfft-Ncp+1:end)?preamble1];????%?加入循環前綴
%%%%%%%%%%%%%%%%%%%%%?仿真循環?%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for?ii=1:length(EbNo)
?????%**************************發射機部分?*****************************
????msg1=randsrc(NspNd*Nfrm[0:M1-1]);?????????%?QPSK信息數據?/randsrc?產生均布數組
????msg2=randsrc(NspNd*Nfrm[0:M2-1]);?????????%?16-QAM信息數據
????data1=pskmod(msg1M1pi/4);?????????????????%?QPSK調制
????data2=qammod(msg2M2)/sqrt(10);?????????????%?16-QAM調制并歸一化
????data3=zeros(NfftNd*Nfrm);??????????????????%?根據FFT要求,對數據重排
????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];??????%?加入循環前綴
????data4=[data4(Nfft-Ncp+1:end:);data4];
%?????data3=[zeros(16600);data3];???????%?不加循環前綴
%?????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);????????????????%?加入訓練符號
????data6=data5;???%data6存第二路數據
????
????%data7=data5;???%data7存第三路數據?
????
????
????for?indx=1:Nfrm%把訓練符號加入到數據前面,組成訓練和符號的結合體,一共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經ifft后的數據
?????????
????????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經ifft后的數據
????????
%?????????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??新建文件夾\
評論
共有 條評論