我有两个矩阵 A 和 B。矩阵 A 大小为 1x1013 双倍,矩阵 B 大小为 1x12931 双倍。我想将矩阵 A 的每个元素从矩阵 B 转换为基数 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.

如何解决?

最佳答案

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

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

关于matlab - 如何在MATLAB上将十进制转换为不同的基数N?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14973795/

10-13 08:15