?? channel.m
字號:
function[x,Rhh]=channel(traniseq,f)
%本函數(shù)輸入?yún)?shù)traniseq為時域的樣值,f為信道類型,x為輸出為過信道后的時域樣值, Rhh為信道自相關(guān)矩陣,輸入輸出都為行向量
[h,Rhh]=channelcreate(f);%產(chǎn)生信道的頻域樣值h,和其自相關(guān)矩陣Rhh
samplenumber=length(traniseq);%計算樣值數(shù)目
sybolnumber=samplenumber/80-4; %計算除去幀頭的ofdm符號數(shù)目
traniseqM=reshape(traniseq(321:samplenumber),80,sybolnumber);%產(chǎn)生數(shù)據(jù)矩陣
traniseqM=traniseqM(17:1:80,:);%去除循環(huán)前綴
FtraniseqM=fft(traniseqM);%轉(zhuǎn)到頻域
hM=mulivector(h.',sybolnumber);%產(chǎn)生信道矩陣
FtraniseqM_Passchannel=FtraniseqM.*hM ;%在頻域過信道
TtraniseqM_Passchannel=ifft(FtraniseqM_Passchannel);%轉(zhuǎn)到時域
CTsequence=zeros(80,sybolnumber); %定義加循環(huán)前綴矩陣
CTsequence(1:1:16,:)=TtraniseqM_Passchannel(49:1:64,:);
CTsequence(17:1:80,:)=TtraniseqM_Passchannel(1:1:64,:);%加循環(huán)前綴
data=(CTsequence(:)).'; %得到數(shù)據(jù)流
%下面得出幀頭部分過信道的時域輸出
%(1)產(chǎn)生短序列
shortTRFEQ=sqrt(13/6)*[0,0,1+j,0,0,0,-1-j,0,0,0,1+j,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,0,0,0,0,-1-j,0,0,0,-1-j,0,0,0,1+j,0,0,0,1+j,0,0,0,1+j,0,0,0,1+j,0,0];
%產(chǎn)生短序列的頻域序列
OshortTRFEQ=[0,shortTRFEQ(28:1:53),0,0,0,0,0,0,0,0,0,0,0,shortTRFEQ(1:1:26)];%補零后的短序列的頻域序列
OshortTRFEQ=OshortTRFEQ.*(h.'); %過信道
shortTRTIME=ifft(OshortTRFEQ);%產(chǎn)生時域的序列
shortpreamble=[shortTRTIME(1)*0.5,shortTRTIME(2:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1:1:16),shortTRTIME(1)*0.5];
%產(chǎn)生短序列時域表達式并加窗
%(2)產(chǎn)生長序列
longTRFEQ=[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,0,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];%產(chǎn)生長序列的頻域序列
OlongTRFEQ=[0,longTRFEQ(28:1:53),0,0,0,0,0,0,0,0,0,0,0,longTRFEQ(1:1:26)];%補零后的長序列的頻域序列
OlongTRFEQ=OlongTRFEQ.*(h.');%%過信道
longTRTIME=ifft(OlongTRFEQ);%產(chǎn)生時域的序列
TG12=[longTRTIME(33:1:64)];%產(chǎn)生循環(huán)前綴
longpreamble=[TG12(1)*0.5,TG12(2:1:32),longTRTIME,longTRTIME,longTRTIME(1)*0.5];%%產(chǎn)生長序列時域表達式并加窗
%(3)將長短序列合并成一個完整的序列序列
preamble=[shortpreamble(1:1:160),shortpreamble(161)+longpreamble(1),longpreamble(2:1:161)];%向量為321個,
frame_head=preamble(1:1:320);
%**************************************************************************
x=[frame_head data];
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -