第一范文网 - 专业文章范例文档资料分享平台

完整的OFDM系统的仿真实现

来源:用户分享 时间:2025/6/25 16:14:49 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

%窗函数子程序,子程序名称:recoswindow.m function[rcosw]=rcoswindow(beta,Ts)

%输入参数:beta为升余弦窗关键系数,Ts为IFFT长度家循环前缀长度 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+beta)*Ts+1;

rcosw(j-1)=0.5+0.5*cos((t(j)-Ts)*pi/(beta*Ts)); %计算升余弦窗第三部分 end

rcosw=rcosw';%转换为列矢量

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

QAM调制子程序,子程序名称为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映射表中的索引 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,:)); end

QAM映射表,改表中存放的16对,没对两个实数,表示星座位置 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),:);%数据映射 end

complex_qam_data=complex(qam_data(:,1),qam_data(:,2)); %组合为负数形式,形成16QAM信号 end

%将16QAM信号的解调子程序,子程序的名称:demoduqam16.m %该子程序测试

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);

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)); %将数据映射表中转换为16QAM信号,即3组合为复数; 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_metricdecode_symble(i)]=min(metrics);

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

end

decode_bit_symble=de2bi((decode_symble-1)','left-msb'); %将16QAM转为二进制

demodu_bit_symble=reshape(decode_bit_symble',1,length(Rx_serial_complex_symbols)*4);%转换为一行

end

baseband_out_length=16000; rand('twister',0);

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

%产生16000bit待传输的二进制比特流。这里存放的是发送的二进制信号与后面解调后的二进制信号比较,可以计算误码率。

QAM调制病绘制星座图。

complex_carrier_matrix=qam16(baseband_out); figure(1);

plot(complex_carrier_matrix,'*r');%绘制16QAM星座图 title('16QAM调制后星座图'); grid on ;

QAM调制子程序,子程序名称为qam16.m %将二进制数目流转换为16QAM信号 %QAM16测试

%输入参数:bitdata为二进制数码流

%输出参数:complex_qam_data为16QAM复信号 close all; clear all;

baseband_out_length=16000; rand('twister',0);

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映射表中的索引 % 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,:)); % end

% QAM映射表,该表中存放的16对,没对两个实数,表示星座位置 % 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];

搜索更多关于: 完整的OFDM系统的仿真实现 的文档
完整的OFDM系统的仿真实现.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c3v7jv6gaf37s7tu43p391qw0b8cv4600t1j_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top