参考基于matlab的OFDM信号调制解调与多径传输.docx

上传人:b****8 文档编号:11889446 上传时间:2023-06-03 格式:DOCX 页数:16 大小:251.61KB
下载 相关 举报
参考基于matlab的OFDM信号调制解调与多径传输.docx_第1页
第1页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第2页
第2页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第3页
第3页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第4页
第4页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第5页
第5页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第6页
第6页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第7页
第7页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第8页
第8页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第9页
第9页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第10页
第10页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第11页
第11页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第12页
第12页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第13页
第13页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第14页
第14页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第15页
第15页 / 共16页
参考基于matlab的OFDM信号调制解调与多径传输.docx_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

参考基于matlab的OFDM信号调制解调与多径传输.docx

《参考基于matlab的OFDM信号调制解调与多径传输.docx》由会员分享,可在线阅读,更多相关《参考基于matlab的OFDM信号调制解调与多径传输.docx(16页珍藏版)》请在冰点文库上搜索。

参考基于matlab的OFDM信号调制解调与多径传输.docx

参考基于matlab的OFDM信号调制解调与多径传输

基于matlab的OFDM信号调制和多径传输仿真

一、OFDM信号的调制

OFDM系统实现的基本步骤为:

首先是对待发送的序列进行串并转换,然后进行映射,再对其进行IFFT,即为OFDM信号的调制,加入循环前缀,然后发送。

接收端接收到信号首先去掉循环前缀,然后进行FFT,即为OFDM信号的解调,然后在进行并串转换,最后进行判决得到接收序列。

1、产生发送序列:

可以通过matlab的round(rand(1,N))命令来产生一个随机的发送序列。

2、串并转换:

通过matlab的reshape命令进行串并转换,需要注意的是转换后的结果是以列为单位的,不是以行为单位的。

3、16QAM调制:

一般可以用QPSK、M-QAM等调制方式,本次试验使用16QAM调制方式。

在实验中利用所编的qam.m(自己编的)子函数来进行16QAM调制。

4、调制:

OFDM信号的调制是利用IFFT来实现的,注意使用matlab的IFFT命令时,是对矩阵的列向量进行变换,而不是对行向量进行变换,这样经过变换后每一行的元素的频率就是一样的,而正好每一行频率都是正交的,而每一行是属于同一个子载波。

5、加入循环前缀:

将IFFT变换后的后面gl个元素复制到前面,作为循环前缀,这样能抵抗由于多径时延引起的码间干扰的影响,如果循环前缀的长度大于最大时延扩展,则在理论上说能完全消除码间干扰的影响。

6、并串转换后送入信道进行传输,信号在信道中会产生多径、频偏、相偏等现象。

7、接收端进行串并转换(同

(2));

8、去循环前缀;

9、FFT:

去循环前缀之后的信号进行FFT,使用matlab的FFT命令;

10、信道估计:

在此实验中是利用多径时延信道进行信息传送的,因此信号在信道中传输的过程中会出现多径时延,多普勒频移等现象,所以接收到的信号会产生严重的失真,但是如果我们知道信道对信号的影响,在接收端对信号进行恢复,从而减弱甚至抵消信道对信号的影响。

本实验中使用基于LS算法的信道估计。

11、16QAM解调:

在实验中利用deqam.m(自己编的)子函数进行16QAM解调。

二、仿真结果

1、产生的发送序列:

随机产生的0—1序列,总数为25600个,此处只画出它的前50个值;

图1

2、经过符号的星座映射后产生的星座图:

该实验中使用16QAM进行数字调制;

图2

3、发送信号:

图3

4、接收信号:

信号在信道中传输,不仅会受到噪声的影响,还会产生多径时延、多普勒频移等现象,所以信号会出现严重的失真;

图4

5、信道估计后信号的星座图:

图5

图6

6、接收序列:

所得的接收序列应该也是一个长度为25600的0—1序列,此处只画出它的前50个值;

图7

多径时延信道对信号的一个重要影响就是会使信号产生多径时延,如图8、9、10分别列出了最大时延为16、33和41个数据单位时信道估计后的信号的矢量图;

图8

图9

图10

从图8、9、10可以看出,随着最大时延的增大,信道估计后的信号的矢量图的离散性越来越大。

所以说最大时延和误码率有关。

图11

以上所涉及的都是4-pathRayleighFadingchannel,下图是多径的条数和系统误码率的关系;

图12

从图12可以看出,在相同的信噪比下,随着信道多径条数的增大,系统的误码率也随之增大。

当信道多径的条数一定时,系统的误码率随着信噪比的增大而减小。

下面分析系统误码率和信噪比的关系(以多径条数为4为例)

图13、14和15分别给出了当系统的信噪比为20,15,10dB时,信道估计后的信号的矢量图;

图13

图14

图15

从图13、14、15可以看出,随着系统信噪比的减小,信道估计后的信号与发送信号的区别越来越大。

下图为基于4-pathRayleighFadingchannel的系统的信噪比和误码率的关系;

图16

附:

本次实验用到的程序

clc;

clearall;

rand('state',4);

SNR=15;%信噪比取值,单位为db

fl=128;%fft的长度

Ns=50;%设置一个帧结构中OFDM信号的个数

para=128;%设置并行传输的子载波个数

sr=250000;%设置符号速率

br=sr*2;%设置每个子载波的比特率

gl=32;%设置保护时隙的长度

an=[1,0.7,0.3,0.5];%每条多径的幅度增益

%tn=[0,1,2,3];%每条路径的相对时延,单位为us

wn=rand(1,4).*10;%每条路径的多普勒频移

%an=rand(1,4)*2;

tn=fix(rand(1,4)*0);

%wn=round(rand(1,4)*10);

sita=rand(1,4).*2*pi;%设置相偏

%************信源发生器****************************************

signal=round(rand(1,para*Ns*4));

figure

(1);

stem(signal(1:

50));

title('产生的序列');

%*************16QAM调制***********************************

x1=qam(signal);

x=reshape(x1,para,Ns);

figure

(2);

plot(x,'o');

title('产生的复信号的星座图');

%***************加入训练序列*******************************************

training_symbols=qam(round(rand(1,para*4)));

training_symbols=training_symbols';

training_symbols_2=cat(2,training_symbols,training_symbols);

training_symbols_4=cat(2,training_symbols_2,training_symbols_2);

training_symbols_8=cat(2,training_symbols_4,training_symbols_4);

x=cat(2,training_symbols_8,x);

%**********************IFFT****************************************

y=ifft(x);

ich2=real(y);

qch2=imag(y);

%**************插入循环前缀************

ich3=[ich2(fl-gl+1:

fl,:

);ich2];

qch3=[qch2(fl-gl+1:

fl,:

);qch2];

ich4=reshape(ich3,1,(fl+gl)*(Ns+8));

qch4=reshape(qch3,1,(fl+gl)*(Ns+8));

Trdata=ich4+qch4.*sqrt(-1);%形成复数发射数据

%***************************加入噪声***********************************

Trdata_power=var(Trdata)+mean(Trdata)*mean(Trdata);

linear_SNR=10^(SNR/10);

noise_sigma=Trdata_power/linear_SNR;

noise_factor=sqrt(noise_sigma);

noise=randn(1,length(Trdata))*noise_factor;

redata=Trdata+noise;

%redata=Trdata;

figure(3)

plot(redata,'o');

title('加入噪声的发送信号');

%****************************建立信道***************************************

%*******得到信道的响应函数,然后令输入信号和信道响应做卷积得到输出信号

q=0:

max(tn);

h=zeros(4,max(tn)+1);

forp=1:

4

h(p,:

)=an(p).*exp(sqrt(-1).*(wn(p).*q)).*exp(sqrt(-1)*sita(p)).*(dirac(q-tn(p))>1);

end

h=sum(h);

s2=conv(redata,h);

s3=s2(1:

length(redata));

figure(4)

plot(s3,'o');

title('接收信号')

%***********************接收端,去掉循环前缀,fft***********

idata=real(s3);

qdata=imag(s3);

idata1=reshape(idata,fl+gl,Ns+8);

qdata1=reshape(qdata,fl+gl,Ns+8);

idata2=idata1(gl+1:

gl+fl,:

);

qdata2=qdata1(gl+1:

gl+fl,:

);

Rx_data=idata2+qdata2*sqrt(-1);

Rx_carriers=fft(Rx_data);

Rx_training_symbols=Rx_carriers(:

(1:

8));

Rx_carriers=Rx_carriers(:

(9:

(Ns+8)));

%************************信道估计*******************

training_symbols=cat(2,training_symbols,training_symbols);

training_symbols=cat(2,training_symbols,training_symbols);

training_symbols=cat(2,training_symbols,training_symbols);

Rx_training_symbols=Rx_training_symbols./training_symbols;

Rx_training_symbols_deno=Rx_training_symbols.^2;

Rx_training_symbols_deno=Rx_training_symbols_deno(:

1)+Rx_training_symbols_deno(:

2)+Rx_training_symbols_deno(:

3)+Rx_training_symbols_deno(:

4)+Rx_training_symbols_deno(:

5)+Rx_training_symbols_deno(:

6)+Rx_training_symbols_deno(:

7)+Rx_training_symbols_deno(:

8);

Rx_training_symbols_nume=Rx_training_symbols(:

1)+Rx_training_symbols(:

2)+Rx_training_symbols(:

3)+Rx_training_symbols(:

4)+Rx_training_symbols(:

5)+Rx_training_symbols(:

6)+Rx_training_symbols(:

7)+Rx_training_symbols(:

8);

%Rx_training_symbols_nume=conj(Rx_training_symbols_nume);

Rx_training_symbols=Rx_training_symbols_nume./Rx_training_symbols_deno;

Rx_training_symbols2=cat(2,Rx_training_symbols,Rx_training_symbols);

Rx_training_symbols4=cat(2,Rx_training_symbols2,Rx_training_symbols2);

Rx_training_symbols8=cat(2,Rx_training_symbols4,Rx_training_symbols4);

Rx_training_symbols16=cat(2,Rx_training_symbols8,Rx_training_symbols8);

Rx_training_symbols32=cat(2,Rx_training_symbols16,Rx_training_symbols16);

Rx_training_symbols48=cat(2,Rx_training_symbols32,Rx_training_symbols16);

Rx_training_symbols50=cat(2,Rx_training_symbols48,Rx_training_symbols2);

Rx_carriers=Rx_training_symbols50.*Rx_carriers;

%**********进行傅里叶变换****************

ry=reshape(Rx_carriers,1,para*Ns);

figure(5);

plot(ry,'o');

title('经过fft之后的信号矢量图');

%*************************16QAM解调************************************

resignal=deqam(ry);

figure(6)

stem(resignal(1:

50),'k');

holdon

stem(signal(1:

50),'r');

title('接收到的序列')

[wumageshu,wumalv]=biterr(signal,resignal);

wumageshu

wumalv

素材资料从网络收集整理而来,供参考!

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2