Matlab中gfconv(伽罗瓦域函数)的错误

时间:2017-06-05 19:23:45

标签: matlab galois-field

我试图使用Matlab的AA函数在galois字段中将十六进制值gfconv(a,b)乘以2,控制台返回给我一个错误说:"输入元素必须是二进制。",但我的两个元素是二进制

a=hexToBinaryVector('AA');
b=de2bi(2);
c=gfconv(a,b);
disp(c);

错误代码:

Error using gfconv_mex
The input elements must be binary.

Error in gfconv (line 120)
        c = gfconv_mex(varargin{:});

Error in test(line 3)
c=gfconv(a,b);

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

我没有在这里完成所有代码,但这是我要采取的步骤来解决它。

<强>问题

它是二进制形式,但(remove-if-not #'(lambda(record) (equal (getf record :atom) atom)) *ATOMS*) 是二进制数的向量。

<强>解决方案

  1. 查找https://www.mathworks.com/help/matlab/ref/mat2str.html
  2. 将您的矢量转换为字符串
  3. 解析字符串并拉出1和0
  4. 使用str2num转换回数字:https://www.mathworks.com/help/matlab/ref/str2num.html
  5. 试一试,看看它是否有效。

    注意 - 扩展第3步:

    如果我们有变量b,我们可以从字符串中选择单个字符,如:

    a = '[0+11]';

    因此,您可以使用循环“

    解析字符串
     a(3)
    ans = '+'
    a(4)
    ans = '1'
    a(1)
    and = '['
    

    最后,转换字符串:

    for n = 1 : length(a)
        if a(n) == '1' || a(n) == '0'
            str(n) = a(n);
        end
    end
    

    完成

相关问题