预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共17页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

%窗函数子程序,子程序名称:recoswindow.m function[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));%计算升余弦窗的第一部分 end rcosw(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)); %计算升余弦窗第三部分 end rcosw=rcosw';%转换为列矢量 %将16QAM信号的解调子程序,子程序的名称:demoduqam16.m end%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: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),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信号 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);%转换为一行 endbaseband_out_length=16000; rand('twister',0); baseband_out=round(rand(1,baseband_out_length)); %产生16000bit待传输的二