夏班长聊聊OFDM通信系统仿真

一, 废话..

  起因是这样的。最近刚写完专利,脑壳巨大无比,所以想写点文章陶冶下情操。但是我这个大老粗爷们也写不来言情小说,搞得我很是痛苦。我唯一会的也就只有 matlab了,, 所以写一篇文章自我陶醉一下,哈哈哈。。

  最近也是天气晴朗,雾霾飘香。最痛苦的是下周OFDM的通信系统测试。想必同学们也是脑壳比我还大,也有很多同学问我这个 OFDM咋个做哦。我也简单的说下在高斯信道下的 OFDM系统,其实也讲了讲瑞利,莱斯信道下的 OFDM。 但是不要求嘛 ,确实那个有点难。


二. OFDM与傅里叶暧昧关系

  一. 物理层的小知识

他们我们通信就是装点宽带啊,电线啊,但是不然。我们要自奋强大,还是要懂点小常识

信源编码:着重对信号容量压缩,提高传输效率

信道编码:针对多变的信道插入冗余信息,增加传输稳定性(设计的OFDM插入的CP(循环前缀),引频信号就是冗余信息)。

信号调制:将比特流转换成稳定的波形进行传输

  二.信号的正交性

比如: sint  和  sin2t  为一对正交信号,因为 sint*sin2t 在区间[0,2 pi]上的积分为0.

 sint和 sin2t是用来承载信号的,我们称为子载波

加入 sint 信号传送信号a ,采用AM调制,它变为 asint

加入 sin2t信号传送信号b,采用AM调制,它变为 bsin2t

那么我们的和信号就变成 xn = asint+ bsin2t

接收a信号时候:将xn * sint 再通过[0,2pi]积分,sin2t的分量信号就变为了0,只剩下带有a的信号

接收b信号时候:将xn * sin2t 再通过[0,2pi]积分,sint的分量信号就变为了0,只剩下带有b的信号

%还不晓得的话,动一动笔写一下就明白了。 

扩展一下

我们将sint离散化  就变成了 sin(2*pi*Δf*K*T)  其中K = 1,2,3..... 

Δf为子载波间间隔. 

我们的f(t) 则可以变成

f(t) = a1·sin(2π·Δf·t) +

a2·sin(2π·Δf·2t) +

a3·sin(2π·Δf·3t) .....

再扩展一下

因为sint 和 cost 是正交的。 对吧

f(t) = b1·cos(2π·Δf·t) +

b2·cos(2π·Δf·2t) +

b3·cos(2π·Δf·3t) .....

那么f(t)就可以找到合适的系数ak,和bk,将


f(t) = a1·sin(2π·Δf·t) +

a2·sin(2π·Δf·2t) +

a3·sin(2π·Δf·3t) +

...

ak·sin(2π·Δf·kt) +

b1·cos(2π·Δf·t) +

b2·cos(2π·Δf·2t) +

b3·cos(2π·Δf·3t) +

...

bk·cos(2π·Δf·kt) 

综上f(t)=∑ak·sin(2π·Δf·kt) + ∑bk·cos(2π·Δf·kt)

对f(t)进行复数化 :f(t) =∑Fk·e(j·2π·Δf·kt)  

这个啥子!!!!这是这就是傅里叶级数,是不是很magical.

简单的小实验

设计一段晓得bit流,使其分别进行ifft后 与 f(t) =∑Fk·e(j·2π·Δf·kt)公式 两种方法进行对比

现在假定待发送序列00011011,OFDM符号时长为1s,调制方式为QPSK


输入信号 IQ信号 输出信号相位

%00          1/2,1/2        pi/4

%01          -1/2,1/2        3pi/4

%10          -1/2,-1/2      5pi/4

%11          1/2,-1/2        7pi/4

根据QPSK的映射关系,求出输入函数:

d1 = 1/2+1i*1/2;

d2 = -1/2+1i*1/2;

d3 = 1/2+1i*(-1/2);

d4 = -1/2 + 1i*(-1/2);

对输入序列进行IFFT

xk = [0,d1,d2,d3,d4,0,0,0]; %输入序列xk

sn = ifft(xk);   %IFFT后输出的sn序列

 即可得到输入序列后的IFFT曲线



%////////////////////////////////////////////////////////////////////////////////////////////////////

采用公式法:f(t) =∑Fk·e(j·2π·Δf·kt)

我们QPSK调制,则一个OFDM符号里有2个bit

(一个OFDM符号与调制方式对应的bit数目:(QPSK:2),(16QAM:4),(64QAM:6)   )

根据公式求出子载波

%子载波

e1 = exp(1i*2*pi*f*t);

e2 = exp(1i*2*pi*f*t*2);

e3 = exp(1i*2*pi*f*t*3);

e4 = exp(1i*2*pi*f*t*4);

OFDM基带复信号表达式

st = d1*e1 + d2*e2 + d3*e3 + d4*e4;   %将上述公式展开

画出st的图像


我们将上述的st与sn图像进行对比


(上图形为实部,下图形为虚部)

可以惊讶的发现:IFFT后的图形就是公式图形的离散值!所以OFDM系统和傅里叶级数有种亲密而不可分离的感情,如同牛郎和织女,杨贵妃和唐玄宗,葫芦娃和爷爷。。。。。 好像有点奇怪

  所以IFFT模块的功能相当于说:别麻烦发送N个子载波信号了,我直接算出你们在空中会叠加成啥样子吧FFT模块的功能相当于说:别用老式的积分方法来去除其余的正交子载波了,我帮你一次把N个携带信号全算出来吧


                                   (图片来自小白)

三.OFDM系统设计

终于要进行设计了,前面一大堆,我打字都打累了。原来写文章那么辛苦,我觉得司马迁好牛比。。

我们先从最简单的高斯信道说起走嘛。

前面说了傅里叶变化在OFDM系统中的举足轻重的作用,所以我们OFDM系统的仿真才使用IFFT和FFT算法

高斯信道

高斯信号就是在信号通过此信道中加入高斯白噪声。

在maltab通信系统仿真中我们用awgn(TrData1,SNR,'measured'); 函数来给信号TrData1添加高斯白噪声

瑞利信道


信号通过无线信道之后,其信号幅度是随机的,即“衰落”,并且其包络服从瑞利分布.

接受信号具有四种效应:1.阴影 2.远近 3.多径 4.多普勒频移

莱斯信道

简单的说莱斯信道比瑞利信道多了一条直流分量。

CP

就是我们所谓的循环前缀,为什么要加入CP循环前缀这个冗余信息呢。为了抵抗由于多径效应带来的ICI(载波间干扰),设计的时候也要注意下:一个CP占用了每个OFDM符号约的1/15的资源

引频信号的意义

插入引频信号通过训练序列的信息,实时估计信道,从而再做信号的矫正,从而再解调的时候减少误码率之类。

高斯信道下的OFDM通信系统matlab仿真

发送端:

第一步:产生随机数列   Signal=rand(1,para*Ns*2)>0.5

其中我们所设置的 para为并行传输的子载波个数

Ns为一个祯结构中OFDM信号的个数

第二步:进行串并转化

串并转化为十分重要的函数reshape函数

其用法为:SigPara = reshape(Signal,para,Ns*2); 将原始信号Signal 信号转化为para 行 Ns*2列的信号

reshape(a,m,n);先把矩阵a按列拆分,然后拼接成一个大小为m*n的向量。


第三步:进行QPSK调制

(1)将数据分为两个通道 即i通道和q通道

函数如下:

for j=1:Ns

ich(:,j)=SigPara(:,2*j-1);

qch(:,j)=SigPara(:,2*j);

end

(2)根据QPSK映射关系,求出输入后的数据

kmod=1./sqrt(2);

ich1=ich.*kmod;

qch1=qch.*kmod;  %QPSK映射关系

第四步:插入保护间隔

ich3=[ich2(fl-gl+1:fl,:);ich2];

qch3=[qch2(fl-gl+1:fl,:);qch2];



加入前每列128个点


加入后 每列 160个点

我们选取gl = 32:将信号的最后32组数据进行复制,加入到原始信号中 -- 加强容错性

第五步:并串变换

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

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

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

第六步:发射数据加入高斯白噪声

ReData=awgn(TrData1,SNR,'measured');

%///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

接受端:

第一步:移去保护间隔

(1)进行数据的复式化

idata=real(ReData); %加入噪声后的实部

qdata=imag(ReData);    %加入噪声后的虚部


(2)对数据进行串并转化

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

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

(3)移去保护间隔

idata2=idata1(gl+1:gl+fl,:);

qdata2=qdata1(gl+1:gl+fl,:);

取idata1的每一列的gl+1 到gl+fl的数据形成iadta2


第二步:FFT


第三步:QPSK解调:

(1)将fft转化后的数据/komd 

  (2)并串转化

   (3)重组信号

第四步:抽样判决

ReSig = Res > 0.5; 将上述重组后的信号进行分析,大于0.5的信号赋值为1,小于0.5的赋值为0

第五步:计算错误的概率

err = 0;

for i = 1:para*Ns*2;

if (Signal(i)~=ReSig(i))

err = err + 1;            %得到误码的个数

end

end

Pe = err / (para*Ns*2);

取多组SNR值,加入高斯信道我们可以得到snr-Pe曲线


信噪比曲线

%///////////////////////////////////////////////////////////////////////////////////////

引深:如果信道为瑞利信道在有多径效应和多普勒频移的情况下

信道的信能将会受到严重的影响

图为加入瑞利信道后的OFDM(没有做信道估计)


可见当加入了多径和多普勒频移后的信道 误码率从3%上升到了30%左右,瑞利信道完全破坏了信号的传输

引频信号的引入

我们在加入列引频和行引频

A=[A;r]插行           A=[A c]插列

列间加入引频:

ich2= [zeros(fl,1) ich21(:,[1:Ns/2]) zeros(fl,1) ich21(:,[Ns/2+1:Ns]) zeros(fl,1)] ;

行间加入引频:

ich2 = [zeros(1,(Ns+3)) ; ich2(1:fl/2,:) ; zeros(1,(Ns+3)) ; ich2((fl/2)+1:fl,:) ; zeros(1,(Ns+3))];  

加入的结果:


加入行列引频信号


加入引频信号后可以通过LS算法来 做信道估计

LS算法基本原理:Y = HX + N  其中N为噪声信号,H为信道的频率响应,Y,X为输出,输入信号的响应

在理想信道下: H' = Y/X 输入除以输出(其中Y为通过瑞利信道后的信号) ,可以得到频率响应H的估计H'

我们用所得到的H'再反过来推算出X的估计:X' = Y/H'  得到新的输入。对X’再进行去引频的后续处理

for j = 1:(Ns+3)

for i = 1:(para+3)

Hls(i,j) = idata21(i,j)./ich2(i,j);

ixg(i,j) = idata21(i,j) ./ Hls(i,j);

hls(i,j) = qdata21(i,j)./qch2(i,j);

qxg(i,j) = qdata21(i,j)./ hls(i,j);

end

end

加入信道估计后误码率的图示:


结论

OFDM系统中 :OFDM系统在只有高斯白噪声的情况下影响较小,OFDM设计在高斯信道下的优势很小

但是在瑞利信道中,OFDM引频信号,CP,信道估计对传输的信号起到了保护的作用。使其在收到多径,多普勒频移的条件下,能够有效的恢复出原信号。

在没有信道估计得OFDM--瑞利系统,多径,远近,阴影,多普勒频偏对信号造成了严重的干扰。使其不能够正常传输,有着严重的误码率。


。。。。。。。打字都打累了,可能里面会有些错误,请各位指正。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容

  • 深入理解傅里叶变换Mar 12, 2017 这原本是我在知乎上对傅立叶变换、拉普拉斯变换、Z变换的联系?为什么要进...
    价值趋势技术派阅读 5,742评论 2 2
  • 往事如烟也如屁,吹吹就没了。如果懒得连吹的力气都不想用,也不打紧,一会儿它也能自己散了。 这几日一直...
    裂墙阅读 571评论 0 1
  • 画画让我更快乐!
    二_丰阅读 138评论 2 1
  • 《问道》经典手游再会30年 ———————————————————————————————————————— 高清...
    七景鸣阅读 207评论 0 0