声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 962|回复: 0

[混合编程] 求大神帮我看一下程序哪出错了,为什么会运行不起来

[复制链接]
发表于 2012-5-20 17:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
1 仿真程序
        % H 监督矩阵
        % G 生成矩阵
        % C 编码矩阵
        % I 输入信息序列
        % R 信道输出码
        % A 纠错输出码序列
        % E 错码矩阵
        % S 校验子矩阵
        % M 校验子的行的十进制序列
        %信道编码程序
     clear all
     close all
     H=[0 1 1 1 0 0;
        1 0 1 0 1 0;
        1 1 0 0 0 1];                            %监督矩阵H
     G=gen2par(H);                            %求H阵的生成矩阵G
     I=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1];
     C=rem(I*G,2);                            %求码字C
     disp('所得的编码结果为:C=');               %显示输出码字C
     disp(C);
     %信道译码程序
     clear all;
     close all;
     H=[0 1 1 1 0 0;
        1 0 1 0 1 0;
        1 1 0 0 0 1];                          %监督矩阵H
     B=input('请输入接收码组B:');
     [a,b]=size(B);                           %返回数组B的维数
     E=[0 0 0 0 0 0;0 0 0 0 0 1;0 0 0 0 1 0;0 0 0 1 0 0;
        0 0 1 0 0 0;0 1 0 0 0 0;1 0 0 0 0 0;1 0 0 1 0 0];
     S=rem(B*H',2);                         %求校验子S
     
        i=1;
   for i=1:1:a
      
        M(i,1)=S(i,1).*4+S(i,2).*2+S(i,3);       %求校验子所表示的十进制整数
end
   for i=1:1:a
     switch(M(i,1))
        case 0
        A(i,:)=B(i,:)+E(1,:);
        case 1
        A(i,:)=B(i,:)+E(2,:);
        case 2
        A(i,:)=B(i,:)+E(3,:);
        case 3
        A(i,:)=B(i,:)+E(4,:);
        case 4
        A(i,:)=B(i,:)+E(5,:);
        case 5
        A(i,:)=B(i,:)+E(6,:);
        case 6
        A(i,:)=B(i,:)+E(7,:);
        case 7
        A(i,:)=B(i,:)+E(8,:);
        
     end
   end
        for i=1:1:a
     switch(M(i,1))
        case 0
        disp(‘没有出现错误!’);
        case 1
        disp(‘注意:第1位出现一个错误!请纠正!’);
        case 2
        disp(‘注意:第2位出现一个错误!请纠正!’);
        case 3
        disp(‘注意:第3位出现一个错误!请纠正!’);
        case 4
        disp(‘注意:第4位出现一个错误!请纠正!’);
        case 5
        disp(‘注意:第5位出现一个错误!请纠正!’);
        case 6
        disp(‘注意:第6位出现一个错误!请纠正!’);
        case 7
        disp(‘注意:第6位和第3位出现两个错误!请纠正!’);     
        end
  end
        A=rem(A,2);                 %求出正确的编码
     disp('检纠错后的码组A=');
     disp(A);                     %显示正确的编码
     j=1;
    while j<=3                    %提取信息位
      I(:,j)=A(:,j);
      j=j+1;
    end
      disp('译出的信息序列I=');
      disp(I);                     %显示原信息码

运行后在要求输入B接收码时出错,是怎么回事
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-20 22:08 , Processed in 0.048240 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表