【发布时间】:2012-11-17 02:12:09
【问题描述】:
考虑以下示例:
Bathymetry = [0,4134066;
3,3817906;
6,3343666;
9,2978725;
12,2742092;
14,2584337;
16,2415355;
18,2228054;
20,2040753;
23,1761373;
26,1514085];
Depth = [0;1;2;3;5;8;10;11.6;15];
newDepth = min(Bathymetry(:,1)):0.1:max(Bathymetry(:,1));
从这里我想找到'newDepth'的哪一列对应于'Depth'。例如:
dd = find(newDepth==Depth(1))
dd =
1
显示Depth == 0,位于newDepth的第一列。当我将此应用于“深度”的所有条目时
for i = 1:length(Depth);
dd(i) = find(newDepth == Depth(i));
end
我收到一个错误:
Improper assignment with rectangular empty matrix.
最初我不明白为什么,但是通过查看 newDepth 的数组,特别是在 newDepth == 11.6 的第 117 列,我注意到该值不等于 11.6 但等于 11.600000000000001,因此与 Depth(8) 不同.我怎样才能解决这个问题?为什么 MATLAB 不只是将值写为 11.6?我没有指定在任何地方包含 .000000000000001。
【问题讨论】:
-
浮点运算的特性是关于 SO 的常见问题来源。我建议你在做任何其他事情之前先阅读标签 floating-point 下的一些 Qs 和 As。对于像我猜想你这样的潜在计算科学家来说,这是一个非常重要的话题。如果您不了解风险和陷阱,您编写的程序可能包含细微的错误,这些错误可能不会在崩溃或错误消息中体现出来;他们可能会等到您发布错误的结果。