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

📄 qam16demod.m

📁 《OFDM关键技术与应用》中16QAM的调制与解调源程序。
💻 M
字号:
function decoderout=QAM16demod(symbol)
% 16QAM demodulation
% 16QAM:
% s3 s2 s1 s0    ml   mQ
%  0  0  0  0    3A   3A
%  0  0  0  1     A   3A
%  0  0  1  1    -A   3A
%  0  0  1  0    -3A  3A
%  0  1  0  0    3A    A
%  0  1  0  1     A    A
%  0  1  1  1    -A    A
%  0  1  1  0    -3A   A
%  1  1  0  0     3A  -A
%  1  1  0  1     A   -A
%  1  1  1  1    -A   -A
%  1  1  1  0    -3A  -A
%  1  0  0  0    3A   -3A
%  1  0  0  1    A    -3A
%  1  0  1  1    -A   -3A
%  1  0  1  0    -3A  -3A
%  note: =1/sqrt(10)
%
symlength=length(symbol);
A=1/sqrt(10);
% temp(ii*4)=s3, temp(ii*4-1)=s2, temp(ii*4-2)=s1, temp(ii*4-3)=s0
for ii=1:symlength
    if real(symbol(ii))>=0
        if imag(symbol(ii))>=0 %1#quandrant
            if real(symbol(ii))>=2*A
                if imag(symbol(ii))>=2*A
                    temp(ii*4)=0;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=0;
                else
                    temp(ii*4)=0;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=0;
                end
            else
                if imag(symbol(ii))>=2*A
                    temp(ii*4)=0;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=1;
                else
                    temp(ii*4)=0;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=1;
                end
             end
         else   % 4#quadrant
             if real(symbol(ii))>=2*A
                 if imag(symbol(ii))>=-2*A
                    temp(ii*4)=1;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=0;
                else
                    temp(ii*4)=1;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=0;
                end
            else
                if imag(symbol(ii))>=-2*A
                    temp(ii*4)=1;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=1;
                else
                    temp(ii*4)=1;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=0;
                    temp(ii*4-3)=1;
                end
             end
         end
     else
         if imag(symbol(ii))>=0    %2#quadrant
             if real(symbol(ii))>=-2*A
                 if imag(symbol(ii))>=2*A
                    temp(ii*4)=0;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=1;
                else
                    temp(ii*4)=0;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=1;
                end
            else
                if imag(symbol(ii))>=2*A
                    temp(ii*4)=0;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=0;
                else
                    temp(ii*4)=0;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=0;
                end
            end
        else    %3#quadrant
            if real(symbol(ii))>=-2*A
                if imag(symbol(ii))>=-2*A
                    temp(ii*4)=1;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=1;
                else
                    temp(ii*4)=1;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=1;
                end
            else
                if imag(symbol(ii))>=-2*A
                    temp(ii*4)=1;
                    temp(ii*4-1)=1;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=0;
                else
                    temp(ii*4)=1;
                    temp(ii*4-1)=0;
                    temp(ii*4-2)=1;
                    temp(ii*4-3)=0;
                end
            end
        end
    end
end    
decoderout=temp;        

⌨️ 快捷键说明

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