clear all;
close all;
fprintf( '\n OFDM仿真 \n\n' );
IFFT_bin_length = 1024; %IFF数据长度
carrier_count = 200; %载波总数
bits_per_symbol = 2; %每符号上的位数
symbols_per_carrier = 50; %每载波上的符号数
SNR = input( 'SNR = ' ); %输入SNR
baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol; %基带信号长度
carriers = ( 1 : carrier_count ) + ( floor( IFFT_bin_length / 4) - floor( carrier_count / 2) );
conjugate_carriers = IFFT_bin_length - carriers + 2;
%信号弹发射
baseband_out = round( rand( 1, baseband_out_length ) );
convert_matrix = reshape( baseband_out, bits_per_symbol, length( 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( i, k ) * 2 ^ ( bits_per_symbol - i );
end
end
carrier_matrix = reshape( modulo_baseband, carrier_count, symbols_per_carrier );
%QDPSK调制
%carrier_matrix = [ zeros( 1, carrier_count ); carrier_matrix ];
%for i = 2 : ( symbols_per_carrier + 1 )
% carrier_matrix( i, : ) = rem( carrier_matrix( i, : ) + carrier_matrix( i - 1, : ), 2^bits_per_symbol );
%end
%carrier_matrix = carrier_matrix * ( ( 2 * pi ) / ( 2^bits_per_symbol ) );
%[ X, Y ] = pol2cart( carrier_matrix, ones( size( carrier_matrix, 1 ), size( carrier_matrix, 2 ) ) );
%complex_carrier_matrix = complex( X, Y );
%baseband_out1 = round( out );
%baseband_out2 = floor( out * 2 );
%baseband_out3 = ceil( out * 2 ) - 1;
%baseband_out4 = randint( 1, baseband_out_length );