(完整版)OFDMmatlab实现

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

close all;

carrier_count=200;%子载波数

symbols_per_carrier=12;%每子载波含符号数

bits_per_symbol=4;%每符号含比特数,16QAM调制

IFFT_bin_length=512;%FFT点数

PrefixRatio=1/4;%保护间隔与OFDM数据的比例1/6~1/4

GI=PrefixRatio*IFFT_bin_length ;%每一个OFDM符号添加的循环前缀长度为

1/4*IFFT_bin_length 即保护间隔长度为128

beta=1/32;%窗函数滚降系数

GIP=beta*(IFFT_bin_length+GI);%循环后缀的长度20

SNR=15; %信噪比dB

%==================================================

%================信号产生=================================== baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol;%所输入的比特数目

carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2));%共轭对称子载波映射复数数据对应的IFFT点坐标

conjugate_carriers = IFFT_bin_length - carriers + 2;%共轭对称子载波映射共轭复数对应的IFFT点坐标

rand( 'state',0);

baseband_out=round(rand(1,baseband_out_length));%输出待调制的二进制比特流

%==============16QAM调制====================================

complex_carrier_matrix=qam16(baseband_out);%列向量

complex_carrier_matrix=reshape(complex_carrier_matrix',carrier_count,symbols_per_car rier)';%symbols_per_carrier*carrier_count 矩阵

figure(1);

plot(complex_carrier_matrix,'*r');%16QAM调制后星座图

axis([-4, 4, -4, 4]);

grid on

%=================IFFT===========================

IFFT_modulation=zeros(symbols_per_carrier,IFFT_bin_length);%添0组成

IFFT_bin_length IFFT 运算

IFFT_modulation(:,carriers ) = complex_carrier_matrix ;%未添加导频信号,子载波映射在此处

IFFT_modulation(:,conjugate_carriers ) = conj(complex_carrier_matrix);%共轭复数映射%========================================================

stem(0:IFFT_bin_length-1, abs(IFFT_modulation(2,1:IFFT_bin_length)),'b*-')%第一个OFDM符号的频谱

grid on

axis ([0 IFFT_bin_length -0.5 4.5]);

ylabel('Magnitude');

xlabel('IFFT Bin');

title('OFDM Carrier Frequency Magnitude');

figure(3);

plot(0:IFFT_bin_length-1, (180/pi)*angle(IFFT_modulation(2,1:IFFT_bin_length)), 'go') hold on

stem(0:carriers-1, (180/pi)*angle(IFFT_modulation(2,1:carriers)),'b*-');%第一个OFDM符号的相位

stem(0:conjugate_carriers-1,

(180/pi)*angle(IFFT_modulation(2,1:conjugate_carriers)),'b*-');

axis ([0 IFFT_bin_length -200 +200])

grid on

ylabel('Phase (degrees)')

xlabel('IFFT Bin')

title('OFDM Carrier Phase')

%================================================================= signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM调制即IFFT变换time_wave_matrix =signal_after_IFFT;%时域波形矩阵,行为每载波所含符号数,列ITTF 点数,N个子载波映射在其内,每一行即为一个OFDM符号

figure(4);

subplot(3,1,1);

plot(0:IFFT_bin_length-1,time_wave_matrix(2,:));%第一个符号的波形

axis([0, 700, -0.2, 0.2]);

grid on;

ylabel('Amplitude');

xlabel('Time');

title('OFDM Time Signal, One Symbol Period');

%===========================================================

%=====================添加循环前缀与后缀

====================================

XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);

相关文档
最新文档