完整的OFDM系统的仿真实现

%窗函数子程序,子程序名称:recoswindow.mfunction[rcosw]=rcoswindow(beta,Ts)%输入参数:beta为升余弦窗关键系数,Ts为IFFT长度家循环前缀长度t=0:(1+beta)*Ts;rcosw=zeros(1,(1+beta)*Ts);%计算升余弦窗,共有三部分fori=1:beta*Ts;rcosw(i)=0.5+0.5*cos(pi+t(i)*pi/(beta*Ts));%计算升余弦窗的第一部分endrcosw(beta*Ts+1:Ts)=1;%计算升余弦窗低二部分forj=Ts:(1+beta)*Ts+1;rcosw(j-1)=0.5+0.5*cos((t(j)-Ts)*pi/(beta*Ts));%计算升余弦窗第三部分endrcosw=rcosw';%转换为列矢量%将16QAM信号的解调子程序,子程序的名称:demoduqam16.mend%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映射表中的索引fori=1:length(bitdata)/4;forj=1:4X1(i,j)=X1(i,j)*(2^(4-j));endsource(i,1)=1+sum(X1(i,:));end%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];fori=1:length(bitdata)/4qam_data(i,:)=mapping(source(i),:);%数据映射endcomplex_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*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];complex_mapping=complex(mapping(:,1),mapping(:,2));%将数据映射表中转换为16QAM信号,即3组合为复数;fori=1:length(Rx_serial_complex_symbols);forj=1:16;metrics(j)=abs(complex_symbols(i,1)-complex_mapping(j,1));end[min_metricdecode_symble(i)]=min(metrics);%将接收数据与标准16QAM信号比,找到差最小的,将其对应恢复成标准的16QAM信号enddecode_bit_symble=de2bi((decode_symble-1)','left-msb');%将16QAM转为二进制demodu_bit_symble=reshape(decode_bit_symble',1,length(Rx_serial_complex_symbols)*4);%转换为一行endbaseband_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;%16QAM调制子程序,子程序名称为qam16.m%将二进制数目流转换为16QAM信号%QAM16测试%输入参数:bitdata为二进制数码流%输出参数:complex_qam_data为16QAM复信号closeall;clearall;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映射表中的索引%fori=1:length(bitdata)/4;%forj=1:4%X1(i,j)=X1(i,j)*(2^(4-j));%end%source(i,1)=1+sum(X1(i,:));%end%%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];%fori=1:length(bitdata)/4%qam_data(i,:)=mapping(source(i),:);%数据映射%end%complex_qam_data=complex(qam_data(:,1...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?