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

📄 mapping.m

📁 这是ofdm的原始仿真代码
💻 M
字号:
  function out= mapping(signal_to_modu,pn,dight)
  
%   pn=[1,1,1,1,-1,-1,-1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,1,1,-1,1,1,-1,1,1,1,1,1,1,-1,1,...
% 1,1,-1,1,1,-1,-1,1,1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1,-1,-1,1,1,1,1,1,-1,-1,1,1,...
% -1,-1,1,-1,1,-1,1,1,-1,-1,-1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,1,-1,1,-1,1,-1,1,...
% -1,-1,-1,-1,-1,1,-1,1,1,-1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,1,1,1,-1,-1,-1,-1,-1,-1,-1];%used to scramble the pilot

        switch(dight)
            case 1
                for k=1:length(signal_to_modu)
                if signal_to_modu(k)==0
                   d(k)=-1;
               else
                   d(k)=1;
               end
               end
            case 2
                for k=1:floor(length(signal_to_modu)/2)
               if signal_to_modu(2*k-1)==0
                  I_out(k)=-1;
                else
                  I_out(k)=1;
                end
                if signal_to_modu(2*k)==0
                  Q_out(k)=-1;
                else
                  Q_out(k)=1;
                end
                  d(k)=1/(2^0.5)*(I_out(k)+(Q_out(k))*i);
                end
              case 4
                 for k=1:floor(length(signal_to_modu)/4)
                 if and(signal_to_modu(4*k-3)==0,signal_to_modu(4*k-2)==0)
                    I_out(k)=-3;
                 end
                 if and(signal_to_modu(4*k-3)==0,signal_to_modu(4*k-2)==1)
                    I_out(k)=-1;
                 end
                 if and(signal_to_modu(4*k-3)==1,signal_to_modu(4*k-2)==1)
                    I_out(k)=1;
                 end
                 if and(signal_to_modu(4*k-3)==1,signal_to_modu(4*k-2)==0)
                    I_out(k)=3;
                end
                 if  and(signal_to_modu(4*k-1)==0,signal_to_modu(4*k)==0)
                    Q_out(k)=-3;
                 end
                  if  and(signal_to_modu(4*k-1)==0,signal_to_modu(4*k)==1)
                    Q_out(k)=-1;
                  end
                  if  and(signal_to_modu(4*k-1)==1,signal_to_modu(4*k)==1)
                     Q_out(k)=1;
                  end
                  if  and(signal_to_modu(4*k-1)==1,signal_to_modu(4*k)==0)
                    Q_out(k)=3;
                  end
                  d(k)=1/(10^0.5)*(I_out(k)+(Q_out(k))*i);
                  end   
                  case 6
                      for k=1:floor(length(signal_to_modu)/6)
                     if  signal_to_modu(6*k-5)==0&signal_to_modu(6*k-4)==0&signal_to_modu(6*k-3)==0
                        I_out(k)=-7;
                     end
                     if  signal_to_modu(6*k-5)==0&signal_to_modu(6*k-4)==0&signal_to_modu(6*k-3)==1
                        I_out(k)=-5;
                     end
                     if  signal_to_modu(6*k-5)==0&signal_to_modu(6*k-4)==1&signal_to_modu(6*k-3)==1
                        I_out(k)=-3;
                    end
                     if  signal_to_modu(6*k-5)==0&signal_to_modu(6*k-4)==1&signal_to_modu(6*k-3)==0
                       I_out(k)=-1;
                    end
                     if  signal_to_modu(6*k-5)==1&signal_to_modu(6*k-4)==1&signal_to_modu(6*k-3)==0
                      I_out(k)=1;
                     end
                     if signal_to_modu(6*k-5)==1&signal_to_modu(6*k-4)==1&signal_to_modu(6*k-3)==1
                      I_out(k)=3;
                     end
                     if  signal_to_modu(6*k-5)==1&signal_to_modu(6*k-4)==0&signal_to_modu(6*k-3)==1
                       I_out(k)=5;
                     end
                     if signal_to_modu(6*k-5)==1&signal_to_modu(6*k-4)==0&signal_to_modu(6*k-3)==0
                       I_out(k)=7;
                     end
                     if  signal_to_modu(6*k-2)==0&signal_to_modu(6*k-1)==0&signal_to_modu(6*k)==0
                        Q_out(k)=-7;
                     end
                      if  signal_to_modu(6*k-2)==0&signal_to_modu(6*k-1)==0&signal_to_modu(6*k)==1
                        Q_out=(k)-5;
                      end
                      if  signal_to_modu(6*k-2)==0&signal_to_modu(6*k-1)==1&signal_to_modu(6*k)==1
                        Q_out(k)=-3;
                      end
                      if  signal_to_modu(6*k-2)==0&signal_to_modu(6*k-1)==1&signal_to_modu(6*k)==0
                         Q_out(k)=-1;
                      end
                      if signal_to_modu(6*k-2)==1&signal_to_modu(6*k-1)==1&signal_to_modu(6*k)==0
                        Q_out(k)=1;
                      end
                      if signal_to_modu(6*k-2)==1&signal_to_modu(6*k-1)==1&signal_to_modu(6*k)==1
                       Q_out(k)=3;
                      end
                      if  signal_to_modu(6*k-2)==1&signal_to_modu(6*k-1)==0&signal_to_modu(6*k)==1
                      Q_out(k)=5;
                      end
                      if  signal_to_modu(6*k-2)==1&signal_to_modu(6*k-1)==0&signal_to_modu(6*k)==0
                      Q_out(k)=7;
                      end
    d(k)=1/(42^0.5)*(I_out(k)+(Q_out(k))*i);
end
otherwise
    fprintf('input error');
end
for i=1:6
    out(i)=0;
end
for i=7:11
    out(i)=d(i-6);
end
out(12)=1*pn;
for i=13:25
    out(i)=d(i-7);
end
out(26)=1*pn;
for i=26:32
    out(i)=d(i-8);
end
out(33)=0;
for i=34:39
    out(i)=d(i-9);
end
out(40)=1*pn;
for i=41:53
    out(i)=d(i-10);
end
out(54)=-1*pn;
for i=55:59
    out(i)=d(i-11);
end
for i=60:64
    out(i)=0;
end
    
    

       
           
           
           
            
    

    

⌨️ 快捷键说明

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