sttc_code.m
来自「STTC和OFDM编程」· M 代码 · 共 64 行
M
64 行
function output=STTC_code(N)
%------------------------------------------------------
%空时格状码的编码
%------------------------------------------------------
Frame=N;
temp1=[round(rand(1,Frame)),0];
temp2=[round(rand(1,Frame)),0];
state=zeros(1,Frame+2);
send1=zeros(1,Frame+1);
send2=zeros(1,Frame+1);
state(1)=0;
for i=2:1:Frame+2
if temp1(i-1)==0 & temp2(i-1)==0
if state(i-1)==0
state(i)=0;send1(i-1)=1*sqrt(1/2); send2(i-1)=1*sqrt(1/2);
elseif state(i-1)==1
state(i)=0;send1(i-1)=j*sqrt(1/2); send2(i-1)=1*sqrt(1/2);
elseif state(i-1)==2
state(i)=0;send1(i-1)=-1*sqrt(1/2);send2(i-1)=1*sqrt(1/2);
elseif state(i-1)==3
state(i)=0;send1(i-1)=-j*sqrt(1/2);send2(i-1)=1*sqrt(1/2);
end
elseif temp1(i-1)==0 & temp2(i-1)==1
if state(i-1)==0
state(i)=1;send1(i-1)=1*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
elseif state(i-1)==1
state(i)=1;send1(i-1)=j*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
elseif state(i-1)==2
state(i)=1;send1(i-1)=-1*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
elseif state(i-1)==3
state(i)=1;send1(i-1)=-j*sqrt(1/2);send2(i-1)=j*sqrt(1/2);
end
elseif temp1(i-1)==1 & temp2(i-1)==0
if state(i-1)==0
state(i)=2;send1(i-1)=1*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
elseif state(i-1)==1
state(i)=2;send1(i-1)=j*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
elseif state(i-1)==2
state(i)=2;send1(i-1)=-1*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
elseif state(i-1)==3
state(i)=2;send1(i-1)=-j*sqrt(1/2);send2(i-1)=-1*sqrt(1/2);
end
elseif temp1(i-1)==1&temp2(i-1)==1
if state(i-1)==0
state(i)=3;send1(i-1)=1*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
elseif state(i-1)==1
state(i)=3;send1(i-1)=j*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
elseif state(i-1)==2
state(i)=3;send1(i-1)=-1*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
elseif state(i-1)==3
state(i)=3;send1(i-1)=-j*sqrt(1/2);send2(i-1)=-j*sqrt(1/2);
end
end
end
State=state;
output=[send1;send2];
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?