第一范文网 - 专业文章范例文档资料分享平台

维特比解码matlab仿真程序

来源:用户分享 时间:2025/9/14 1:23:43 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

Viterbi encoding and uncoding: (based on hamming distance)

Code:

%the hamming distance of x and y function z=d(x,y) z=0;

for i=1:length(x)

if x(i)~=y(i) z=z+1; end end

function x=viterbi_uncoding(a) n=length(a); s1=[0 0 1 1]; s2=[1 0 0 1]; s3=[1 1 0 0]; s4=[0 1 1 0];

D1=0;D2=0;D3=0;D4=0;%hamming distance of four route %NO.1 of input code

D1=d([s1(1),s1(2)],[a(1),a(2)]);x1=[0]; D2=d([s1(3),s1(4)],[a(1),a(2)]);x2=[1]; %NO.2

A=x1;B=x2;C=D1;D=D2;

D1=C+d([s1(1),s1(2)],[a(3),a(4)]);x1=[A,0]; D2=C+d([s1(3),s1(4)],[a(3),a(4)]);x2=[A,1]; D3=D+d([s2(1),s2(2)],[a(3),a(4)]);x3=[B,0]; D4=D+d([s2(3),s2(4)],[a(3),a(4)]);x4=[B,1]; %NO.3-NO.n/2 for i=3:n/2

A=x1;B=x2;C=x3;D=x4; E=D1;F=D2;G=D3;H=D4; %point1

if E+d([s1(1),s1(2)],[a(2*i-1),a(2*i)])

else D1=G+d([s3(1),s3(2)],[a(2*i-1),a(2*i)]); x1=[C,0]; end %point2

if E+d([s1(3),s1(4)],[a(2*i-1),a(2*i)])

else D2=G+d([s3(3),s3(4)],[a(2*i-1),a(2*i)]); x2=[C,1]; end %point3

if F+d([s2(1),s2(2)],[a(2*i-1),a(2*i)])

else D3=H+d([s4(1),s4(2)],[a(2*i-1),a(2*i)]);

x3=[D,0]; end %point4

if F+d([s2(3),s2(4)],[a(2*i-1),a(2*i)])

else D4=H+d([s4(3),s4(4)],[a(2*i-1),a(2*i)]); x4=[D,1]; end end

if D1<=D2&&D1<=D3&&D1<=D4 x=x1; end

if D2<=D1&&D2<=D3&&D2<=D4 x=x2; end

if D3<=D1&&D3<=D2&&D3<=D4 x=x3; end

if D4<=D1&&D4<=D2&&D4<=D3 x=x4; end figure(2);

subplot(2,1,1);stem(a);grid on; title('Input Code');

subplot(2,1,2);stem(x);grid on;

title('Output Code after viterbi uncoding');

function x=viterbi_encoding(s) r1=0; r2=0; x=[];

for i=1:length(s)

x(2*i-1)=mod((s(i)+r1+r2),2); x(2*i)=mod((s(i)+r2),2); r2=r1; r1=s(i); end

figure(1);

subplot(2,1,1);stem(s);grid on; title('Input Code');

subplot(2,1,2);stem(x);grid on;

title('Output Code after viterbi encoding');

%by 张鹏 2010年10月27日 % % clc;

clear all;

s=randint(1,20); %input code

a=viterbi_encoding(s); %viterbi encoding %x=[1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1];

%x=[0 -1 zeros(1,length(a)-2)]+a; %interfering

b=viterbi_uncoding(a);

%output code after viterbi uncoding

搜索更多关于: 维特比解码matlab仿真程序 的文档
维特比解码matlab仿真程序.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0pjpf84tm66tck19hln8_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top