資源簡介
通信資料,MATLAB OFDM MIMO 代碼。
代碼片段和文件信息
function?[transmit_signal?training]?=?add_training(transmit_signalPrefixRatio...
????N_subcN_used?Idx_usedcp_len?N_Tx_antN_tran_sym)
%?1024點FFT的前導序列
%?多條天線的訓練序列(同步幀)各兩個OFDM符號
training?=?zeros(N_subcN_tran_symN_Tx_ant);
%?產生偽隨機序列,放在訓練OFDM符號的導頻位置.
PN_seq?=?mseq(10?[1?2?6?10]?ones(110)?N_Tx_ant*3);
PN_seq?=?2*PN_seq?-?1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%?產生第1個訓練OFDM符號
Repeat?=?8;?%?為保證在時域上重復Repeat次?在頻域上兩個有數據的子載波間插(Repeat-1)個零
for?ant?=?1:N_Tx_ant
????real_part?=?PN_seq(?(ant-1)*N_Tx_ant?+?11:N_used/Repeat?);?%?截取PN序列
????imag_part?=?PN_seq(?(ant-1)*N_Tx_ant?+?21:N_used/Repeat?);
????
????tran_tmp1?=??sqrt(Repeat/2)?*?(?real_part?+?j?*?imag_part?);
????tmp1?=?[?tran_tmp1?;?zeros(Repeat-1N_used/Repeat)?];
????tmp2?=?reshape(tmp1?N_used?1);
????tmp3?=?[?tmp2(1:N_used/2)?;?flipud(tmp2(N_used/2?+?1:end))];
????training(Idx_used1ant)?=?tmp3;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%?產生第2個訓練OFDM符號?在偶數的子載波上放偽隨機序列
Repeat?=?2;
for?ant?=?1:N_Tx_ant
????tran_tmp1?=?PN_seq(?2*N_Tx_ant?+?ant1:N_used/Repeat?);?%?截取PN序列????
????tmp1?=?[?tran_tmp1?;?zeros(Repeat-1N_used/Repeat)?];
????tmp2?=?reshape(tmp1?N_used?1);
????tmp3?=?[?tmp2(1:N_used/2)?;?flipud(tmp2(N_used/2?+?1:end))];
????training(Idx_used2ant)?=?tmp3;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%?產生時域訓練序列
syn_frame?=?sqrt(N_subc)?*?ifft(?fftshift(?training??1?)?);
cp?=?syn_frame(N_subc?-?cp_len?+?1:N_subc?::);
training_frame?=?[cp;syn_frame];
training_frame?=?reshape(training_frame[1?(N_subc?+?cp_len)*N_tran_sym?N_Tx_ant]);
transmit_signal?=?[?training_frame?transmit_signal?];
評論
共有 條評論