在 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=2
和 d=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);
其工作原理如下:
- 将数字视为小数点左边的数字,从而在基数
d
中定义整数 ].这样你就可以使用 base2dec
进行转换(注意这个函数的输入需要是 char
)。
- 除以
d
的适当次幂,以考虑到输入数字实际上位于小数点 右边 。
例如给定
t = [0 2 0 2 2 0 0 2 0]';
d = 3;
结果是
A =
0.255448864502362
我在 Matlab 中有一个维度为 nx1
的列向量 t
,报告基数 d
中数字 A 的逗号后的数字。我想将其转换为 1x1
双报告基数 10
中的数字 A。我对案例 d=2
和 d=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);
其工作原理如下:
- 将数字视为小数点左边的数字,从而在基数
d
中定义整数 ].这样你就可以使用base2dec
进行转换(注意这个函数的输入需要是char
)。 - 除以
d
的适当次幂,以考虑到输入数字实际上位于小数点 右边 。
例如给定
t = [0 2 0 2 2 0 0 2 0]';
d = 3;
结果是
A =
0.255448864502362