用MATLAB实现OFDM仿真分析
- 格式:doc
- 大小:134.50 KB
- 文档页数:12
3.1计算机仿真仿真实验是掌握系统性能的一种手段。
它通过对仿真模型的实验结果来确定实际系统的性能。
从而为新系统的建立或系统的改进提供可靠的参考。
通过仿真,可以降低新系统失败的可能性,消除系统中潜在的瓶颈。
优化系统的整体性能,衡量方案的可行性。
从中选择最后合理的系统配置和参数配置。
然后再应用于实际系统中。
因此,仿真是科学研究和工程建设中不可缺少的方法。
3.1.1仿真平台硬件CPU Pentium III 600MHZ内存:128M SDRAM软件操作系统:MiCrOSOft Win dows2000 版本5.0仿真软件:The Math Works Inc. MatIab 版本6.5包括MATLAB 6.5的M文件仿真系统。
MatIab是一种强大的工程计算软件。
目前最新的6.x版本(Windows环境)是一种功能强、效率高、便于进行科学和工程计算的交互式软件包。
其工具箱中包括:数值分析、矩阵运算、通信、数字信号处理、建模和系统控制等应用工具程序,并集应用程序和图形于一便于使用的集成环境中。
在此环境下所解问题的MatIab语言表述形式和其数学表达形式相同,不需要按传统的方法编程。
MatIab的特点是编程效率高,用户使用方便,扩充能力强,语句简单,内涵丰富,高效方便的矩阵和数组运算,方便的绘图功能。
3.1.2基于MATLAB勺OFDMK统仿真链路根据OFDM基本原理,本文给出利用MATLA编写OFD系统的仿真链路流程。
串行数据经串并变换后进行QDPS数字调制,调制后的复信号通过N点IFFT变换,完成多载波调制,使信号能够在N个子载波上并行传输,中间插入10训练序列符号用于信道估计,加入循环前缀后经并串转换、D /A后进入信道,接收端经过N点FFT变换后进行信道估计,将QDPS解调后的数据并串变换后得到原始信息比特。
本文采用MATLA语言编写M文件来实现上述系统。
M文件包括脚本M文件和函数M文件,M文件的强大功能为MATLA的可扩展性提供了基础和保障,使MATLA能不断完善和壮大,成为一个开放的、功能强大的实用工具。
基于MATLAB的OFDM系统仿真及分析OFDM(正交频分复用)是一种广泛应用于无线通信系统中的多载波调制技术。
在OFDM系统中,信号被分为多个独立的子载波,并且每个子载波之间正交。
这种正交的特性使得OFDM系统具有抗频率选择性衰落和多径干扰的能力。
本文将基于MATLAB对OFDM系统进行仿真及分析。
首先,我们需要确定OFDM系统的参数。
假设我们使用256个子载波,其中包括8个导频符号用于信道估计,每个OFDM符号的时域长度为128个采样点。
接下来,我们需要生成调制信号。
假设我们使用16QAM调制方式,每个子载波可以传输4个比特。
在MATLAB中,我们可以使用randi函数生成随机的比特序列,然后将比特序列映射为16QAM符号。
生成的符号序列可以通过IFFT(Inverse Fast Fourier Transform)将其转换为时域信号。
OFDM系统的发射端包括窗函数、导频符号插入、IFFT和并行到串行转换等模块。
窗函数用于增加OFDM符号之间的过渡带,导频符号用于信道估计和符号同步。
通过将符号序列与导频图案插入到OFDM符号序列中,然后进行IFFT变换,再进行并行到串行转换即可得到OFDM信号的时域波形。
接下来,我们需要模拟OFDM信号在信道中传输和接收。
假设信道是Additive White Gaussian Noise(AWGN)信道。
在接收端,OFDM信号的时域波形通过串行到并行转换,然后进行FFT(Fast Fourier Transform)变换得到频域信号。
通过在频域上对导频符号和OFDM信号进行正交插值,可以进行信道估计和等化。
最后将频域信号进行解调,得到接收后的比特序列。
通过比较发送前和接收后的比特序列,我们可以计算比特误码率(BER)来评估OFDM系统的性能。
比特误码率是接收到错误比特的比特数与总传输比特数之比。
通过改变信噪比(SNR)值,我们可以评估OFDM系统在不同信道条件下的性能。
基于MATLAB的OFDM系统性能分析与仿真研究OFDM(正交频分复用)是一种常用于无线通信系统中的多载波调制技术。
它将一个高速数据流分成多个子载波进行同时传输,提高了频谱利用率,也减小了频域上的干扰。
本文将基于MATLAB对OFDM系统的性能进行分析与仿真研究。
首先,我们需要搭建OFDM系统的仿真模型。
OFDM系统包括信号生成、子载波调制、信道传输、接收、解调和误码分析几个主要环节。
信号生成阶段,我们可以使用伪随机码(PN码)生成器产生信号序列作为待传输的数据。
然后,将信号序列进行并行-串行转换,将其分组成多个子载波。
子载波调制阶段,我们可以选择常用的调制方式,如BPSK、QPSK等。
在MATLAB中,我们可以利用内置的调制函数进行实现。
信道传输阶段,我们可以引入AWGN(加性高斯白噪声)信道模型,模拟无线信道中的噪声干扰。
通过调整信道衰落因子、信噪比等参数,可以模拟不同的信道环境。
接收阶段,我们需要进行并行信号转换成串行信号,并进行解调操作。
对于解调部分,与调制阶段相反,我们可以使用MATLAB中的解调函数,如bpskdemod、qpskdemod等。
误码分析阶段,我们通过计算误码率(BER)来评估系统性能。
可以通过比较原始信号和接收信号之间的差异,统计错误的比特数量来计算误码率。
在进行OFDM系统的性能分析与仿真时,我们可以分析以下几个方面的内容:1.调制方式对系统性能的影响:通过比较不同调制方式(如BPSK、QPSK、16QAM、64QAM等)下的误码率,评估调制方式对系统的影响。
2.子载波数量的选择:通过改变子载波的数量,比较不同子载波数量下的误码率与频谱效率,找到最佳子载波数量。
3.信道传输对系统性能的影响:通过改变信道衰落因子、信噪比等参数,比较不同信道环境下的误码率,评估信道传输对系统性能的影响。
4.信道估计与均衡:在OFDM系统中,由于信道传输的不确定性,需要进行信道估计与均衡。
基于MATLAB的OFDM系统设计与仿真OFDM(正交频分复用)是一种高效的调制技术,广泛应用于无线通信系统中。
本文将基于MATLAB对OFDM系统进行设计与仿真,并介绍其主要步骤和关键技术。
首先,我们需要对OFDM系统进行建模。
OFDM系统由发送端和接收端两部分组成。
发送端主要包括数据源、调制器、IFFT以及保护间隔插入器。
接收端主要包括保护间隔删除器、FFT、解调器以及数据恢复。
在发送端,我们首先生成要传输的数据序列。
然后通过调制器将数据转换为带符号的复数序列。
接着,通过将复数序列进行IFFT,将频域数据转换为时间域信号。
在转换过程中,需要注意对数据进行零填充,以确保IFFT输出的结果长度是原始数据长度的整数倍。
最后,通过保护间隔插入器插入保护间隔,以减小信号之间的干扰。
在接收端,我们首先对接收到的信号进行保护间隔删除。
然后,通过FFT将时域信号转换为频域信号。
接着,通过解调器将复数序列转换为二进制数据。
最后,进行数据恢复,解码得到发送方发送的原始数据。
为了验证OFDM系统的性能,我们需要进行信道建模和误码率性能评估。
在信道建模中,我们可以选择多径信道模型,例如Rayleigh信道。
根据信道模型的不同,我们可以添加多径衰落和噪声等效果,从而模拟实际的信道环境。
在误码率性能评估中,我们可以通过比较接收到的数据与发送的原始数据,计算误码率。
在MATLAB中,我们可以使用信号处理工具箱和通信工具箱来实现这些功能。
信号处理工具箱提供了丰富的功能和算法,例如IFFT和FFT,用于信号处理和频谱分析。
通信工具箱则提供了OFDM系统建模和仿真所需的函数和工具,例如调制器、解调器等。
在进行OFDM系统设计与仿真时,我们可以根据不同的场景和需求进行调整和优化。
例如,可以尝试不同的调制方式、不同的子载波数量和间距,以及不同的保护间隔长度。
此外,还可以改变不同参数下的OFDM系统性能,如带宽利用率、误码率等。
总之,基于MATLAB的OFDM系统设计与仿真是一项重要的研究工作。
OFDM完整仿真过程及解释(MATLAB)OFDM(正交频分复用)是一种多载波调制技术,在无线通信系统中得到广泛应用。
其基本原理是将高速数据流分成多个较低速的子载波,使得每个子载波的传输速率降低,从而提高了系统的可靠性和抗干扰性能。
以下是OFDM的完整仿真过程及解释。
1. 生成数据:首先,在MATLAB中生成需要传输的二进制数据,可以使用随机数生成函数randi(生成0和1的二进制序列。
2.编码:将生成的二进制数据进行编码,例如使用卷积码、块码等编码方式。
编码可以提高数据传输的可靠性,对抗信道中的噪声和干扰。
3.映射:将编码后的数据映射到调制符号,例如使用QPSK、16-QAM 等调制方式。
调制方式决定了每个符号所携带的比特数,不同调制方式具有不同的抗噪声和传输速率性能。
4.并行-串行转换:将映射后的调制符号进行并行-串行转换,将多个并行的调制符号转换为串行的数据流。
这是OFDM的关键步骤,将高速数据流分成多个较低速的子载波。
5. 添加保护间隔:为了消除多径传播引起的码间干扰,需要在串行数据流中插入保护间隔(Guard Interval),通常是循环前缀。
保护间隔使得子载波之间相互正交,从而避免了码间干扰。
6.IFFT:对添加保护间隔后的数据进行反快速傅里叶变换(IFFT),将时域信号转换为频域信号。
IFFT操作将子载波映射到频域,每个子载波代表系统的一个子信道。
7.添加导频:在OFDM符号的频域信号中添加导频,用于估计信道的频率响应和相位差。
导频通常位于频谱的首尾或者分布在整个频谱中,用于信道估计和均衡。
8.加载子载波:将导频和数据子载波合并,形成完整的OFDM符号。
数据子载波携带着编码后的数据,导频子载波用于信道估计。
9.加性高斯白噪声(AWGN)信道:将OFDM符号通过加性高斯白噪声信道进行传输。
AWGN信道是一种理想化的信道模型,可以模拟实际信道中的噪声和干扰。
10.解调:接收端对接收到的OFDM符号进行解调,包括载波恢复、频偏补偿、信道估计和均衡等操作。
3.1 计算机仿真仿真实验是掌握系统性能的一种手段。
它通过对仿真模型的实验结果来确定实际系统的性能。
从而为新系统的建立或系统的改进提供可靠的参考。
通过仿真,可以降低新系统失败的可能性,消除系统中潜在的瓶颈。
优化系统的整体性能,衡量方案的可行性。
从中选择最后合理的系统配置和参数配置。
然后再应用于实际系统中。
因此,仿真是科学研究和工程建设中不可缺少的方法。
3.1.1 仿真平台●硬件CPU:Pentium III 600MHz内存:128M SDRAM●软件操作系统:Microsoft Windows2000 版本5.0仿真软件:The Math Works Inc. Matlab 版本6.5包括MATLAB 6.5的M文件仿真系统。
Matlab是一种强大的工程计算软件。
目前最新的6.x版本 (windows环境)是一种功能强、效率高、便于进行科学和工程计算的交互式软件包。
其工具箱中包括:数值分析、矩阵运算、通信、数字信号处理、建模和系统控制等应用工具程序,并集应用程序和图形于一便于使用的集成环境中。
在此环境下所解问题的Matlab语言表述形式和其数学表达形式相同,不需要按传统的方法编程。
Matlab的特点是编程效率高,用户使用方便,扩充能力强,语句简单,内涵丰富,高效方便的矩阵和数组运算,方便的绘图功能。
3.1.2 基于MATLAB的OFDM系统仿真链路根据OFDM 基本原理,本文给出利用MATLAB编写OFDM系统的仿真链路流程。
串行数据经串并变换后进行QDPSK数字调制,调制后的复信号通过N点IFFT变换,完成多载波调制,使信号能够在N个子载波上并行传输,中间插入10训练序列符号用于信道估计,加入循环前缀后经并串转换、D /A后进入信道,接收端经过N点FFT变换后进行信道估计,将QDPSK解调后的数据并串变换后得到原始信息比特。
本文采用MATLAB语言编写M文件来实现上述系统。
M文件包括脚本M文件和函数M文件,M文件的强大功能为MATLAB的可扩展性提供了基础和保障,使MATLAB能不断完善和壮大,成为一个开放的、功能强大的实用工具。
M文件通过input命令可以轻松实现用户和程序的交互,通过循环向量化、数组维数预定义等提高M文件执行速度,优化内存管理,此外,还可以通过类似C++语言的面向对象编程方法等等。
图3-1 仿真链路模型3.2 循环前缀及信道估计对系统误码率的改善分析本文主要研究循环前缀对系统误码率的改善分析 3.2.1 循环前缀OFDM 系统中,每个并行数据支路都是窄带信号,可近似认为每个支路都经历平坦衰落,这样就减小了频率选择性衰落对信号的影响。
同时,每路子数据流速率的降低,减小了符号间干扰(ISI)。
此外,还可以通过加保护间隔的办法完全消除符号间干扰。
假设每个OFDM 符号由Y 个样值组成,由于时延扩展,接收端将会有和信道冲激响应持续时间相对应的前L(L<Y)个样值发生错误,为此,可以在发送信号前端加上M 个样值,接收端收到信号时,先去掉前M 个样值,然后再进行FFT ,只要M ≥L 就可完全消除ISI 。
最初的保护间隔是用空数据填充的,这虽然消除了ISI ,但却破坏了信道间的正交性。
后来, Peled 和Ruiz 提出了用循环前缀填充保护间隔的方法,即把Y 个样值的最后M 个复制到个OFDM 符号的前端作为保护间隔,利用循环卷积的概念,只要循环前缀的长度大于信道的冲激响应,信道间仍是正交的。
符号周期由T 增加至T ′= T +∆T ,∆T 是保护时隙,增加保护时隙会降低频谱利用率,所以∆T 一般小于等于T/4。
3.2.2 系统仿真结果分析用上述OFDM 系统的实现方法进行OFDM 传输系统的仿真,系统参数见表3-1输入串并 交换 QPSK 调制FFT插入 保护 间隔衰减 计算高斯 白噪 信道去保 护间 隔IFFTQPSK 解调并串 交换 误码 计算 输出3-1 仿真系统参数并行子信道个数64FFT 的长度64载波个数64符号速率25000循环次数100调制方式QPSK循环一次OFDM符号个数10首先基本参数设置成如上表所示,再分别设置保护间隔为18和32,然后改变输入信号的信噪比为:3、4、5、6、7、8、9、10、11、12、13。
图3-2 相同信道(64)插入不同保护间隔下误码率比较图3-3 相同信道(128)插入不同保护间隔下误码率比较图3-4 相同信道(256)插入不同保护间隔下误码率比较如图3-2可知,误码率随着信噪比的增加而逐渐减小,直至趋于理想化的误码率为0。
data1(下方曲线)是插入保护间隔为18时的误码率曲线,data2(上方曲线)是插入保护间隔为32时的曲线,可见在插入保护间隔过大时,会造成在信噪比低时的高误码率,但随着信噪比的增加,误码率会趋于相同。
改变并行子信道的个数为200,如图3-3,3-4,做相同的比较,可得同样的结论。
如图3-5与图3-6可知,在插入相同保护间隔的情况下,并行子信道的个数越多,信道传输信息的误码率越低。
并且大大提高了频谱的利用率。
这就充分说明OFDM系统的优点,可以把串行高速数据流成若干路并行低速数据流,每路低速数据流被调制在彼此正交的子载波上,然后所有子载波叠加在一起构成发送信号。
这种技术具有在杂波干扰下传送信号的能力,可以利用在容易受外界干扰或者抵抗外界干扰能力较差的传输介质中。
因此,OFDM的应用前景十分光明。
图3-5 相同保护间隔下插入不同信道(64、128、256)误码率比较图3-6 相同保护间隔(32)下插入不同信道(128、200)误码率比较OFDM技术在实现的过程中,需要根据相应的信道条件和系统要求进行合理设计,才能发挥其优势。
系统的参数选择,导频和同步方案的设计,均衡和编码技术的结合使用,都需要在实现之前进行优化设计,所以仿真工作是必不可少的。
OFDM的系统仿真是一个非常复杂的问题。
根据研究问题的侧重点,可以采用不同的仿真工具和方法分开进行。
目前许多系统级的仿真工具都支持OFDM系统的仿真,对于具体的算法则可以使用更加灵活的程序语言工具进行仿真。
OFDM系统的仿真是可以优化整个系统的参数和指标,缩短开发的周期。
结合我们的实践经验,系统的分析了OFDM实现中的关键技术,通过一个实例给出了OFDM系统仿真的基本框架,但在具体的系统设计中,还有很多更复杂的问题需要解决,尤其是同步技术,本文给出的只是系统设计时需要宏观考虑的问题。
第4章结论随着数字时代的到来,OFDM技术给通信领域注入了新的活力。
正如绪论中所述,OFDM 技术良好的性能在计算机网络、数字音频/视频广播、移动通信、卫星通信等多个领域中都有体现。
本文首先介绍了OFDM系统的关键技术,然后又分析了OFDM系统的原理,在OFDM系统原理的基础上,详细设计了一个基于MATLAB的系统仿真链路模型,并进行了计算机仿真,同时详细分析了仿真结果。
通过对该系统的仿真及分析,可以得到如下结论:a)IFFT/FFT变换可以有效的实现OFDM信号的调制解调。
b)OFDM可以有效的提供系统频带利用率。
c)信息流的误码率随着信噪比的增加而逐渐减小。
d)信息传输时,并行信道的个数越多信息流的误码率越小。
本文所做的只是系统传输误码率的仿真,在实际应用中,大多需要将OFDM同相和反相两路信号调制成一路信号后,进行射频调制。
这时,系统的同步问题将是仿真的重点。
需要充分考虑系统的频率同步问题,频率的偏移将导致系统子载波得正交性变差,严重影响系统的正常工作。
OFDM的同步也是当前通信领域里的一个研究热点。
事物是在不断发展中,OFDM 技术也需要发展。
通过与新技术的结合,OFDM技术将不断完善。
其良好的性能预示着它将拥有一个广阔的前景。
致谢在论文的结束,特附上此致谢,感谢在写本文期间给予了我热心帮助的老师、同学和朋友:感谢在本科学习期间给予我热心帮助的老师、同学和朋友。
首先要感谢指导老师:常怡萍,感谢这一个多学期来常老师在学习、工作中给予的关心和帮助。
本文的研究工作也是在常老师的悉心指导下完成的。
常老师严谨求实的工作作风都使我受益匪浅。
尤其是她对当今科技前沿的把握,使我所做的工作具有非常广泛的应用前景。
在她耐心细致的指导下,我的专业知识得以扩充,学习能力得以提高,论文的工作也得以顺利地进行。
所以,再次向常老师表达我最诚挚的谢意。
在这两年的学习生活中,还得到了学校多位老师的热情帮助。
他们经常给我讲解当今世界前沿技术,给了我许多启发。
在此一并感谢。
最后还要感谢我的同学以及本科学习期间的舍友们,和他们一起度过两年和谐融洽的宝贵时间,和他们建立的友谊和我所学到的知识同样弥笃可贵。
这两年来的每一点成绩和进步都得益于我身边的很多人,在此谨向所有关心过我,帮助过我的老师和朋友表示衷心的感谢。
参考文献[1] 佟学俭、罗涛.OFDM移动通信技术原理与应用.第一版.人民邮电出版社. 2003[2] 樊昌信,张甫栩,徐炳祥,吴成柯.通信原理.第五版.国防工业出版社. 2001[3] 郑君里,应启衍,杨为理.信号与系统.第二版.北京高等教育出版社. 2000[4] 陈亚勇等编著 MATLAB信号处理详解.人民邮电出版.2001.[5] 张云峰,彭军用MATLAB实现OFDM技术的仿真电脑与信息技术14卷1期2006.2[6] 李引新,赵姚同正交频分多路(OFDM)的实现方式及性能分析电讯技术1998.06期[7] 张永生,李道本正交频分复用码分多址技术的特点及其应用移动通信 1997.06期[8] 梁兵,董在望OFDM仿真软件系统研究广播与电视技术 1998.04期[9] 郭坚正交频分复用技术极其在CDMA中的应用数字通信 1998.04期[10] 高焕英OFDM调制技术研究及硬件实现方案无线电技术 1998.05期[11] 张俊峰正交频分复用(OFDM)调制技术天津通信技术 1998.02期[12] 王文博,郑侃宽带无线通信OFDM技术人民邮电出版社[13] 尹长川,罗涛,乐光新多载波宽带无线通信技术北京邮电大学出版社[14] 阮沈勇王永利桑群芳编 MATLAB程序设计电子工业出版社 2004.1(MATLAB应用与提高系列)[15] 李建东、杨家玮,个人通信,人民邮电出版社,1998.附MATLAB仿真程序%********************** 准备部分 ***************************para=128;fftlen=128;noc=128;nd=6;ml=2;sr=2500;br=sr.*ml;gilen=18;ebn0=3;%************************** 主循环部分 **************************nloop=100;noe = 0;nod = 0;eop=0;nop=0;for iii=1:nloop%****************** 发射部分******************************************************%****************** 产生数据 **********************seldata=rand(1,para*nd*ml)>0.5;%****************** 串并转换 ***********************paradata=reshape(seldata,para,nd*ml);%****************** QPSK调制 ***********************[ich,qch]=qpskmod(paradata,para,nd,ml);kmod=1/sqrt(2);ich1=ich.*kmod;qch1=qch.*kmod;%****************** IFFT(离散傅里叶反变换) *********x=ich1+qch1.*i;y=ifft(x);ich2=real(y);qch2=imag(y);%****************** 插入保护间隔 *******************[ich3,qch3]= giins(ich2,qch2,fftlen,gilen,nd);fftlen2=fftlen+gilen;%****************** 衰减计算 ************************spow=sum(ich3.^2+qch3.^2)/nd./para;attn=0.5*spow*sr/br*10.^(-ebn0/10);attn=sqrt(attn);%****************** 高斯白信道***************************************************** [ich4,qch4]=comb(ich3,qch3,attn);%****************** 接收部分****************************************************** %****************** 去除保护间隔 ********************[ich5,qch5]= girem(ich4,qch4,fftlen2,gilen,nd);%****************** FFT(离散傅里叶变换) ************rx=ich5+qch5.*i;ry=fft(rx);ich6=real(ry);qch6=imag(ry);%***************** QPSK解调 **************************ich7=ich6./kmod;qch7=qch6./kmod;[demodata]=qpskdemod(ich7,qch7,para,nd,ml);%************** 并串变换 *************************** demodata1=reshape(demodata,1,para*nd*ml);%*************** 比特误码率 (BER) ********************* % instantaneous number of error and datanoe2=sum(abs(demodata1-seldata));nod2=length(seldata);% cumulative the number of error and data in noe and nodnoe=noe+noe2;nod=nod+nod2;% calculating PERif noe2~=0eop=eop+1;elseeop=eop;endeop;nop=nop+1;fprintf('%d\t%e\t%d\n',iii,noe2/nod2,eop);end%****************** 结果输出 ***************************per=eop/nop;ber=noe/nod;fprintf('%f\t%e\t%e\t%d\t\n',ebn0,ber,per,nloop);fid = fopen('BERofdm.dat','a');fclose(fid);%****************** end of file******************************************************。