在Matlab中将基数d中的非整数转换为基数10中的数字

时间:2016-09-30 18:53:41

标签: matlab math base

我在Matlab中有一个维度为t的列向量nx1报告基数d中数字A的逗号后面的数字。我希望将其转换为1x1双重报告基数10中的数字A.我对案例d=2d=3感兴趣。

实施例

%d=3
t=[0 2 0 2 2 0 0 2 0]'; %that is A=0.020220020 in base 3
%d=2
t=[0 1 1 1 0 0 0 1 0]'; %that is A=0.011100010 in base 2

1 个答案:

答案 0 :(得分:1)

A = base2dec(char(t(:).'+'0'), d) / d^numel(t);

其工作原理如下:

  1. 将数字视为小数点的 left ,从而在基数d中定义整数。这样您就可以使用base2dec进行转换(请注意,此函数的输入必须为char)。
  2. 除以d的适当功率,以考虑输入数字实际上是小数点的
  3. 例如,给定

    t = [0 2 0 2 2 0 0 2 0]';
    d = 3;
    

    结果是

    A =
       0.255448864502362