⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receive.asv

📁 OFDM系统
💻 ASV
字号:
function [ DeCodeBitData ] = Receive( RecData,ChanData )global FLAG_AWGN;global FLAG_MULTIPATH;global Channel_Est;global Num_Bit;global Num_Train;global Syn_Error;  global Channel_fft;global NSDEC;% Channel estimationif Channel_Est==1    Channel = RecData(33+Syn_Error : 96+Syn_Error);else    Channel = ChanData;endif(FLAG_MULTIPATH == 1)    Channel_fft = fft(Channel,64);end% GetData = RecData( Num_Train*80 +17 + Syn_Error : Num_Train*80 + Num_Bit*5/16 +Syn_Error );GetData = [RecData( Num_Train*80 +17 + Syn_Error : end)];Num_Sym_OFDM = 2*Num_Bit/4/64;GetData_fft = zeros(1, 2*Num_Bit/4);for i=1:Num_Sym_OFDM        % fft    Sym_OFDM_deletCP = GetData( 17+(i-1)*80 : i*80 );    Sym_OFDM_fft = fft( Sym_OFDM_deletCP , 64 );        % equalization    if(FLAG_MULTIPATH == 1)        % Sym_OFDM_fft = Sym_OFDM_fft .* (conj(Channel_fft)./abs(Channel_fft));        Sym_OFDM_fft = Sym_OFDM_fft ./ Channel_fft;    end        GetData_fft(1+(i-1)*64 : i*64) = Sym_OFDM_fft;    endt = poly2trellis(7, [131, 171]);GetData_fft = sqrt(10)*GetData_fft / 8;for i=1:length(GetData_fft)    k = mod((i-1),64)+1;    DeMapBitData( (i-1)*4+1 ) = -real(GetData_fft(i) );    DeMapBitData( (i-1)*4+2 ) = abs( real(GetData_fft(i) ) ) - 2;%*abs(Channel_fft(k));    DeMapBitData( (i-1)*4+3 ) = -imag(GetData_fft(i) );    DeMapBitData( (i-1)*4+4 ) = abs( imag(GetData_fft(i) ) )-2;%*abs(Channel_fft(k)); end% width = max(DeMapBitData) - min(DeMapBitData);Thesh = max(abs(DeMapBitData));width = Thesh*2;if NSDEC==3    PARTITION = -Thesh+width/8 : width/8 : -Thesh+7*width/8;    [index, DeMapBitData] = quantiz(DeMapBitData,PARTITION,[7 6 5 4 3 2 1 0]); % Values in qcode are between 0 and 2^3-1.elseif NSDEC==2    PARTITION = -Thesh+width/4 : width/4 : -Thesh+3*width/4;    [index, DeMapBitData] = quantiz(DeMapBitData,PARTITION,[3 2 1 0]);         % Values in qcode are between 0 and 2^2-1.elseif NSDEC==8    PARTITION = -Thesh+width/256 : width/256 : -Thesh+255*width/256;    [index, DeMapBitData] = quantiz(DeMapBitData, PARTITION, 255:-1:0);          % Values in qcode are between 0 and 2^8-1.end    % deinterleavingfor i=1: (2*Num_Bit/256)        DeInter1Out = DeMapBitData(1+(i-1)*256 : i*256);        for k=1:256               j = 2*floor((k-1)/2) + mod((k+floor((k+15)/16)), 2);    %解高低位交织           DeInter2In(k) = DeInter1Out(j+1);       end        for k=1:256                      j = 16*(k-1) - 255*floor((k-1)/16);                     %解分组交织              DeInterOut(j+1+(i-1)*256) = DeInter2In(k);       endendDeCodeBitData = zeros(1, Num_Bit);% DeCodeBitData = vitdec( DeInterOut, t, 35, 'term', 'unquant');DeCodeBitData = vitdec( DeInterOut, t, 42, 'term', 'soft', NSDEC);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -