卷积码代码文档格式.docx

上传人:b****5 文档编号:16276923 上传时间:2022-11-22 格式:DOCX 页数:9 大小:15.88KB
下载 相关 举报
卷积码代码文档格式.docx_第1页
第1页 / 共9页
卷积码代码文档格式.docx_第2页
第2页 / 共9页
卷积码代码文档格式.docx_第3页
第3页 / 共9页
卷积码代码文档格式.docx_第4页
第4页 / 共9页
卷积码代码文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

卷积码代码文档格式.docx

《卷积码代码文档格式.docx》由会员分享,可在线阅读,更多相关《卷积码代码文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

卷积码代码文档格式.docx

functionb=conv(a)%3卷积码的编码

l=length(a);

g0(1,1)=1;

%编码过程的生成序列

g1(1,1)=0;

g2(1,1)=0;

g0(1,2)=1;

g1(1,2)=1;

g2(1,2)=1;

m0=0;

m1=0;

m2=0;

l

m2=m1;

m1=m0;

m0=a(i);

c(i,1)=g0(1,1)*m0;

c(i,2)=rem((g0(1,2)*m0+g1(1,2)*m1+g2(1,2)*m2),2);

b=[];

[mn]=size(c);

m

b=[b,c(i,:

)];

functiondecode=conv_decode(SS1,SS2,SS3,SS4,NEXT,B,d)%6卷积码译码

l=length(d);

ifrem(l,10)==0

D=reshape(d,10,l/10);

D=D'

;

else

d=[d,zeros(1,(fix(l/10)+1)*10-l)];

D=reshape(d,10,length(d)/10);

decode=[];

[mn]=size(D);

NE=0;

switchNE

case0

forj=1:

32

error(j,:

)=mod((D(i,:

)+SS1(j,:

)),2);

SUM(j)=sum(error(j,:

));

end

[n,k]=min(SUM);

decode=[decode,B(k,:

t=NE+1;

NE=NEXT(t,k);

case1

)+SS2(j,:

case2

)+SS3(j,:

case3

)+SS4(j,:

end

%%生成比照矩阵,译码接收序列和原矩阵进行比照

function[SS1,SS2,SS3,SS4,B,NEXT]=conv_en%生成比照矩阵和next存储的下一个状态

fori=0:

31

A(i+1,:

)=dec2bin(i,5);

SS0=[];

SS1=[];

SS2=[];

SS3=[];

SS4=[];

next=[];

S0=[0,0];

S1=[0,1];

S2=[1,0];

S3=[1,1];

t=0;

fork=0:

3

fori=1:

t=k;

5

switcht

ifA(i,j)=='

1'

SS0=[SS0,S3];

Next=1;

t=Next;

else

SS0=[SS0,S0];

Next=0;

SS0=[SS0,S2];

Next=3;

SS0=[SS0,S1];

Next=2;

next=[next,Next];

C=reshape(SS0,320,4);

C=C'

SS1=C(1,:

);

SS2=C(2,:

SS3=C(3,:

SS4=C(4,:

SS1=reshape(SS1,10,32);

SS1=SS1'

SS2=reshape(SS2,10,32);

SS2=SS2'

SS3=reshape(SS3,10,32);

SS3=SS3'

SS4=reshape(SS4,10,32);

SS4=SS4'

next=reshape(next,5,128);

next=next'

NEXt=next(:

5);

4

NEXT(i,:

)=NEXt(32*(i-1)+1:

32*i);

B(i,j)=1;

B(i,j)=0;

%-----------------------初始化界面--------------------------

clc;

clearall;

closeall;

x=input('

码元数目:

'

%信噪比太低易出错2、1、2卷积码

xx=input('

数据速率:

snr=input('

信噪比:

a=xulie(x);

b=conv(a);

transmittedsignal=BPSKmodu(b,xx);

cs=channel(transmittedsignal,snr);

[de,designal]=des(cs);

[SS1,SS2,SS3,SS4,B,NEXT]=conv_en;

decode=conv_decode(SS1,SS2,SS3,SS4,NEXT,B,designal);

%------------------------随机序列--------------------------

figure,

subplot(3,1,1);

t=(1/160):

(1/160):

10;

plot(t,a(ceil(t)));

TITLE('

随机序列'

%-----------------------编码后序列-------------------------

subplot(3,1,2);

20;

plot(t,b(ceil(t)));

编码后序列'

%----------------------BPSK调制后波形------------------------

sff=1:

320;

subplot(3,1,3)

cc=sff/16;

plot(cc,transmittedsignal(sff));

BPSK调制后波形'

%------------------------解调后波形-------------------------

subplot(3,1,1)

plot(cc,de(sff));

解调后波形'

%-----------------------抽样判决结果------------------------

plot(t,designal(ceil(t)));

抽样判决结果'

%-----------------------译码结果----------------------------

subplot(3,1,3);

plot(t,decode(ceil(t)));

译码结果'

%5解调。

滤波、抽样判决

function[de,designal]=des(cs)

loadLowpass;

p=length(cs);

l=(length(Lowpass)-1)/2;

a=[cs,zeros(1,l)];

b=filter(Lowpass,1,a);

demode=[zeros(1,l),ones(1,p)];

c=demode.*b;

c=(c>

0|c<

0);

b=b(c);

%滤波,实践延迟

designal=[];

de=[];

16:

length(cs)-15

de=[de,b(i:

i+15).*carrier];

end%解调

l=length(de);

l-15

sum1=sum(de(i:

i+15))/16;

ifsum1>

=0

designal(ceil(i/16))=1;

designal(ceil(i/16))=0;

end%抽样判决,每16点取平均值,大于0为1.小于为0

functiona=xulie(n)%1

a=rand(1,n)>

0.5;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1