Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays MATLAB向量赋值中的奇异小故障_Arrays_Matlab_Vector_While Loop_Variable Assignment - Fatal编程技术网

Arrays MATLAB向量赋值中的奇异小故障

Arrays MATLAB向量赋值中的奇异小故障,arrays,matlab,vector,while-loop,variable-assignment,Arrays,Matlab,Vector,While Loop,Variable Assignment,我有一段代码,我在其中挑选出在给定阈值d/2内,以ds间隔的x值。这可能不是最有效的方法,但是除了我在这里提到的偶尔的bug之外,它工作得很好,我想让方法保持原样。然而,MATLAB似乎将此代码创建的向量的上端点切掉。我的猜测是它有某种舍入误差,没有达到正确的上限。对于不同但数量级相同的d和ds值,它工作得很好 d=250e-9; ds=1e-9; xlim=0; while xlim < ((d/2)-ds) xlim = xlim + ds; end; disp(xlim)

我有一段代码,我在其中挑选出在给定阈值d/2内,以ds间隔的x值。这可能不是最有效的方法,但是除了我在这里提到的偶尔的bug之外,它工作得很好,我想让方法保持原样。然而,MATLAB似乎将此代码创建的向量的上端点切掉。我的猜测是它有某种舍入误差,没有达到正确的上限。对于不同但数量级相同的d和ds值,它工作得很好

d=250e-9;
ds=1e-9;
xlim=0;

while xlim < ((d/2)-ds)
    xlim = xlim + ds;
end;

disp(xlim);
显示xrel,从-1.25e-7开始,到1.24e-7结束。顺便说一句,在我的代码后面有250个值,我认为这是一个奇数。有没有关于变通办法的想法?谢谢

如果您键入: 格式长

在执行此操作之前,您将看到xlim在您的操作之后并不完全是1.25e-7。这是一种不好的方法,请改为执行以下操作:

xrel = -d/2:ds:d/2

这将为您提供251长度向量,其值从-1.25e-7到1.25e-7,这是您想要的。

这不是真正的“舍入误差”,浮点加法在处理如此小的值时无法保证正确性。我下面的答案应该解决你的问题。或者,如果你确切知道你想要多少点,你有上限和下限,考虑使用LimSalk函数。
xrel = -d/2:ds:d/2