TD-LTE正交频分复用调制技术研究_MATLAB程序
%主程序ofdm_main
clear all;close all;clc;
carrier_count=200;%子载波数
symbols_per_carrier=14;%每子载波含符号数
bits_per_symbol=4;%每符号含比特数,16QAM调制
IFFT_bin_length=512;%FFT点数N,即OFDM符号的数据位数
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
%======发送端======
figure(1);
set(gcf,'Position',[100,100,400,300],'color','w');%绘图窗[X,Y,Width,High]
%=====1.产生随机二进制信号
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点坐标
baseband_out=round(rand(1,baseband_out_length));%输出待调制二进制比特流
subplot(2,2,1);
stem(baseband_out(1:50),'r');
title('①:发送端二进制数据');
axis([0,50,0,1]);
grid on;
%=====2.串并转换和16QAM调制,reshape(a,3,2)将1维矩阵a改为3行2列2维矩阵
complex_carrier_matrix=qam16(baseband_out);%对于输入二进制数基带调制,列向量
complex_carrier_matrix=reshape(complex_carrier_matrix',carrier_count,symbols_per_carrier)';
%carrier_count:子载波数;symbols_per_carrier:每子载波含符号数
subplot(2,2,2);
plot(complex_carrier_matrix,'*r');
title('②:16QAM调制后星座图');%清晰星座
axis([-4,4,-4,4]);
grid on;
%=====3.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);%共轭复数映射
%时域波形矩阵,行为每载波所含符号数,列为IFFT点数.N个子载波映射在其内,每一行即为一个OFDM符号
signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM调制,即IFFT变换
subplot(2,2,3);
plot(signal_after_IFFT,'r');%IFFT变换后图
title('③:IFFT变换后信号');
grid on;
%======4.添加循环前缀CP与后缀
XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);