资源描述
OFDM调制解调系统的设计
精品文档
南华大学电气工程学院
《通信原理课程设计》
设计题目: OFDM调制解调系统的设计
专 业: 电子信息工程
学生姓名: 谭晓倩 学 号: 20114470203
起迄日期: 2014年5月24日—2014年6月6日
指导教师: 李 圣
系主任: 陈忠泽
收集于网络,如有侵权请联系管理员删除
《通信原理课程设计》任务书
1.课程设计的内容和要求(包括原始数据、技术要求、工作要求等):
(0)通信原理课程设计的目的:
巩固并拓展现代通信原理的基本概念、基本理论、分析方法和实现方法。结合EDA技术、数字通信技术、电子技术、仿真技术,学习现代通信系统的建模和设计方法,使学生理论结合实际,提升创新思维和设计能力,增强软件编程仿真能力和解决实际问题的动手能力。
(1)技术要求
1)用VHLD语言对OFDM频带传输系统进行设计与建模。
2)用C或者Matlab语言编程设计2FSK频带传输系统的各个功能模块,并分析该系统在加性高斯噪声信道下的性能。
(2)工作要求:
①查阅参考文献,利用通信原理基本理论,分析系统工作原理,设计系统方框图;
②掌握计算机辅助设计方法,利用Matlab/Simulink、Systemview、Multisim、MaxPlusIII、QuartusII等软件进行仿真设计,具备独立设计能力;
③熟悉通信系统的调试和测量方法;
④掌握电子电路安装调试技术,选择合适的元器件搭接实际电路,掌握电路的测试和故障排除方法,提高分析问题和解决问题的能力。
⑤不能直接从网上或其他资料下载拷贝,一旦发现雷同35%以上,则相关雷同设计的成绩都为不及格。
⑥按时完成设计报告;提交的电子稿必须在附录中含有全套仿真源文件、或设计原图(电子稿是以“学生学号姓名”为命名的压缩文件);并提交纸质设计报告书。
⑦随机抽查,并进行最后答辩。
2.对课程设计成果的要求〔包括图表(或实物)等硬件要求〕:
用Matlab等编程语言实现时,写出详细的注释,并画出各种信号的时域频域波形。设计电路,安装调试或仿真,分析实验结果,并写出设计说明书,语言流畅简洁,文字3500~5000字。仿真设计类要求有仿真流程图、调试时的电脑屏幕截图;实物设计类要求图纸布局合理,符合工程要求,使用Protel软件绘出原理图(SCH)和印制电路板(PCB),器件的选择要有计算依据。
3.主要参考文献:
[1] 樊昌信.通信原理(第6版)[M].北京:电子工业出版社,2012,12.
[2] 樊昌信,曹丽娜 .通信原理教程(第3版)[M].北京:国防工业出版社,2006,9.
[3] 刘学勇.详解MATLAB/Simulink通信系统建模与仿真[M].北京:电子工业出版社,2011,11.
[4] 张水英,徐伟强.通信原理及MATLAB/Simulink仿真[M].北京:人民邮电出版社,2012,9.
[5] 赵鸿图,茅艳.通信原理MATLAB仿真教程[M].北京:人民邮电出版社,2010,11.
[6] 赵静,张瑾.基于MATLAB的通信系统仿真[M].北京:北京航空航天大学出版社,2010,1.
[7] 黄智伟.基于NI Multisim的电子电路计算机仿真设计与分析(修订版)[M].北京:电子工业出版社,2011, 6.
4.课程设计工作进度计划:
序号
起 迄 日 期
工 作 内 容
2014.5.24~2014.5.27
查阅资料,系统方案设计
2014.5.28~2014.6.1
用编程语言、或者仿真软件进行设计
2014.6.2~2014.6.4
程序、软件、实物的调试,排除故障,分析实验结果
2014.6.5 ~ 2014.6.6
分析总结,整理设计报告
主指导教师
李圣
日期:
2014 年 5 月 20日
附件二:
《通信原理课程设计》设计说明书格式
一、纸张和页面要求
A4纸打印;页边距要求如下:页边距上下各为2.5 厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
二、说明书装订页码顺序
(1)任务书 (2)论文正文:包括中英文摘要、目录、绪论、方案设计、硬软件设计调试(仿真过程设计及调试)、分析结论 (3)参考文献(5篇以上),(4)附 录
三、课程设计说明书撰写格式
见范例
范例
设计任务及指标 (黑体四号)
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ (首行缩进两个字,宋体小四号)
1☆☆☆☆ (黑体四号)
正文……(首行缩进两个字,宋体小四号)
1.1(空一格)☆☆☆☆☆☆ (黑体小四号)
正文……(首行缩进两个字,宋体小四号)
1.2 ☆☆☆☆☆☆、☆☆☆
正文……(首行缩进两个字,宋体小四号)
2 ☆☆☆☆☆☆ (黑体四号)
正文……(首行缩进两个字,宋体小四号)
2.1 ☆☆☆☆、☆☆☆☆☆☆,☆☆☆ (黑体小四号)
正文……(首行缩进两个字,宋体小四号)
2.1.1☆☆☆,☆☆☆☆☆,☆☆☆☆ (楷体小四号)
正文……(首行缩进两个字,宋体小四号)
(1)……
① ……
图1. 工作波形示意图(图题,居中,宋体五号)
5 结论(黑体四号)
☆☆☆☆☆☆ (首行缩进两个字,宋体小四号)
参考文献(黑体四号、顶格)
参考文献要另起一页,一律放在正文后,不得放在各章之后。只列出作者直接阅读过或在正文中被引用过的文献资料,作者只写到第三位,余者写“等”,英文作者超过3人写“et al”。
几种主要参考文献著录表的格式为:
⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码.
⑵期 刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码.
⑶论 文 集:[序号]著者.篇名[A]编者.论文集名[C] .出版地:出版者,出版者. 出版年:起~止页码.
⑷学位论文:[序号]著者.题名[D] .保存地:保存单位,授予年.
⑸专利文献:专利所有者.专利题名[P] .专利国别:专利号,出版日期.
⑹标准文献:[序号]标准代号 标准顺序号—发布年,标准名称[S] .
⑺报 纸:责任者.文献题名[N].报纸名,年—月—日(版次).
附 录(居中,黑体四号)
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ (首行缩进两个字,宋体小四号。另起一页。附录的有无根据说明书(设计)情况而定,内容一般包括正文内不便列出的冗长公式推导、符号说明(含缩写)、计算机程序、整体原理图、印制电路板图等。)
摘要
正交频分复用(OFDM)是一种多载波宽带数字调制技术。相比一般的数字通信系统,它具有频带利用率高和抗多径干扰能力强等优点,因而适合于高速率的无线通信系统。正交频分复用OFDM是第四代移动通信的核心技术。论文首先简要介绍了OFDM基本原理。在给出OFDM系统模型的基础上,用MATLAB语言实现了整个系统的计算机设计仿真并给出了程序,并对结果做出了分析
关键词:OFDM,基本原理,Matlab
目录
1. OFDM基本原理 1
2. 原理框图设计 1
2.1框图模块分析 2
2.1.1总设计分析 2
2.1.2各个模块分析 2
3. 小结 5
3.1实验仿真结果 5
3.2误码率的计算 8
3.3心得体会 8
参考文献 9
附录 10
(1)16QAM的调制函数 10
(2)16QAM的解调函数 10
(3)加窗函数 11
(4)OFDM主程序 11
1. OFDM基本原理
正交频分复用的基本原理可以概述如下:把一路高速的数据流通过串并变换,分配到传输速率相对较低的若干子信道中进行传输。在频域内将信道划分为若干相互正交的子信道,每个子信道均拥有自己的载波分别进行调制,信号通过各个子信道独立地进行传输。
由于多径传播效应会造成接收信号相互重叠,产生信号波形间的相互干扰,形成符号间干扰,如果每个子信道的带宽被划分的足够窄,每个子信道的频率特性就可近似看作是平坦的。
因此,每个子信道都可看作无符号间干扰的理想信道。这样,在接收端不需要使用复杂的信道均衡技术即可对接收信号可靠地进行解调。在OFDM系统中,通过在OFDM符号之间插入保护间隔来保证频域子信道之间的正交性,以及消除由于多径传播效应所引起的OFDM符号间的干扰。因此,OFDM特别适合于在存在多径衰落的移动无线信道中高速传输数据。
2. 原理框图设计
通过查资料得通过使用循环前缀,一方面消除了OFDM符号间干扰,另一方面保证了子载波之间的正交性,但是这种合成信号会产生较大的峰值功率,因此可以通过加窗函数来解决这个问题。
OFDM的原理框图如1所示。
图2.1 OFDM原理框图
2.1框图模块分析
2.1.1总设计分析
如图2所示,原始高速率比特流经过串/并变换后变为若干组低速率的比特流d(M),这些d(M)经过调制后变成了对应的频域信号,然后经过加循环前缀、D/A变换,通过RF发送出去;经过无线信道的传播后,在接收机以与发送机相反的顺序接收解调下来,从而得到原发送信号。
2.1.2各个模块分析
(1)产生数据:使用个随机数产生器产生二进制数据,每次产生的数据个数为carrier_count * symbols_per_carrier * bits_per_symbol。
(2)编码交织:交织编码可以有效地抗突发干扰。
子载波调制:OFDM采用BPSK、QPSK、16QAM、64QAM4种调制方式。我这里采用16QAM调制方式。按照星座图,将每个子信道上的数据,映射到星座图点的复数表示,转换为同相Ich和正交分量Qch。bits_per_symbol=4,则每个OFDM符号的每个子信道上有4个二进制数{d1,d2,d3,d4},共有16种取值,对应星座图上16个点,每个点的实部记为Qch。为了所有的映射点有相同高的平均功率,输出要进行归一化。
所以16QAM乘以归一化系数系数,输出的复数序列即为映射后的调制结果。
(3)串并转换:将一路高速数据转换成多路低速数据
IFFT:对上一步得到的相同分量和正交分量按照(Ich+Qch*i)进行IFFT运算。并将得到的复数的实部作为新的Ich,虚部作为新的Qch。
在实际运用中, 信号的产生和解调都是采用数字信号处理的方法来实现的, 此时要对信号进行抽样, 形成离散时间信号。 由于OFDM信号的带宽为B=N·Δf, 信号必须以Δt=1/B=1/(N·Δf)的时间间隔进行采样。 采样后的信号用sin表示, i = 0, 1, …, N-1,则有
(2-1)
从该式可以看出,它是一个严格的离散反傅立叶变换(IDFT)的表达式。IDFT可以采用快速反傅立叶变换(IFFT)来实现
加入保护间隔:由IFFT运算后的每个符号的同相分量和正交分量分别转换为串行数据,并将符号尾部G长度的数据加到头部,构成循环前缀。如果加入空的间隔,在多径传播的影响下,会造成载波间干扰ICI。保护见个的长度G应该大于多径时的扩张的最大值。
图2.2多径情况下,空闲保护间隔在子载波间造成的干扰
图2.3经过加窗处理后的0FDM符号示意图
(4)加窗:加窗是为了降低系统的PAPR,滚降系数为1/32。通过这种方法,可以显著地改善OFDM通信系统高的PAPR分布,大大降低了峰值信号出现的概率以及对功率放大器的要求,节约成本。经常被采用的窗函数是升余弦窗。
(2-2)
图2.4 经过加窗处理后的OFDM符号示意图
(5)通过信道:信道分为多径实验信道和高斯白噪声信道。多径时延信道直射波河延迟波对于标准时间按照固定比率递减,因此多径时延信道参数为比率和对大延迟时间。
(6)同步:同步是决定OFDM系统高性能十分重要的方面,实际OFDM系统都有同步过称。主要同步方法有使用导频,循环前缀,忙算法三种。研究目的为同步的可以详细实现本步,基本的方针可以略过此步,假设接收端已经于发射端同步。
(7)去掉保护间隔:根据同步得到的数据,分别见给每个符号的同相分量和正交分量开头的保护间隔去掉。
(8)并串转换:将每个符号分布在子信道上的数据,还原为一路串行数据。
(9)FFT:对每个符号的同相分量和正交分量按照(Ich+Qch*i)进行FFT运算。并将得到的实部作为新的Ich,虚部作为新的Qch。
与发端相类似,上述相关运算可以通过离散傅立叶变换(DFT)或快速傅立叶变换(FFT)来实现, 即:
(2-3)
(10)子载波解调:FFT后的同相粉脸感和正交分量两组数据在星座图上对饮高的点,由于噪声和信道的影响,不再是严格的发送端的星座图。将得到的星座图上的点按照最近原则判决为原星座图上的点,并按映射规则还原为一组数据。
(11)解码解交织:按照编码交织对应解码,解交织的方法,还原为原始数据,并进行纠错处理。
(12)计算误码率:比较第2步产生的数据和接收到的数据,计算误码率BER
3. 小结
3.1实验仿真结果
图3.1 16QAM调制星座图
图3.2循环前后缀的OFDM图
图3.3加窗的发送信号频谱
图3.4极坐标下接收信号的极坐标图
图3.5 XY坐标下接收信号星座图
图3.6 二进制比特流
3.2误码率的计算
bit_error_count =16
ber =0.0017
3.3心得体会
说实话,刚拿到这个设计题目时,真的是丝毫没头绪,Quartus,Matlab软件都不会使用,OFDM也不理解。在这里,我也特别感谢李圣老师的指导,是他在我设计没有头绪时,耐心地给我讲解,在他的指导下,我成功的完成了这次OFDM调制解调系统的设计。
在设计过程中,首先我通过查资料渐理解了OFDM调制解调系统。在用matlab 编程时,总是不出图像,通过网上百度,原来我在定义函数时没有注意让函数名与保存名一致,我也直接在脚本文件中编程,致使我一直运行错误。当我通过不断修正,最后成功仿真时,我的自豪感油然而生。
这次课程设计,培养了我的软件编程实现能力,解决实际问题和独立思考的能力。加强了我对OFDM系统原理的理解,也更加能熟练运用Matlab软件。我也明白了遇到困难不能逃避,要迎难而上,这样你才能取得进步。
参考文献
[ 1 ]Erich Cosby. Orthogonal Frequency Division Multip lexing
(OFDM) Tutorial and Analysis[M ]. Northern Virginia Center,2001.
[ 2 ]Mingqi L i, ,Qicong Peng, Yubai L i, Performance Evaluation of
MC - DS - CDMA Systems inMultipath Fading Channels[ J ]. 0
- 7803 - 7547 - 5 /02, IEEE , 2002.
[ 3 ]A Peled, A Ruiz. Frequency domain data transmission using
reduced computational comp lexity algorithms[C ]. In Proc.
IEEE Int. Conf. Acoust. , Speech, Signal Processing, 1980.
964 - 967.
[ 4 ]R van Nee. OFDM WirelessMultimedia Communications[M ].
Rrasad R. Artech House, 1998.
[ 5 ]周正兰,等. OFDM及其链路级平台的Simulink实现[ J ]. 中国
数据通信, 2003, (10) : 90 - 92
[ 6 ]尹泽明,等. 精通MATLAB6 [M ]. 清华大学出版社, 2002.
[ 7 ]蔡涛, 等译. 无线通信原理与应用[M ]. 电子工业出版社,
1999.
[ 8 ]丁玉美,等. 数字信号处理[M]. 西安电子科技大学出版社, 2003.
附录
(1)16QAM的调制函数
function [complex_qam_data]=qam16(bitdata)
%modulation of 16QAM,modulate bitdata to 16QAM complex signal
X1=reshape(bitdata,4,length(bitdata)/4)';
d=1;%min distance of symble
for i=1:length(bitdata)/4;
for j=1:4
X1(i,j)=X1(i,j)*(2^(4-j));
end
source(i,1)=1+sum(X1(i,:));%convert to the number 1 to 16
end
mapping=[-3*d 3*d;
-d 3*d;
d 3*d;
3*d 3*d;
-3*d d;
-d d;
d d;
3*d d;
-3*d -d;
-d -d;
d -d;
3*d -d;
-3*d -3*d;
-d -3*d;
d -3*d;
3*d -3*d];
for i=1:length(bitdata)/4
qam_data(i,:)=mapping(source(i),:);%data mapping
end
complex_qam_data=complex(qam_data(:,1),qam_data(:,2));
(2)16QAM的解调函数
function [demodu_bit_symble]=demoduqam16(Rx_serial_complex_symbols)
%将得到的串行16QAM数据解调成二进制比特流
complex_symbols=reshape(Rx_serial_complex_symbols,length(Rx_serial_complex_symbols),1);
d=1;
mapping=[-3*d 3*d;
-d 3*d;
d 3*d;
3*d 3*d;
-3*d d;
-d d;
d d;
3*d d;
-3*d -d;
-d -d;
d -d;
3*d -d;
-3*d -3*d;
-d -3*d;
d -3*d;
3*d -3*d];
complex_mapping=complex(mapping(:,1),mapping(:,2));
for i=1:length(Rx_serial_complex_symbols);
for j=1:16;
metrics(j)=abs(complex_symbols(i,1)-complex_mapping(j,1));
end
[min_metric decode_symble(i)]= min(metrics) ; %将离某星座点最近的值赋给decode_symble(i)
end
decode_bit_symble=de2bi((decode_symble-1)','left-msb');
demodu_bit_symble=reshape(decode_bit_symble',1,length(Rx_serial_complex_symbols)*4);
(3)加窗函数
function [rcosw]=rcoswindow(beta, Ts)
%定义升余弦窗,其中beta为滚降系数,Ts为包含循环前缀的OFDM符号的长度,Ts为正偶数
t=0:(1+beta)*Ts;
rcosw=zeros(1,(1+beta)*Ts);
for i=1:beta*Ts;
rcosw(i)=0.5+0.5*cos(pi+ t(i)*pi/(beta*Ts));
end
rcosw(beta*Ts+1:Ts)=1;
for j=Ts+1:(1+beta)*Ts+1;
rcosw(j-1)=0.5+0.5*cos((t(j)-Ts)*pi/(beta*Ts));
end
rcosw=rcosw';%变换为列向量
(4)OFDM主程序
clear all;
close all;
carrier_count=200;%子载波数
symbols_per_carrier=12;%每子载波含符号数
bits_per_symbol=4;%每符号含比特数,16QAM调制
IFFT_bin_length=512;%FFT点数
PrefixRatio=1/4;%保护间隔与OFDM数据的比例 1/6~1/4
GI=PrefixRatio*IFFT_bin_length ;%每一个OFDM符号添加的循环前缀长度为1/4*IFFT_bin_length 即保护间隔长度为128
beta=1/32;%窗函数滚降系数
GIP=beta*(IFFT_bin_length+GI);%循环后缀的长度20
SNR=15; %信噪比dB
%================信号产生===================================
baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol;%所输入的比特数目
carriers = (1:carrier_count) + (floor(IFFT_bin_length/4) - floor(carrier_count/2));%共轭对称子载波映射 复数数据对应的IFFT点坐标
conjugate_carriers = IFFT_bin_length - carriers + 2;%共轭对称子载波映射 共轭复数对应的IFFT点坐标
baseband_out=round(rand(1,baseband_out_length));%输出待调制的二进制比特流
%==============16QAM调制====================================
complex_carrier_matrix=qam16(baseband_out);%列向量
complex_carrier_matrix=reshape(complex_carrier_matrix',carrier_count,symbols_per_carrier)';%symbols_per_carrier*carrier_count 矩阵
figure(1);
plot(complex_carrier_matrix,'*r');%16QAM调制后星座图
title('16QAM调制后星座图')
axis([-4, 4, -4, 4]);
grid on
%=================IFFT===========================
IFFT_modulation=zeros(symbols_per_carrier,IFFT_bin_length);%添0组成IFFT_bin_length IFFT 运算
IFFT_modulation(:,carriers ) = complex_carrier_matrix ;%未添加导频信号 ,子载波映射在此处
IFFT_modulation(:,conjugate_carriers ) = conj(complex_carrier_matrix);%共轭复数映射
signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM调制 即IFFT变换
time_wave_matrix =signal_after_IFFT;%时域波形矩阵,行为每载波所含符号数,列ITTF点数,N个子载波映射在其内,每一行即为一个OFDM符号
%=====================添加循环前缀与后缀
XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);
for k=1:symbols_per_carrier;
for i=1:IFFT_bin_length;
XX(k,i+GI)=signal_after_IFFT(k,i);
end
for i=1:GI;
XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀
end
for j=1:GIP;
XX(k,IFFT_bin_length+GI+j)=signal_after_IFFT(k,j);%添加循环后缀
end
end
time_wave_matrix_cp=XX;%添加了循环前缀与后缀的时域信号矩阵,此时一个OFDM符号长度为IFFT_bin_length+GI+GIP=660
%==============OFDM符号加窗==========================================
windowed_time_wave_matrix_cp=zeros(1,IFFT_bin_length+GI+GIP);
for i = 1:symbols_per_carrier
windowed_time_wave_matrix_cp(i,:) = real(time_wave_matrix_cp(i,:)).*rcoswindow(beta,IFFT_bin_length+GI)';%加窗 升余弦窗
end
%========================生成发送信号,并串变换
windowed_Tx_data=zeros(1,symbols_per_carrier*(IFFT_bin_length+GI)+GIP);
windowed_Tx_data(1:IFFT_bin_length+GI+GIP)=windowed_time_wave_matrix_cp(1,:);
for i = 1:symbols_per_carrier-1 ;
windowed_Tx_data((IFFT_bin_length+GI)*i+1:(IFFT_bin_length+GI)*(i+1)+GIP)=windowed_time_wave_matrix_cp(i+1,:);%并串转换,循环后缀与循环前缀相叠加
end
Tx_data=reshape(windowed_time_wave_matrix_cp',(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1)';%加窗后 循环前缀与后缀不叠加 的串行信号
temp_time1 = (symbols_per_carrier)*(IFFT_bin_length+GI+GIP);%加窗后 循环前缀与后缀不叠加 发送总位数
figure (2)
subplot(2,1,1);
plot(0:temp_time1-1,Tx_data );%循环前缀与后缀不叠加 发送的信号波形
grid on
ylabel('Amplitude (volts)')
xlabel('Time (samples)')
title('循环前后缀不叠加的OFDM Time Signal')
temp_time2 =symbols_per_carrier*(IFFT_bin_length+GI)+GIP;
subplot(2,1,2);
plot(0:temp_time2-1,windowed_Tx_data);%循环后缀与循环前缀相叠加 发送信号波形
grid on
ylabel('Amplitude (volts)')
xlabel('Time (samples)')
title('循环前后缀叠加的OFDM Time Signal')
%===============加窗的发送信号频谱=================================
symbols_per_average = ceil(symbols_per_carrier/5);%符号数的1/5,10行
avg_temp_time = (IFFT_bin_length+GI+GIP)*symbols_per_average;%点数,10行数据,10个符号
averages = floor(temp_time1/avg_temp_time);
average_fft(1:avg_temp_time) = 0;%分成5段
for a = 0:(averages-1)
subset_ofdm = Tx_data(((a*avg_temp_time)+1):((a+1)*avg_temp_time));%利用循环前缀后缀未叠加的串行加窗信号计算频谱
subset_ofdm_f = abs(fft(subset_ofdm));%分段求频谱
average_fft = average_fft + (subset_ofdm_f/averages);%总共的数据分为5段,分段进行FFT,平均相加
end
average_fft_log = 20*log10(average_fft);
figure (3)
subplot(2,1,2)
plot((0:(avg_temp_time-1))/avg_temp_time, average_fft_log)%归一化 0/avg_temp_time : (avg_temp_time-1)/avg_temp_time
hold on
plot(0:1/IFFT_bin_length:1, -35, 'rd')
grid on
axis([0 0.5 -40 max(average_fft_log)])
ylabel('Magnitude (dB)')
xlabel('Normalized Frequency (0.5 = fs/2)')
title('加窗的发送信号频谱')
%====================添加噪声=================================
Tx_signal_power = var(windowed_Tx_data);%发送信号功率
linear_SNR=10^(SNR/10);%线性信噪比
noise_sigma=Tx_signal_power/linear_SNR;
noise_scale_factor = sqrt(noise_sigma);%标准差sigma
noise=randn(1,((symbols_per_carrier)*(IFFT_bin_length+GI))+GIP)*noise_scale_factor;%产生正态分布噪声序列
Rx_data=windowed_Tx_data +noise;%接收到的信号加噪声
%=====================接收信号 串/并变换 去除前缀与后缀
Rx_data_matrix=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);
for i=1:symbols_per_carrier;
Rx_data_matrix(i,:)=Rx_data(1,(i-1)*(IFFT_bin_length+GI)+1:i*(IFFT_bin_length+GI)+GIP);%串并变换
end
Rx_data_complex_matrix=Rx_data_matrix(:,GI+1:IFFT_bin_length+GI);%去除循环前缀与循环后缀,得到有用信号矩阵
% OFDM解码 16QAM解码
%=================FFT变换=================================
Y1=fft(Rx_data_complex_matrix,IFFT_bin_length,2);%OFDM解码 即FFT变换
Rx_carriers=Y1(:,carriers);%除去IFFT/FFT变换添加的0,选出映射的子载波
Rx_phase =angle(Rx_carriers);%接收信号的相位
Rx_mag = abs(Rx_carriers);%接收信号的幅度
figure(4);
polar(Rx_phase, Rx_mag,'bd');%极坐标坐标下画出接收信号的星座图
title('极坐标下的接收信号的星座图')
[M, N]=pol2cart(Rx_phase, Rx_mag);
Rx_complex_carrier_matrix = complex(M, N);
figure(5);
plot(Rx_complex_carrier_matrix,'*r');%XY坐标接收信号的星座图
title('XY坐标接收信号的星座图')
axis([-4, 4, -4, 4]);
grid on
%====================16qam解调=======================================
Rx_serial_complex_symbols=reshape(Rx_complex_carrier_matrix',size(Rx_complex_carrier_matrix, 1)*size(Rx_complex_carrier_matrix,2),1)' ;
Rx_decoded_binary_symbols=demoduqam16(Rx_serial_complex_symbols);
baseband_in = Rx_decoded_binary_symbols;
figure(6);
subplot(2,1,1);
stem(baseband_out(1:100));
展开阅读全文