Matlab 如何将小数点四舍五入到特定精度

Matlab 如何将小数点四舍五入到特定精度,matlab,Matlab,所以给我一个向量f_1side: f_2sided = linspace(-5e11,5e11,958576); f_1sided = f_2sided(end/2+1:end); 我想找到f_1side==11.07e9项的索引 问题:f_1side有许多条目,大约为1.107e10,但并不精确。我想找到最准确的。例如,条目106110是110695042119813。下一个条目是11069608535002 我正在考虑一种方法来取整f_1side的条目。但是当我把我提到的两个条目四舍五入

所以给我一个向量f_1side:

f_2sided = linspace(-5e11,5e11,958576); 
f_1sided = f_2sided(end/2+1:end);
我想找到f_1side==11.07e9项的索引

问题:f_1side有许多条目,大约为1.107e10,但并不精确。我想找到最准确的。例如,条目106110是110695042119813。下一个条目是11069608535002


我正在考虑一种方法来取整f_1side的条目。但是当我把我提到的两个条目四舍五入时,我不希望两者都是11.07e9,而只希望其中一个更精确

因此,您正在查找与给定条目最接近的条目:

desired = 11.07e9;
distances_to_desired = (f_1sided - desired).^2;
[~, closest_index] = min(distances_to_desired);

当然,这里,
desired
是您要查找的
f\u 1sided
中的数字,
distance\u to\u desired
中的每个值都包含
f\u 1sided
desired
的(平方)距离,
最近的索引
是指向
f\u 1side的索引
,因此距离最小。

为什么是正方形
abs()
似乎更合适。这个正方形感觉像是欧几里德的未竟尝试distance@AnderBiguri它们是等价的,所以这是一个品味的问题。此外,
abs
可能需要一个分支,使其速度变慢。使用
sqrt
获得2-norm也比较慢。非常感谢你,Lumen!-只有一个问题:
~
应该做什么?@Luk不客气!波浪号
~
忽略
min
的第一个返回参数。这将是找到的最小距离。如果您想获得该值,请将
~
替换为
找到的最小距离
,或任何您喜欢的值。如果
minimum\u distance\u found==0
,则找到了所需的确切值。@Lumen是的,是的,但它稍微掩盖了有关实际距离的信息。公平地说,有了这个庞大的阵列,按照您的建议加快速度可能会更好