Matlab 中 gfconv(Galois 场函数)的错误

Error in gfconv (Galois field function) in Matlab

我正在尝试使用 Matlab 的 gfconv(a,b) 函数在伽罗华域中将一个十六进制值 AA 乘以 2,控制台 returns 给我一个错误提示:"The input elements must be binary.",但是我的两个元素是二进制的

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);

知道如何解决吗?

我没有在此处执行所有代码,但这是我将采取的解决步骤。

问题

它是二进制形式,但是b是二进制数的向量。

解决方案

  1. 查找https://www.mathworks.com/help/matlab/ref/mat2str.html
  2. 将向量转换为字符串
  3. 解析字符串并取出 ones 和 zeros
  4. 使用 str2num 转换回数字:https://www.mathworks.com/help/matlab/ref/str2num.html

试一试,看看是否有效。

注 - 步骤 3 的扩展:

如果我们有变量 a = '[0+11]';,我们可以 select 字符串中的单个字符,例如:

 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

最后,转换字符串:

num = str2num(str);

完成