ofdm_mod.m
上传用户:look542
上传日期:2009-06-04
资源大小:784k
文件大小:1k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function transmit_signal = ofdm_mod(pilot_added,PrefixRatio,N_subc,N_used,N_sym_ts,N_ts,...
  2.     Idx_used,N_Tx_ant,AddChFreq)
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. % 实现OFDM的基本调制
  5. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  6. if ~AddChFreq
  7.     
  8.     transmit_signal = zeros(1,N_subc*N_sym_ts*N_ts*(1+PrefixRatio),N_Tx_ant);
  9.     cp_len = round(PrefixRatio*N_subc);
  10.     
  11.     for ant = 1:N_Tx_ant
  12.         % ifft乘sqrt(N_subc)以保证变换前后能量不变
  13.         % 我们假设频域的样点是在[-fs/2  fs/2]中的, fs是采样频率
  14.         % 使用fftshift函数目的是使得变换前的频域样点转换到[0 fs]中,以满足IFFT变换的要求
  15.         ofdm_frame = sqrt(N_subc) * ifft( fftshift( pilot_added(:,:,ant), 1 ) );
  16.         cp = ofdm_frame(N_subc - cp_len + 1:N_subc ,:);
  17.         ofdm_frame = [cp;ofdm_frame];
  18.         % 加窗处理
  19.         
  20.         % 转换为串行信号
  21.         transmit_signal(:,:,ant) = reshape( ofdm_frame, 1, N_subc * N_sym_ts * N_ts *(1+PrefixRatio) );    
  22.     end
  23.     
  24. else
  25.     transmit_signal = NaN;  % 如果频域加信道,transmit_signal不存在. 赋值NaN以防止警告
  26. end