假设我在维度A
的Matlab中有一个包含自然数的向量Nx1
,例如
N=8
A=[1;2;3;4;5;6;7;8]
我想将A
转换为数组B
B=[0.12345678]
其中0.12345678
是双倍的。
答案 0 :(得分:4)
您可以创建一个从10^-1
到10^(-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
result = str2double(['0.' A.' + '0']);