基于MATLAB的OFDM的无线链路仿真,用MATLAB实现OFDM仿真分析

41528d3028836879cd698677c3999917.gif用MATLAB实现OFDM仿真分析

3.1 计算机仿真 仿真实验是掌握系统性能的一种手段。它通过对仿真模型的实验结果来确定实际系统的性能。从而为新系统的建立或系统的改进提供可靠的参考。通过仿真,可以降低新系统失败的可能性,消除系统中潜在的瓶颈。优化系统的整体性能,衡量方案的可行性。从中选择最后合理的系统配置和参数配置。然后再应用于实际系统中。因此,仿真是科学研究和工程建设中不可缺少的方法。 3.1.1 仿真平台 l 硬件 CPU:Pentium III 600MHz 内存:128M SDRAM l 软件 操作系统: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文件通过命令可以轻松实现用户和程序的交互,通过循环向量化、数组维数预定义等提高M文件执行速度,优化内存管理,此外,还可以通过类似C++语言的面向对象编程方法等等。 输入 串并 交换 QPSK 调制 FFT 插入 保护 间隔 衰减 计算 高斯 白噪 信道 去保 护间 隔 IFFT QPSK 解调 并串 交换 误码 计算 输出 图3-1 仿真链路模型 3.2 循环前缀及信道估计对系统误码率的改善分析 本文主要研究循环前缀对系统误码率的改善分析 3.2.1 循环前缀 OFDM系统中,每个并行数据支路都是窄带信号,可近似认为每个支路都经历平坦衰落,这样就减小了频率选择性衰落对信号的影响。同时,每路子数据流速率的降低,减小了符号间干扰(ISI)。此外,还可以通过加保护间隔的办法完全消除符号间干扰。假设每个OFDM符号由Y个样值组成,由于时延扩展,接收端将会有和信道冲激响应持续时间相对应的前L(L0.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 data noe2=sum(abs(demodata1-seldata)); nod2=length(seldata); % cumulative the number of error and data in noe and nod noe=noe+noe2; nod=nod+nod2; % calculating PER if noe2~=0 eop=eop+1; else eop=eop; end eop; 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 = ( BERofdm.dat , a ); fclose(fid); %****************** end of file ******************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值