apsk_mod_de.m
来自「16APSK/32APSK的matlab仿真程序」· M 代码 · 共 80 行
M
80 行
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 + =
减小字号Ctrl + -
显示快捷键?