tcm_网格编码(MATLAB程序) 联系客服

发布时间 : 星期日 文章tcm_网格编码(MATLAB程序)更新完毕开始阅读48642603eff9aef8941e065d

dsource2(i)=0; dsource3(i)=0; elseif (temp<0.25), dsource1(i)=0; dsource2(i)=0; dsource3(i)=1

elseif (temp<0.375), dsource1(i)=0; dsource2(i)=1; dsource3(i)=0; elseif (temp<0.5), dsource1(i)=0; dsource2(i)=1; dsource3(i)=1;

elseif (temp<0.625), dsource1(i)=1; dsource2(i)=0; dsource3(i)=0;

elseif (temp<0.75), dsource1(i)=1; dsource2(i)=0; dsource3(i)=1;

elseif (temp<0.875), dsource1(i)=1; dsource2(i)=1; dsource3(i)=0; else

dsource1(i)=1; dsource2(i)=1; dsource3(i)=1; end; end;

numoferr=0; for i=1:N,

n(1)=gngauss(sgma); n(2)=gngauss(sgma);

if ((dsource1(i)==0)&(dsource2(i)==0)&dsource3(i)==0), r=s000+n;

5

elseif ((dsource1(i)==0)&(dsource2(i)==0)&(dsource3(i)==1)), r=s001+n;

elseif((dsource1(i)==0)&(dsource2(i)==1)&(dsource3(i)==0)), r=s010+n;

elseif((dsource1(i)==0)&(dsource2(i)==1)&(dsource3(i)==1)), r=s011+n;

elseif((dsource1(i)==1)&(dsource2(i)==0)&(dsource3(i)==0)), r=s100+n;

elseif((dsource1(i)==1)&(dsource2(i)==0)&(dsource3(i)==1)), r=s101+n;

elseif((dsource1(i)==1)&(dsource2(i)==1)&(dsource3(i)==0)), r=s110+n;

else((dsource1(i)==1)&(dsource2(i)==1)&(dsource3(i)==1)), r=s111+n; end;

c000=dot(r,s000); c001=dot(r,s001); c010=dot(r,s010); c011=dot(r,s011); c100=dot(r,s100); c101=dot(r,s101); c110=dot(r,s110); c111=dot(r,s111);

c_max=max([c000 c001 c010 c011 c100 c101 c110 c111]); if (c000==c_max),

decis1=0;decis2=0;decis3=0; elseif (c001==c_max),

decis1=0;decis2=0;decis3=1; elseif (c010==c_max),

decis1=0;decis2=1;decis3=0; elseif (c011==c_max)

decis1=0;decis2=1;decis3=1; elseif (c100==c_max)

decis1=1;decis2=0;decis3=0; elseif (c101==c_max)

decis1=1;decis2=0;decis3=1; elseif (c110==c_max)

decis1=1;decis2=1;decis3=0;

6

else

decis1=1;decis2=1;decis3=1; end;

if (decis1~=dsource1(i)), numoferr=numoferr+1; end;

if (decis2~=dsource2(i)), numoferr=numoferr+1; end;

if (decis3~=dsource3(i)), numoferr=numoferr+1; end; end;

pb=numoferr/(3*N);

对TCM的仿真调用程序:

function [p]=smld2(snr_in_dB) N=input('number'); Es=3;

snr=10^(snr_in_dB/10); sgma=sqrt(1/(2*snr)); k=1;

g=[1 0 1;0 0 1]; for i=1:N, temp=rand;

if (temp<0.25), dsource1(i)=0; dsource2(i)=0; elseif (temp<0.5) dsource1(i)=0; dsource2(i)=1; elseif (temp<0.75) dsource1(i)=1; dsource2(i)=0; else

dsource1(i)=1; dsource2(i)=1; end; end;

7

int=zeros(1,2*N); for o=1:N,

int(1,2*o-1)=dsource2(o); end;

for b=1:N,

int(1,2*b)=dsource1(b); end;

rrr=reshape(int,2,N); eee=rrr';

m=size(eee,1); y=zeros(1,m) for n=1:m

y(:,n)=eee(n,1) end;

z=cnv_encd(g,k,y); tyu=length(z)/2; s=zeros(1,3*tyu); for i=1:m

s(:,3*i-2)=eee(i,2) end

s(:,3*N+1)=0;

s(:,3*(N+1)+1)=0; for j=1:tyu

s(:,3*j-1)=z(2*j-1); end;

for k2=1:tyu

s(:,3*k2)=z(2*k2); end;

uu=reshape(s,3,tyu); kk=uu';

n1=gngauss(sgma); n2=gngauss(sgma) for i=1:tyu

f(i)=bin2deci(kk(i,:)); if ((f(i)>=3)&(f(i)<7))

R(i)=sqrt(Es)*cos(2*pi*f(i)/8)+n1; H(i)=sqrt(Es)*sin(2*pi*f(i)/8)+n2; T(i)=pi+atan(H(i)/R(i));

8