[英]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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.