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

📄 ofdm_continu_vs_ifft.m

📁 本程序实现了IFFT以及和连续变换的对比
💻 M
字号:
%DVB-T 2K signal generation Eq. (2.1.4) vs. 2N-IFFT
%本段程序主要进行(2。1。4)连续调制方式下的OFDM调制与IFFT方式下的OFDM调制的对比试验
clear all;
close all;
%------------------------------------系统参数-----------------------------------------------------------------
Tu=224e-6;                                                                      %useful OFDM symbol period
T=Tu/2048;                                                                      %baseband elementary period
G=0;                                                                            %choice of 1/4, 1/8, 1/16, and 1/32
delta=G*Tu;                                                                     %guard band duration
Ts=delta+Tu;                                                                    %total OFDM symbol period
Kmax=1705;                                                                      %number of subcarriers
Kmin=0;
FS=4096;                                                                        %IFFT/FFT length
q=10;                                                                           %carrier period to elementary period ratio
fc=q*1/T;                                                                       %carrier frequency
Rs=4*fc;                                                                        %simulation period
%-----------------------------------产生调制数据--------------------------------------------------------------
M=Kmax+1;
a=-1+2*round(rand(M,1)).'+i*(-1+2*round(rand(M,1))).';                          %产生调制数据(QAM映射),a为1*M向量
A=length(a);                                                                    %调制数据长度
info = [ a.'];                                                                  %所产生数据赋值info,info为M*1向量
tt=0:1/Rs:Ts;                                                                   %产生连续时间因子(采样率为4fc,总长度为一个符号周期,包括保护间隔)
TT=length(tt);                                                                  %时间因子总长度
k=Kmin:Kmax;                                                                    %子载波下标
%-----------------------------------按照(2。1。4)式多载波调制-----------------------------------------------
for t=0:(TT-1)                                                                  % Eq. (2.1.4)按照参考文献中的(2。1。4)式
    phi=a(k+1).*exp((1j*2*(((t*(1/Rs))-delta))*pi/Tu).*((k-(Kmax-Kmin)/2)));    %对调制信号a进行多载波调制(模拟连续情况,采样率为4fc)
    s(t+1)=real(exp(1j*2*pi*fc*(t*(1/Rs))).*sum(phi));                          %调制过程包括了上变频,调制到fc
end                                                                             %在这个循环体中,可能时间参量t的设置有问题,t应该与tt一致才对
%----------------------------------采用IFFT/FFT进行OFDM调制---------------------------------------------------
infof=zeros(FS,1);                                                              %对调制信号首先赋零,长度为4096
infof(1:(A/2)) = [ a(1:(A/2)).'];                                               %对前1706/2个调制信号赋值
infof((FS-((A/2)-1)):FS) = [ a(((A/2)+1):A).'];                                 %对后1706/2个调制信号赋值.进行过采样,中间填0
carriers=FS.*ifft(infof,FS);                                                    % 采用IFFT方式完成OFDM调制,carriers是4096*1的列向量
%-----------------------------------------Upconverter---------------------------------------------------------
L = length(carriers);                                                           %完成OFDM调制后的信号的长度
chips = [ carriers.';zeros((2*q)-1,L)];                                         %以下四句完成对调制后信号的连续化
p=1/Rs:1/Rs:T/2;
g=ones(length(p),1);
dummy=conv(g,chips(:));
u=[dummy(1:TT)];
[b,a] = butter(13,1/20);                                                        %设计低通滤波器
uoft = filter(b,a,u);                                                           %连续化后的信号过低通滤波器,完成D/A转换
s_tilde=(uoft.').*exp(1i*2*pi*fc*tt);                                           %上变频,调制到载波fc上
sf=real(s_tilde);                                                               %完成上变频的信号sf
figure(1);
plot(tt,s,'b',tt,sf,'g');                                                       %画出以(2。1。4)实现的调制和以IFFT完成的调制的对比图
figure(2);
pwelch(s,[],[],[],Rs);                                                          %给出两种调制方式下信号的功率谱
hold on;
pwelch(sf,[],[],[],Rs);
hold off;

⌨️ 快捷键说明

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