3

我有两个矩阵 A 和 B。矩阵 A 大小为 1x1013 双倍,矩阵 B 大小为 1x12931 双。我想将矩阵A的每个元素从矩阵B转换为base-N。例如,矩阵A的第一个元素转换为矩阵B的第一个元素,矩阵A的第二个元素转换为矩阵B的第二个元素,依此类推。

mm = length(A);
nn = length(B);
base = cell(1,mm);
x = zeros(1,mm)
for ff = 1:mm
    ff
    AA=A(ff)
    BB=B(ff)
    x(ff) = str2double(dec2base(int32(AA),int32(BB)));
    base{ff} = x(ff);
end

但我有一个错误。

First argument must be an array of integers, 0 <= D <= 2^52.

如何解决?

4

1 回答 1

2

您可能正在尝试转换负数:

>> dec2base(-1, 2)
??? Error using ==> dec2base at 24
First argument must be an array of integers, 0 <= D <= 2^52.

检查没有任何元素A是负的。如果任何一个是负面的,那么你可以做

>> x = -10;
>> d = dec2base(abs(x), 2);
>> y = -str2double(d)
y =
    -1010
于 2013-02-20T08:05:38.857 回答