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

Convert a non-integer in base d to a number in base 10 in Matlab

我在 Matlab 中有一个维度为 nx1 的列向量 t,报告基数 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
A = base2dec(char(t(:).'+'0'), d) / d^numel(t);

其工作原理如下:

  1. 将数字视为小数点左边的数字,从而在基数d中定义整数 ].这样你就可以使用 base2dec 进行转换(注意这个函数的输入需要是 char)。
  2. 除以 d 的适当次幂,以考虑到输入数字实际上位于小数点 右边

例如给定

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

结果是

A =
   0.255448864502362