(7,4)汉明码 matlab编程

(7,4)汉明码 matlab编程,第1张

程序改为如下:

S=ones(7,3)%要加的部分

A=[1 1 0 1 1 0 0]

[r,l]=size(A)

E=[0 0 0 0 0 0 00 0 0 0 0 0 10 0 0 0 0 1 00 0 0 0 1 0 00 0 0 1 0 0 00 0 1 0 0 0 00 1 0 0 0 0 01 0 0 0 0 0 0]%%%%%求校正子,然后将其转化成十进制数

for i=1:r 

    Sx=S(i,1)*4+S(i,2)*2+S(i,3)

end%%%%下面是(7,4)码检错

for i=1:r 

    switch(Sx)

        case 0 

            disp('此接收码字没错') 

        case 1 

     亏备       disp('注意:此接收码字的第一位有错,请纠正') 

        case 2 

            disp('注意:此接收码字的第二位有错,请纠正')

        case 4 

            disp('注意:此接收码字的第三位有错,请纠正') 

        case 3 

            disp('注意:此接收码字的第四位有错,请纠正') 

        case 5 

            disp('注意:此接收码字的第五位有错,请纠正') 

        case 6

            disp('注意:此接收码字的第六位有错,请纠正') 

        case 7 

            disp('注意:此接收码字的第七位有错,请纠正') 

    end

end

%%%下面为在知道哪位出错的情况下,进行纠正

for i=1:r 

    switch(Sx)

        case 0 

     信空搏       B(i,:)=A(i,:)+E(1,:)

        case 1

            B(i,:)=A(i,:)+E(2,:)

        case 2 

            B(i,:)=A(i,:)+E(3,:) 

        case 4

            B(i,:)=A(i,:)+E(4,:)

        case 3

            B(i,:)=A(i,:)+E(5,:)

        case 5

            B(i,:)=A(i,:)+E(6,:) 

  滑祥      case 6

            B(i,:)=A(i,:)+E(7,:)

        case 7

            B(i,:)=A(i,:)+E(8,:) 

    end

end

B=rem(B,2)

disp('纠错后的码字')

disp(B)

结果:

注意:此接收码字的第七位有错,请纠正

纠错后的码字

     0     1     0     1     1     0     0

可以得到汉字的每个字节的ASCII码(内码)值,也可以得到它们的和陵棚区位码:

#include<stdio.h>

int main()

{unsigned char s[11] int i,a,b

printf("请输入姓名:")

gets(s)

printf("汉字\tASCII码\t\t内唤则码汪前\t区位码\n")

for(i=0s[i]i+=2)

{ a=s[i] b=s[i+1]

printf(" %c%c :\t%d %d\t\t%X%X\t%d",a,b,a,b,a,b,a-160)

if(b<170)printf("0%d\n",b-160)

else printf("%d\n",b-160)

}

system("pause")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12431366.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存