1、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;length(bitdata)/4qam_data(i,:)=mapping(source(i),:);%data mappingcomplex_qam_data=complex(qam_data(:,1),qam_data(:,2);5.2 16QAM 的解调函数。function demodu_bit_symble=demoduqam16(Rx_serial_complex_symbols)%将得到的
2、串行 16QAM 数据解调成二进制比特流complex_symbols=reshape(Rx_serial_complex_symbols,length(Rx_serial_complex_symbols),1);complex_mapping=complex(mapping(:,1),mapping(:length(Rx_serial_complex_symbols);16;metrics(j)=abs(complex_symbols(i,1)-complex_mapping(j,1);min_metric decode_symble(i)= min(metrics) ; %将离某星座点最近
3、的 值赋给decode_symble(i)decode_bit_symble=de2bi(decode_symble-1),left-msbdemodu_bit_symble=reshape(decode_bit_symble,1,length(Rx_serial_complex_symbols)*4);5.3加窗函数function rcosw=rcoswindow(beta, Ts)%定义升余弦窗, 其中 beta 为滚降系数, Ts 为包含循环前缀的 OFDM 符号的长度,Ts 为正偶数t=0:(1+beta)*Ts;rcosw=zeros(1,(1+beta)*Ts);beta*Ts;
4、rcosw(i)=0.5+0.5*cos(pi+ t(i)*pi/(beta*Ts);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);rcosw=rcosw%变换为列向量5.4 OFDM 主程序clear all;close all;carrier_count=200;%子载波数symbols_per_carrier=12;%每子载波含符号数bits_per_symbol=4;%每符号含比特数,16QAM 调制IFFT_bin_length=512;%FFT
5、点数PrefixRatio=1/4;%保护间隔与 OFDM 数据的比例 1/61/4GI=PrefixRatio*IFFT_bin_length ;% 每 一 个 OFDM 符 号 添 加 的 循 环 前 缀 长 度 为1/4*IFFT_bin_length 即保护间隔长度为 128beta=1/32;%窗函数滚降系数GIP=beta*(IFFT_bin_length+GI);%循环后缀的长度 20SNR=15; %信噪比 dB%=%=信号产生=baseband_out_length = carrier_count * symbols_per_carrier * bits_per_symbol
6、;%所输入的比特数目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(bas
7、eband_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_leng
8、th);% 添 0 组 成 IFFT_bin_lengthIFFT 运算IFFT_modulation(:,carriers ) = complex_carrier_matrix ;%未添加导频信号 , 子载波映射在此处,conjugate_carriers ) = conj(complex_carrier_matrix);%共轭复数映射%=signal_after_IFFT=ifft(IFFT_modulation,IFFT_bin_length,2);%OFDM 调制 即 IFFT 变换time_wave_matrix =signal_after_IFFT;%时域波形矩阵, 行为每载波所含
9、符号数, 列 ITTF 点数, N 个子载波映射在其内, 每一行即为一个 OFDM 符号%=%= 添 加 循 环 前 缀 与 后 缀=XX=zeros(symbols_per_carrier,IFFT_bin_length+GI+GIP);for k=1:symbols_per_carrier;IFFT_bin_length;XX(k,i+GI)=signal_after_IFFT(k,i);GI;XX(k,i)=signal_after_IFFT(k,i+IFFT_bin_length-GI);%添加循环前缀GIP;XX(k,IFFT_bin_length+GI+j)=signal_afte
10、r_IFFT(k,j);%添加循环后缀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_carrierwindowed_time_wave_matrix_cp(i,:) =real(time_wave_matrix_cp(i,:).*rcoswindow(beta,IFFT_bin_leng
11、th+GI)%加窗 升余弦窗%= 生 成 发 送 信 号 , 并 串 变 换=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,: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,:%并串转换, 循环后缀与循环前缀相叠加%=Tx_data=reshape(windowed_time_wave_matrix_cp,(symbols_per_carrier)*(IFFT_bin_length+GI+GIP),1)%加窗后 循环前缀与后缀不叠加 的串行信号temp_t
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1