2

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

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

知道如何解决吗?

4

1 回答 1

1

我没有在这里编写所有代码,但这里是我要解决它的步骤。

问题

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

解决方案

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

试试看它是否有效。

注意 - 扩展第 3 步:

如果我们有变量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

最后,转换字符串:

num = str2num(str);

完毕

于 2017-06-05T19:42:10.780 回答