⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transmitter.m

📁 OFDM信号的循环谱密度
💻 M
字号:
function output = transmitter(PSDU,TXVECTOR)
% baseband transmitter
% PSDU: row vector of PHY sublayer service data unit
% TXVECTOR: structure of TXVECTOR parameters
% output: row vector of time-domain signal of a frame

switch TXVECTOR.DATARATE
    case 6
        Ncbps = 48; % coded bits per OFDM symbols
    case 12
        Ncbps = 96;
    otherwise
        error('parameter not supported');
end;

% generate SIGNAL field
signal = signal_generator(TXVECTOR); % SIGNAL field generation
signal_coded = encoder(signal,[],'SIGNAL_FLAG'); % convolutional encoding
signal_intrlv = interleaver(signal_coded,[],'SIGNAL_FLAG'); % interleaving
signal_map = mapper(signal_intrlv,[],'SIGNAL_FLAG'); % mapping

% generate DATA field
data = data_generator(PSDU,TXVECTOR); % DATA field generation & scrambling
data_coded = reshape(encoder(data,TXVECTOR),Ncbps,[]).'; % Ncbps bits a row
data_intrlv = interleaver(data_coded,TXVECTOR); % interleaving
data_map = mapper(data_intrlv,TXVECTOR); % mapping

% modulating SIGNAL and DATA field
sigdat_pilot = pilot_inserter([signal_map;data_map]); % pilot insertion
sigdat_ifft = ofdm_modulator(sigdat_pilot); % inverse Fourier transform
sigdat_gi = gi_inserter(sigdat_ifft); % guard interval insertion

% concatenating short training symbols, long training symbols, SIGNAL
% field, DATA field into a single time-domain signal
len = 320+80*size(sigdat_gi,1)+1; % total length of time-domain signal
output = zeros(1,len);
output = output+[short_generator(),zeros(1,len-161)];
output = output+[zeros(1,160),long_generator(),zeros(1,len-321)];

num = size(sigdat_gi,1); % number of OFDM symbols in SIGNAL and DATA field

for i = 1:num
    output = output+[zeros(1,320+80*(i-1)),sigdat_gi(i,:),...
        zeros(1,80*(num-i))];
end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -