資源簡介
ofdm完整的收發程序,包括編碼,調制,接收,補償等
代碼片段和文件信息
%%scr?
close?all;
clear?all;
Nfft=128*2;??????????????????????????%256個子載波?進行256點的FFT
Ng=0;%32*2;?????????????????????????????%64cp
Nzero=0;
Nzerosub=floor((Nfft*0.5)/2);????????%for?padding???????
Ntotal=Ng+2*Nzero+Nfft;??????????????%320
Constellation_num=16;%%星座圖
Symbol_num=1;%20;???????????????????????%able
N=Symbol_num*Nfft;???????????????????%total?所有幀所有點
Ns=Symbol_num*Ntotal;
Pnum_least(1:Symbol_num)=10000;
Pnum(1:Symbol_num)=0;
Ndata_o=Symbol_num*(Nfft/2-Nfft/16/2);
sita=0;
sita1=1;
sita2=0;
sita3=0;?%?測試變量
sign=1;
%for?filter
LHBF1=23;?%?半帶濾波器長度
%?I1=zeros(1Ndata_o);
%?I2=zeros(1Ndata_o);
%?I3=zeros(1Ndata_o);
%?I4=zeros(1Ndata_o);
CHBF1(1:LHBF1)=0;
InsertGIout(1:Symbol_num1:Ntotal)=0;
%?半帶濾波器系數
fid2=fopen(‘HBF23.txt‘‘r‘);
CHBF1=fscanf(fid2‘%f‘);
fclose(fid2);
IHBF1in(1:LHBF1)=0;
QHBF1in(1:LHBF1)=0;?%?進行半帶濾波時的緩沖區
IHBF1out(1:2*Ns)=0;
QHBF1out(1:2:Ns)=0;?%?兩倍上采樣后時域數據的存放數組
????????????????????%?I、Q分別表示I、Q兩路信號
ii=1;
k=1;
k1=1;
k2=1;
k3=1;
k4=1;
k5=1;
t=1;
t2=1;
t3=1;
SoutI(1:Ns)=0;
SoutQ(1:Ns)=0;?%?沒有進行兩倍上采樣之前的時域數據存放數組
???????????????%?I、Q分別表示I、Q兩路信號
IFFToutI(1:Symbol_num1:Nfft)=0;
IFFToutQ(1:Symbol_num1:Nfft)=0;
IFFToutIQ(1:Symbol_num1:Nfft)=0;
IFFToutIQS(1:Symbol_num1:Nfft)=0;?%?進行IFFT運算后OFDM符號存放數組
???????????????????????????????????%?I、Q分別表示I、Q兩路信號
???????????????????????????????????%?IQ表示復數信息
FFTout_t_1(1:Symbol_num1:2*Nfft)=0;
FFTout_t_2(1:Symbol_num1:4*Nfft)=0;
FFTout_t_3(1:Symbol_num1:8*Nfft)=0;?%?測試變量
ii=1;
M_pilot=8;
subcarrier(1:N)=0;
subcarriercom(1:N)=0;
%train_word
%?獲得短前導字頻域信息
fid3=fopen(‘data_I_train_word_re_i0_256.txt‘‘r‘);
I_train_word_re_temp=fscanf(fid3‘%f‘)
fclose(fid3);
I_train_word_re?=?(I_train_word_re_temp)‘;
fid3=fopen(‘data_Q_train_word_re_i0_256.txt‘‘r‘);
Q_train_word_re_temp=fscanf(fid3‘%f‘)
fclose(fid3);
Q_train_word_re?=?(Q_train_word_re_temp)‘;
%?獲得一個長前導字頻域信息
fid3=fopen(‘data_I_train_word_1_i0_256.txt‘‘r‘);
I_train_word_1_temp=fscanf(fid3‘%f‘)
fclose(fid3);
I_train_word_1?=?(I_train_word_1_temp)‘;
fid3=fopen(‘data_Q_train_word_1_i0_256.txt‘‘r‘);
Q_train_word_1_temp=fscanf(fid3‘%f‘)
fclose(fid3);
Q_train_word_1?=?(Q_train_word_1_temp)‘;
%?獲得二個長前導字頻域信息
fid3=fopen(‘data_I_train_word_2_i0_256.txt‘‘r‘);
I_train_word_2_temp=fscanf(fid3‘%f‘)
fclose(fid3);
I_train_word_2?=?(I_train_word_2_temp)‘;
fid3=fopen(‘data_Q_train_word_2_i0_256.txt‘‘r‘);
Q_train_word_2_temp=fscanf(fid3‘%f‘)
fclose(fid3);
Q_train_word_2?=?(Q_train_word_2_temp)‘;
l=1;
%%%%%%%%%%%%%%^^^^^^^^^^^^^^^^^^^
%window?sequence
%?加窗處理的參數設置
wind=zeros(1(Nfft+Ng));
windo=hamming(Nfft+Ng);
wind((Ng+1):Nfft)=windo((Ng+1):Nfft);
wind(1:Ng)=windo(Ng+1);
wind((Nfft+1):(Nfft+Ng))=windo(Nfft);
%%%%%%%%%%%%%%%%^^^^^^^^^^^^^^^^^^^
stst=1;
%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$
%?獲得隨機數,當作用戶信息,調制到各個子載波上
fid3=fopen(‘I1.txt‘‘r‘);
I1=fscanf(fid3‘%d‘);
fclose(fi
- 上一篇:地雜波仿真程序
- 下一篇:基于Simuli
nk的3路頻分復用仿真
評論
共有 條評論