首页 > 行业资讯 > 【通信】 OFDM通信系统仿真含Matlab源码

【通信】 OFDM通信系统仿真含Matlab源码

时间:2022-04-21 来源: 浏览:

【通信】 OFDM通信系统仿真含Matlab源码

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于话题

1 简介

根据正交频分复用(OFDM)的基本原理,设计了一种基于OFDM技术的通信系统.采用MATLAB软件,对此基带通信系统中的信源模块,数据映射编码模块,OFDM调制模块,信道模块,OFDM解调模块,数据逆映射译码模块进行了编程仿真,并对各模块级联构成的系统进行了性能仿真研究.通过仿真,研究了循环前缀对消除系统符号间干扰(ISI)的作用,并对多载波与单载波系统性能进行了对比分析,得出了几点结论.

2 完整代码

%本程序用于OFDM基本原理的仿真,数据采用QPSK调制 clear all; close all; clc; SubCarryN=128;%子载波数 fftLen=128;%FFT长度为128 SymbN=6;%一帧中OFDM符号个数 GuardLen=32;%保护时隙的长度 SNR=50;%信噪比取值,dB为单位 SignalLen=SubCarryN*SymbN*2;%输入比特序列长度=子载波数x每载波符号数x每符号比特数 Signal=round(rand(1,SignalLen));%输出待调制的二进制比特流 for i=1:SubCarryN for j=1:SymbN*2 ParaBitSig(i,j)=Signal(i*j);%串并转换为行数SubCarryN,列数2*SymbN end end %进行QPSK数据调制,将数据分为两个通道 for j=1:SymbN ich(:,j)=ParaBitSig(:,2*j-1);%同相分量 qch(:,j)=ParaBitSig(:,2*j);%正交分量 end kmod=1./sqrt(2); ich0=ich.*2-1; qch0=qch.*2-1; ich1=ich0.*kmod; qch1=qch0.*kmod; x=ich1+qch1.*sqrt(-1);%产生复信号 y=ifft(x);%通过傅里叶反变换,将频域数据转换为时域数据 ich2=real(y);%I信道取变换后的实部 qch2=imag(y);%Q信道取变换后的虚部 %插入保护间隔 ich3=[ich2(fftLen-GuardLen+1:fftLen,:);ich2]; qch3=[qch2(fftLen-GuardLen+1:fftLen,:);qch2]; %并串转换 ich4=reshape(ich3,1,(fftLen+GuardLen)*SymbN); qch4=reshape(qch3,1,(fftLen+GuardLen)*SymbN); %形成复数发射数据 TrData=ich4+qch4.*sqrt(-1); %接收机部分 %加入高斯白噪声 ReData=awgn(TrData,SNR,’measured’); %接收端 %移去保护时隙 idata=real(ReData); qdata=imag(ReData); idata1=reshape(idata,fftLen+GuardLen,SymbN); qdata1=reshape(qdata,fftLen+GuardLen,SymbN); idata2=idata1(GuardLen+1:GuardLen+fftLen,:); qdata2=qdata1(GuardLen+1:GuardLen+fftLen,:); %FFT Rex=idata2+qdata2*sqrt(-1); ry=fft(Rex); %QPSK解调 ReIChan=real(ry); ReQChan=imag(ry); ReIChan1=ReIChan/kmod; ReQChan1=ReQChan/kmod; ReIChan0=(ReIChan1+1)/2; ReQChan0=(ReQChan1+1)/2; %QPSK逆映射 for j=1:SymbN RePara(:,2*j-1)=ReIChan0(:,j); RePara(:,2*j)=ReQChan0(:,j); end ReSig=reshape(RePara’,1,SubCarryN*SymbN*2); %符号抽样判决 Resig=ReSig>0.5; %画图 figure(1); subplot(211);stem(Signal(1:40),’b’),grid; title(’输入的前40比特信号’) subplot(212),stem(Resig(1:40),’b’),grid; title(’接收到前40比特序列’) figure(2); subplot(121),plot(ich1,qch1,’o’),grid; ylabel(’正交分量’),xlabel(’同相分量’); title(’发送端的QPSK星座映射’) subplot(122);plot(ReIChan,ReQChan,’o’),grid; ylabel(’正交分量’),xlabel(’同相分量’); title(’接收端的QPSK星座映射’) figure(3); subplot(311),stem(ich2(:,1),’b’),grid; title(’IFFT后的实部序列’) subplot(312),stem(ich3(:,1),’b’),grid; title(’插入保护间隔后的实部序列’) subplot(313),stem(idata2(:,1),’b’),grid; title(’接收端去除保护间隔后的实部序列’)

3 仿真结果

4 参考文献

[1]李松涛, 江修富, 郭文峰,等. 基于MATLAB的OFDM通信系统仿真研究[J]. 系统仿真学报, 2005(z2):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐