移动通信系统课设OFDM系统仿真.docx

上传人:b****3 文档编号:2230269 上传时间:2022-10-28 格式:DOCX 页数:17 大小:78.46KB
下载 相关 举报
移动通信系统课设OFDM系统仿真.docx_第1页
第1页 / 共17页
移动通信系统课设OFDM系统仿真.docx_第2页
第2页 / 共17页
移动通信系统课设OFDM系统仿真.docx_第3页
第3页 / 共17页
移动通信系统课设OFDM系统仿真.docx_第4页
第4页 / 共17页
移动通信系统课设OFDM系统仿真.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

移动通信系统课设OFDM系统仿真.docx

《移动通信系统课设OFDM系统仿真.docx》由会员分享,可在线阅读,更多相关《移动通信系统课设OFDM系统仿真.docx(17页珍藏版)》请在冰豆网上搜索。

移动通信系统课设OFDM系统仿真.docx

移动通信系统课设OFDM系统仿真

移动通信系统课程设计报告

OFDM系统仿真

——

(一)题目要求:

1)OFDM128路传输;

2)QPSK调制

3)AWGN信道

4)3径或4径瑞利衰落信道

(二)相关原理:

1)OFDM:

将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。

正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI)。

每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。

2)QPSK调制:

将每两个相连比特组在一起形成双比特码元,它的四种状态用4个不同的相位表示;

3)导频与均衡:

在OFDM信息序列中插入已知的导频序列,通过信道后将其提取得,做频域除法得传输函数,再通过线性插值后得到每个信道频率响应,均衡滤波传输函数;

4)循环前缀:

循环前缀(CyclicPrefix,CP)是将OFDM符号尾部的信号搬移到头部构成的。

用来消去码间干扰,通常取长度(为信道冲激响应持续时间)

5)分组交织:

为了解决成串的比特差错问题,采用了交织技术:

把一条消息中的相继比特分散开的方法,即一条信息中的相继比特以非相继方式发送,这样即使在传输过程中发生了成串差错,恢复成一条相继比特串的消息时,差错也就变成单个(或者长度很短)的错误比特,这时再用信道纠正随机差错的编码技术(FEC)消除随机差错。

纠错数

(三)基本思路:

说明:

1)编码:

使用216卷积码;

相关代码:

%卷积编码%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ori_data_t_1=reshape(ori_data_t,num_inf,2*channell);%58*192

ori_data_t_2=zeros(num,2*channell);%128*192

fori=1:

2*channell

seq=ori_data_t_1(:

i)';

seq_code=encode216(seq)';

ori_data_t_2(:

i)=seq_code;

end

ori_data=reshape(ori_data_t_2,1,2*num*channell);%1*24576

编码函数:

functioncode=encode216(m)%输入信息序列

%g1=[1,0,0,0,0,0];g2=[1,1,0,0,1,1];

trel=poly2trellis(6,[4063]);%定义网格

m1=[m,0,0,0,0,0,0];

code=convenc(m1,trel);%卷积码编码

2)交织:

交织深度为32;

相关代码:

%编码交织%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ori_data1=reshape(ori_data,deep,(2*num*channell)/deep)';%768*32

ori_data2=reshape(ori_data1,1,2*num*channell);%1*24576

3)QPSK调制:

转换为96路相位信号(复数);

代码:

%QPSK调制%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ori_data_0=reshape(ori_data2,2,channell*num);%拆分成两行12288列

ori_data_1=bi2de(ori_data_0','left-msb')';%QPSK的未调制数据12288列M=4的数据

de_OFDM_1=modem.pskmod(4);%生成调制器对象,设置qpsk调制

QPSK_data=modulate(de_OFDM_1,ori_data_1);%1*12288复数形式

%channel_data=reshape(QPSK_data,channell,num);%拆分成128行,每行10个复数128*10

channel_data=reshape(QPSK_data,num,channell);%拆分成128行,每行96个复数128*96

4)插入导频:

32路已知序列;

代码:

%插入导频信号%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

pliot_1=2*rand(128,32);

pliot_2=2*rand(128,32);%插入的导频信号,实数

pliot=pliot_1+pliot_2*1i;%插入的导频信号,复数

channel_data_1=zeros(128,128);

fori=0:

31

channel_data_1(:

4*i+1)=pliot(:

i+1);

channel_data_1(:

4*i+2)=channel_data(:

3*i+1);

channel_data_1(:

4*i+3)=channel_data(:

3*i+2);

channel_data_1(:

4*i+4)=channel_data(:

3*i+3);

end

5)OFDM调制:

使用IFFT;

相关代码:

%OFDM信号产生%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

IFFT_data=zeros(128,128);

fori=1:

128

IFFT_data(:

i)=ifft(channel_data_1(:

i),128);%128*128ifft数据

end

r_ifft_data=real(IFFT_data);%实部128*128

i_ifft_data=imag(IFFT_data);%虚部128*128

6)插入循环前缀:

这里选取长度为32;

相关代码:

%加入循环前缀%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

r_data=[r_ifft_data(num-num/4+1:

num,:

);r_ifft_data];%保护间隔取传送数据的四分之一

i_data=[i_ifft_data(num-num/4+1:

num,:

);i_ifft_data];%160*128

7)并串转换:

转换成1路;

代码:

%并串转换%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

r_out=reshape(r_data,1,(num+num/4)*channel);%1*1600

i_out=reshape(i_data,1,(num+num/4)*channel);%1*1600

data=r_out+i_out.*1i;

8)AWGN:

加入信噪比-10~20dB的噪声;

代码:

%AWGN信道%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

data_AWGN=awgn(data,SNR,'measured');%加入噪声

9)串并转换:

转换成128路;

代码:

%串并转换%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

r_rcv_data1=reshape(r_rcv_data,num+num/4,channel);

i_rcv_data1=reshape(i_rcv_data,num+num/4,channel);

10)OFDM解调:

FFT快速算法;

代码:

%OFDM解调FFT%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

de_OFDM_data=zeros(128,128);

fori=1:

128

de_OFDM_data(:

i)=fft(rcv_data(:

i),128);%128*128矩阵

end

11)去导频:

取出过信道后导频序列;

12)信道估计:

计算收到每一路导频序列的,已知导频序列的,得到信道,利用线性插值得到每一路信息序列的;

13)均衡:

将每一路信号,,得到均衡后的信号频域,然后得到;

代码:

%信道估计与均衡(新的)

depliot=zeros(128,32);

fori=0:

31

depliot(:

i+1)=de_OFDM_data(:

4*i+1);

end

depliot_1=zeros(128,32);

depliot_2=zeros(32,128);

de_OFDM_0=zeros(128,32);

fori=1:

32

depliot_1(:

i)=pliot(:

i)./depliot(:

i);

%depliot_2(i,:

)=reshape(depliot_1(:

i),1,128);

%x=1:

128;

%hx=1:

128;

%de_OFDM_0(:

i)=interp1(x,depliot_2(i,:

),hx,'pchip');%线性插值

end

de_OFDM_1=zeros(128,128);

fori=0:

30

de_OFDM_1(:

4*i+1)=depliot_1(:

i+1);

de_OFDM_1(:

4*i+2)=depliot_1(:

i+1)+(depliot_1(:

i+2)-depliot_1(:

i+1))/4;

de_OFDM_1(:

4*i+3)=depliot_1(:

i+1)+(depliot_1(:

i+2)-depliot_1(:

i+1))/2;

de_OFDM_1(:

4*i+4)=depliot_1(:

i+1)+(depliot_1(:

i+2)-depliot_1(:

i+1))/4*3;

end

de_OFDM_1(:

125)=depliot_1(:

32);de_OFDM_1(:

126)=depliot_1(:

32);

de_OFDM_1(:

127)=depliot_1(:

32);de_OFDM_1(:

128)=depliot_1(:

32);

de_OFDM_2=de_OFDM_data.*de_OFDM_1;%还原数据

de_OFDM_3=[];

fori=2:

4:

126

de_OFDM_3=[de_OFDM_3,de_OFDM_2(:

i:

i+2)];%提取出128*96数据部分

end

14)并串转换:

变为96路信息序列;

代码:

%并串转换%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

de_OFDM_data3=reshape(de_OFDM_3,1,channell*num);%128*96

15)QPSK解调:

还原调制前的数据;

代码:

%QPSK解调%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

de_OFDM_data3_real=real(de_OFDM_data3);

de_OFDM_data3_imag=imag(de_OFDM_data3);

de_OFDM_4=zeros(1,2*length(de_OFDM_data3_real));

%求方差%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

sigma=sum(abs(real(de_OFDM_data3)-real(QPSK_data))+abs(imag(de_OFDM_data3)-imag(QPSK_data)))/(2*length(de_OFDM_data3_r

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1