OFDM通信系统设计Matlab,OFDM通信系统的Matlab仿真

41528d3028836879cd698677c3999917.gifOFDM通信系统的Matlab仿真

OFDM 通信系统的 Matlab 仿真谢雨翔一、实验目的:1)熟悉 Matlab 基本操作,掌握 matlab 语言的基本编程方法,掌握用 Matlab 等仿真工具进行通信系统仿真的原理。2)掌握 OFDM 通信系统的基本理论。3)用 Matlab 做一个较为完整、体系的通信系统(链路级) 。二、实验原理:正交频分复用技术OFDM(Orthogonal Frequency Division Multiplexing)是FDMA多载波调制的一种。OFDM将信道从频域上分成若干正交子信道,每一个子信道之间的载波差为恒定的值,将高速数据信号转换成并行的低速子数据流,调制到在每个子载波上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰 ICI 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上的可以看成平坦性衰落,从而可以消除符号间干扰。而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。在向B3G/4G演进的过程中,OFDM是关键的技术之一,可以结合分集,时空编码,干扰和信道间干扰抑制以及智能天线技术,最大限度的提高了系统性能。OFDM 技术之所以越来越受关注,是因为OFDM 有很多独特的优点: 1、频谱利用率很高,频谱效率比串行系统高近一倍。2 、 抗多径干扰与频率选择性衰落能力强。 3、采用动态子载波分配技术能使系统达到最大比特率。4 、通过各子载波的联合编码,可具有很强的抗衰落能力。 5、基于离散傅立叶变换(DFT)的OFDM 有快速算法,OFDM 采用 lFFT和FFT来实现调制和解调,易用DSP和FPGA实现。三、仿真系统框架:在这个系统框架中,有BPSK调制,通过将信源的比特转化为字符然后通过串并转换输入到IFFT模块中,IFFT模块输出的结果进行时域恢复,得到模拟波形,然后通过射频和功放,将调制波发送到无线信道中。在这个通信系统实验中,我们仅仅考虑了噪声信道中的,AWGN白噪声,事实上,由于时延扩展,无线信道的选择性频率衰落不容忽视,而OFDM传输中使用CP循环前缀技术可以有效的抵消时延扩展,并且使得接收端的符号同步的要求放的更低。在这个系统中,我们假设时延扩展已经通过CP循环前缀抵消,因为是单用户,不考虑多址,则ICI亦不做要求,信道的仿真做的有点简化,可以做后续的添加和完善。B P S Km o d .S o u r c e g e n .S / P I F F T D / AR Fd eR FN o i s e c h a n n e ls a mp l i ngF F TP / SB P S Kd e m o ds i n kB E R s i m u l a t i o n三、仿真步骤详解:1)基本步骤打开Matlab,在命令窗口输入Edit,可以打开M文件编辑器,其具有调试功能,在我们写程序的过程中一定要注意将文件名用全英文加下划线数字以及全英文路径保存,不然会出现程序错误。可以直接设置断点,直接在代码行的前面点击“-”,出现红圈圈就可。下图是调试常用的工具栏,简要叙述:continue:继续执行到结束或下一个断点为止Single step:在主程序中一步步执行。Step in:会跳入调用的子程序中。Quit Debugging:退出调试状态。Clear all:清除所有断点。2)OFDM 仿真参数设计:我们设计频域子载波数为16个,时域连续的符号个数为 6个,子载波的分隔为 10Hz,高频调制的频率为400Hz,发送帧次数为 50次,为了能在图形中显示模拟波形,我们将时间间隔设置为dt = 1/fs = 1/1280 s,设置功率放大器的放大倍数为 3,设置噪声功率为sigma ,则:Nc = 16; %number of subcarriersNs = 6; %number of consecutive symbols in time domaindf = 10; %subcarrier spacingfc = 400; %radio frequency, carrier frequency% K = 1: localized OFDM, K > 1: identically distributed OFDM; here not used by meK = 1;% Transmitter transmit bits Interation, this is for Monte Carlo simulationTransmitIter = 50;fs = Nc * 80;dt = 1 / fs; %sampling time intervalA = 3;EbN0 = 1 : 0.01 : 1.2;sigma = 10 .^ (-EbN0);则时域中每个符号(其实在频域有Nc个符号)占用时间为Tu,我们设置时间间隔为Ns个Tu,所以我们将每一次发送Ns * Nc个符号作为一帧的数据。%time-domain: one symbol transmited, frequency-domain: N symbols transmitted modulated to N different subcarriersTu = 1 / df;t = 0 : dt : Ns * Tu - dt;T = Ns * Tu; % total time 3)产生信源模块产生信源,tx_d为信源比特(0 和 1)构成随机序列,如下:tx_d = (randn(1, Ns * Nc) > 0);4)BPSK 调制模块这个模块其实可以是QAM调制或BPSK 、QPSK 调制等方式,这里我们使用 BPSK调制,每一个比特映射到一个符号(用-1 和1表示)中,如下:d = d * 2 - 1; %generate ination digit as -1 or 1 % BPSK5)串并转换模块这个模块将产生的BPSK符号通过串并转换成为Nc = 16路数据,同时每一路数据的符号率也同时下降到原来的1/16,所以OFDM的优势也就是在这里,充分的利用了不同子载波的调制使的高速率的符号率在无线通信中成为可能,代码段如下:%demultiplex ination rate as 1/N initial rate:%1 0 1 0 0 1 1 0 _ x x x x becomes as 1 0 1 0 _ 0 1 1 0 _ . _ x x x x %d becomes a Nc * Ns matrix, with each row corresponding to one out of 16 pathsd = reshape(tx_d, Nc, Ns);6)IFFT 模块这里我们给出了ofdm中IFFT后输出的离散结果,通过分离实数部分和虚部部分得到IFFT输出结果的同相分量和正交分量,分别用sI和sQ表示,如下代码:for k = 1 : Nsofdm_symbol(:, k) = ifft(d(:, k), Nc);sI(:, k) = re

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值