如何在MATLAB上将十进制转换为不同的base-N?

时间:2013-02-20 06:43:43

标签: matlab matrix

我有两个矩阵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.

如何解决?

1 个答案:

答案 0 :(得分: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