从小数点后的数字向量创建浮点数

时间:2017-03-24 16:08:22

标签: matlab

假设我在维度A的Matlab中有一个包含自然数的向量Nx1,例如

N=8
A=[1;2;3;4;5;6;7;8]

我想将A转换为数组B

B=[0.12345678]

其中0.12345678是双倍的。

1 个答案:

答案 0 :(得分:4)

您可以创建一个从10^-110^(-numel(A))的数组,并使用A的转置(使其成为1 x N)执行逐元素乘法,然后对结果求和

result = sum(A.' .* 10.^-(1:numel(A)));
fprintf('%0.8f', result)
%   0.12345678

为了真正展示其工作原理,我们可以使用较小的A向量进行演示。

A = [1; 2; 3; 4];

tmp = 10.^-(1:numel(A));
%  0.1000   0.0100   0.0010   0.0001

tmp = A.' .* tmp;
%  0.1000   0.0200   0.0030   0.0004

result = sum(tmp);
%  0.1234

考虑这一点的另一种方法是将A元素与10^1划分为10^(numel(A))

result = sum(A.' ./ 10.^(1:numel(A)));

另一种方法是使用ASCII代码将数字转换为字符串,然后将'0.'添加到字符串的开头,然后使用str2double

将其转换为double
result = str2double(['0.' A.' + '0']);