资源简介

OFDM发送端的MATLAB源代码 可出频域时域图和一个周期的载波时域图

资源截图

代码片段和文件信息

IFFT_bin_length = 1024; % number of IFFT bin
carrier_count = 200; % carrier number
bits_per_symbol = 2; % binary number for each symbol
symbols_per_carrier = 50; % symbol used for each carriers 
baseband_out_length=carrier_count*symbols_per_carrier*bits_per_symbol;% total number of bit
carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2));
conjugate_carriers = IFFT_bin_length - carriers + 2; 
%--------------------transmitter--------------
baseband_out = round(rand(1baseband_out_length)); %generate random binary stream 
convert_matrix=reshape(baseband_outbits_per_symbollength(baseband_out)/bits_per_symbol); 
for k = 1:(length(baseband_out)/bits_per_symbol) modulo_baseband(k) = 0; 
    for i = 1:bits_per_symbol modulo_baseband(k)=modulo_baseband(k)+convert_matrix(ik)*2^(bits_per_symbol-i); 
    end
end
% --------------S/P transform ------------------
carrier_matrix = reshape(modulo_baseband carrier_count symbols_per_carrier)‘; % differential encoding QPSK 
carrier_matrix = [zeros(1carrier_count);carrier_matrix]; 
%---------------------------IFFT---------------------
for i = 2:(symbols_per_carrier + 1) 
    carrier_matrix(i:)=rem(carrier_matrix(i:)+carrier_matrix(i-1:)2^bits_per_symbol); 
end
% transfrom to phase for every modulate symbol 
carrier_matrix = carrier_matrix * ((2*pi)/(2^bits_per_symbol)); % phase to complex number transform 
[XY] = pol2cart(carrier_matrix ones(size(carrier_matrix1)size(carrier_matrix2))); 
complex_carrier_matrix = complex(XY); % allocate carrier to corresponding IFFT position 
IFFT_modulation = zeros(symbols_per_carrier + 1 IFFT_bin_length); 
IFFT_modulation(:carriers) = complex_carrier_matrix; 
IFFT_modulation(:conjugate_carriers) = conj(complex_carrier_matrix);  
time_wave_matrix = ifft(IFFT_modulation‘); % IFFT frequency s

评论

共有 条评论