完整的OFDM系统的仿真实现Word格式文档下载.docx

上传人:b****3 文档编号:15408549 上传时间:2022-10-30 格式:DOCX 页数:17 大小:25.96KB
下载 相关 举报
完整的OFDM系统的仿真实现Word格式文档下载.docx_第1页
第1页 / 共17页
完整的OFDM系统的仿真实现Word格式文档下载.docx_第2页
第2页 / 共17页
完整的OFDM系统的仿真实现Word格式文档下载.docx_第3页
第3页 / 共17页
完整的OFDM系统的仿真实现Word格式文档下载.docx_第4页
第4页 / 共17页
完整的OFDM系统的仿真实现Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

完整的OFDM系统的仿真实现Word格式文档下载.docx

《完整的OFDM系统的仿真实现Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《完整的OFDM系统的仿真实现Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

完整的OFDM系统的仿真实现Word格式文档下载.docx

forj=Ts:

(1+beta)*Ts+1;

rcosw(j-1)=0.5+0.5*cos((t(j)-Ts)*pi/(beta*Ts));

%计算升余弦窗第三部分

rcosw=rcosw'

;

%转换为列矢量

%将16QAM信号的解调子程序,子程序的名称:

demoduqam16.m

%16QAM调制子程序,子程序名称为qam16.m

%将二进制数目流转换为16QAM信号

function[complex_qam_data]=qam16(bitdata)

bitdata为二进制数码流

%输出参数:

complex_qam_data为16QAM副信号

X1=reshape(bitdata,4,length(bitdata)/4)'

%将二进制数码流以4bitte分段

d=1;

%转换4bit二进制码为十进制码1~16,生态农场mapping映射表中的索引

length(bitdata)/4;

forj=1:

4

X1(i,j)=X1(i,j)*(2^(4-j));

end

source(i,1)=1+sum(X1(i,:

));

%16QAM映射表,改表中存放的16对,没对两个实数,表示星座位置

mapping=[-3*d3*d;

-d3*d;

d3*d;

3*d3*d;

-3*dd;

-dd;

dd;

3*dd;

-3*d-d;

-d-d;

d-d;

3*d-d;

-3*d-3*d;

-d-3*d;

d-3*d;

3*d-3*d];

length(bitdata)/4

qam_data(i,:

)=mapping(source(i),:

);

%数据映射

complex_qam_data=complex(qam_data(:

1),qam_data(:

2));

%组合为负数形式,形成16QAM信号

%该子程序测试

function[demodu_bit_symble]=demoduqam16(Rx_serial_complex_symbols)

%输入参数为:

Rx_serial_complex_symbols为接收端接收到的复16QAM信号

demodu_bit_symble为二进制数码流

complex_symbols=reshape(Rx_serial_complex_symbols,length(Rx_serial_complex_symbols),1);

complex_mapping=complex(mapping(:

1),mapping(:

%将数据映射表中转换为16QAM信号,即3组合为复数;

length(Rx_serial_complex_symbols);

16;

metrics(j)=abs(complex_symbols(i,1)-complex_mapping(j,1));

[min_metricdecode_symble(i)]=min(metrics);

%将接收数据与标准16QAM信号比,找到差最小的,将其对应恢复成标准的16QAM信号

decode_bit_symble=de2bi((decode_symble-1)'

'

left-msb'

%将16QAM转为二进制

demodu_bit_symble=reshape(decode_bit_symble'

1,length(Rx_serial_complex_symbols)*4);

%转换为一行

baseband_out_length=16000;

rand('

twister'

0);

baseband_out=round(rand(1,baseband_out_length));

%产生16000bit待传输的二进制比特流。

这里存放的是发送的二进制信号与后面解调后的二进制信号比较,可以计算误码率。

%16QAM调制病绘制星座图。

complex_carrier_matrix=qam16(baseband_out);

figure

(1);

plot(complex_carrier_matrix,'

*r'

%绘制16QAM星座图

title('

16QAM调制后星座图'

gridon;

%QAM16测试

complex_qam_data为16QAM复信号

closeall;

clearall;

bitdata=round(rand(1,baseband_out_length));

complex_carrier_matrix=qam16(bitdata);

%X1=reshape(bitdata,4,length(bitdata)/4)'

%将二进制数码流以4bite分段

%d=1;

%%转换4bit二进制码为十进制码1~16,生成mapping映射表中的索引

%fori=1:

%forj=1:

%X1(i,j)=X1(i,j)*(2^(4-j));

%end

%source(i,1)=1+sum(X1(i,:

%end

%%16QAM映射表,该表中存放的16对,没对两个实数,表示星座位置

%mapping=[-3*d3*d;

%qam_data(i,:

%complex_qam_data=complex(qam_data(:

%%组合为负数形式,形成16QAM信号

%figure

(1);

%plot(complex_qam_data,'

%title('

%gridon;

%程序功能

%

(1)通过对OFDM信号各个子载波赋共轭对称的数据产生一个实OFDM符号。

%

(2)给OFDM符号加循环前缀与循环后缀

%(3)给OFDM符号加窗。

在程序中加入的是升余弦窗,可以通过改变升余弦窗的滚降系数,观察加入不同升余弦窗对OFDM信号频谱的的影响

%(4)信道采用嘉兴高斯白噪声信道。

可以通过改变信噪比来改变信道环境,从而在接受端通过误码率或是星座图观察信道对OFDM信号传输的影响

%(5)去除循环前缀与循环后缀,对OFDM信号进行解调

%程序代码:

carrier_count=200;

%这个程序中OFDM子载波个数为512,其中400即carrier_count*2为数据符号,其余赋0值

symbols_per_carrier=20;

%每个子载波上的符号数,在这里即是OFDM符号的个数

bits_per_symbol=4;

%OFDM符号的每个子载波上传输的比特数,4bit通常采用的16QAM调制

IFFT_bin_length=512;

%FFT的长度,也即一个OFDM符号的子载波个数;

PrefixRatio=1/4;

%循环前缀的比值,循环前缀与OFDM符号长度的壁纸,通常在1/6~1/4之间

GI=PrefixRatio*(IFFT_bin_length);

%保护间隔的长度,这里为128

beta=1/32;

%升余弦窗的滚降系数

GIP=beta*(IFFT_bin_length+GI);

%循环后缀的长度,这里为20;

SNR=16;

%本程序考虑加性高斯白噪声信道,这里信噪比为30db

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

baseband_out_length=carrier_count*symbols_per_carrier*bits_per_symbol;

%计算传输数据总的比特数,为200*20*4

%bits=16000bits。

16000bits构成20个OFDM符号,每个OFDM符号200个子载波,每个子载波传输4bit信息

carriers=(1:

carrier_count)+(floor(IFFT_bin_length/4)-floor(carrier_count/2));

%计算OFDM符号的在载波的序号,carriers中存放的序号是29~228;

conjugate_carriers=IFFT_bin_length-carriers+2;

%conjugate_carriers=IFFT_bin_length-carriers-2;

%====================================================这个序号有问题

%计算OFDM符号子载波的序号,conjugate_carriers中存放的序号是282~481;

%调用子程序qam16进行16QAM调制。

将base_band中的二进制比特流,每4bit转换为一个16QAM信号,即将二进制比特流每4bit转换为-3-3j,-3+3j,3-3j,3+3j,

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

当前位置:首页 > 高等教育 > 农学

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

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