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

📄 apsk_mod_de.m

📁 16APSK/32APSK的matlab仿真程序
💻 M
字号:
function mod_out=APSK_mod_de(mod_in,index,Rin,Rmid,Rout)
len=length(mod_in);
for(i=1:len)
    if(real(mod_in(i))>0)
        if(imag(mod_in(i))>0)
           angle(i)=atan(imag(mod_in(i))/real(mod_in(i)));
        else
            angle(i)=atan(imag(mod_in(i))/real(mod_in(i)))+2*pi;
        end    
    else
        angle(i)=atan(imag(mod_in(i))/real(mod_in(i)))+pi;
    end 
    range(i)=sqrt(real(mod_in(i))^2+imag(mod_in(i))^2);
end
j=1;
switch index
case 4,
    for i=1:len
     if(abs(range(i))<(Rin+Rout)/2)%inside_circle
        for m=1:3
          if(angle(i)<(pi/4)||angle(i)>(7*pi/4))
              mod_out(j)=0;mod_out(j+1)=0;mod_out(j+2)=0;
              mod_out(j+3)=0;j=j+4;break;
          end
          if(angle(i)<(m*pi/2+pi/4)&&angle(i)>(m*pi/2-pi/4))
              mod_out(j)=0;mod_out(j+1)=0;mod_out(j+2)=fix(m/2);
              mod_out(j+3)=fix(mod(m,2));j=j+4;break;
          end
         end
     else%outside_circle
         for m=5:15
            if(angle(i)<(pi/12)||angle(i)>(23*pi/12))
              mod_out(j)=0;mod_out(j+1)=1;mod_out(j+2)=0;
              mod_out(j+3)=0;j=j+4;break;
            end
            if(angle(i)<((m-4)*pi/6+pi/12)&&angle(i)>((m-4)*pi/6-pi/12))
              mod_out(j)=fix(m/8);mod_out(j+1)=fix(mod(m,8)/4);mod_out(j+2)=fix(mod(m,4)/2);
              mod_out(j+3)=fix(mod(m,2));j=j+4;break;
            end
         end
     end    
    end
case 5,
    for  i=1:len        
     if(abs(range(i))<(Rin+Rmid)/2)%inside_circle
        for m=1:3
          if(angle(i)<(pi/4)||angle(i)>(7*pi/4))
              mod_out(j)=0;mod_out(j+1)=0;mod_out(j+2)=0;
              mod_out(j+3)=0; mod_out(j+4)=0;j=j+5;break;
          end
          if(angle(i)<(m*pi/2+pi/4)&&angle(i)>(m*pi/2-pi/4))
              mod_out(j)=0;mod_out(j+1)=0;mod_out(j+2)=0;mod_out(j+3)=fix(m/2);
              mod_out(j+4)=fix(mod(m,2));j=j+5;break;
          end
        end
     elseif(abs(range(i))>(Rmid+Rout)/2)%outside_circle
        for m=17:31
          if(angle(i)<(pi/16)||angle(i)>(31*pi/16))
              mod_out(j)=1;mod_out(j+1)=0;mod_out(j+2)=0;
              mod_out(j+3)=0; mod_out(j+4)=0;j=j+5;break;
          end
          if(angle(i)<((m-16)*pi/8+pi/16)&&angle(i)>((m-16)*pi/8-pi/16))
              mod_out(j)=fix(m/16);mod_out(j+1)=fix(mod(m,16)/8);mod_out(j+2)=fix(mod(m,8)/4);
              mod_out(j+3)=fix(mod(m,4)/2);mod_out(j+4)=fix(mod(m,2));j=j+5;break;
          end
        end    
     else%middle_circle
         for m=5:15
            if(angle(i)<(pi/12)||angle(i)>(23*pi/12))
              mod_out(j)=0;mod_out(j+1)=0;mod_out(j+2)=1;
              mod_out(j+3)=0; mod_out(j+4)=0;j=j+5;break;
            end
            if(angle(i)<((m-4)*pi/6+pi/12)&&angle(i)>((m-4)*pi/6-pi/12))
              mod_out(j)=0; mod_out(j+1)=fix(m/8);mod_out(j+2)=fix(mod(m,8)/4);mod_out(j+3)=fix(mod(m,4)/2);
              mod_out(j+4)=fix(mod(m,2));j=j+5;break;
            end   
         end
     end            
    end
end

⌨️ 快捷键说明

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