繁体   English   中英

在 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

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM