首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linspace vs range

Linspace vs range
EN

Stack Overflow用户
提问于 2011-04-25 22:20:31
回答 3查看 39.9K关注 0票数 16

我想知道什么是更好的风格/更有效率:

代码语言:javascript
复制
x = linspace(-1, 1, 100);

代码语言:javascript
复制
x = -1:0.01:1;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-25 22:38:42

正如Oli Charlesworth提到的,在linspace中,您将interval [a,b]划分为N点,而在:表单中,您使用指定的步长(默认值为1)从a中逐步退出,直到到达b

要记住的一件事是,linspace总是包含端点,而:表单将包含第二个端点,只有当您的步长在最后一步落在它上面时,它才会落在它上面,否则它将达不到要求。示例:

代码语言:javascript
复制
0:3:10

ans = 

     0     3     6     9

也就是说,我何时使用这两种方法取决于我需要做什么。如果我所需要做的就是用固定数量的点对一个区间进行采样(并且我不关心步长),我会使用linspace

在许多情况下,我并不关心它是否落在最后一个点上,例如,当使用极坐标时,我不需要最后一个点,因为2*pi0是一样的。在这里,我使用了0:0.01:2*pi

票数 18
EN

Stack Overflow用户

发布于 2011-04-25 22:22:42

像往常一样,使用最适合你的目的的,并且最能表达你的意图的。因此,当您知道点数时,请使用linspace;当您知道间距时,请使用:

顺便说一句,你的两个例子并不等价;第二个例子会给你201分。

票数 12
EN

Stack Overflow用户

发布于 2011-04-25 22:37:18

As Oli already pointed out,当您知道所需的点数时,使用linspace通常是最简单的;当您知道元素之间的间距时,使用colon operator通常是最简单的。

然而,应该注意的是,这两种方法通常不会给出完全相同的结果。正如前面提到的herehere,这两种方法使用略有不同的方法来计算向量元素(这里是对how the colon operator works的归档描述)。这就是为什么这两个向量不相等的原因:

代码语言:javascript
复制
>> a = 0:0.1:1;
>> b = linspace(0,1,11);
>> a-b

ans =

  1.0e-016 *

  Columns 1 through 8

         0         0         0    0.5551         0         0         0         0

  Columns 9 through 11

         0         0         0

这是how floating-point numbers are represented的典型副作用。某些数字无法精确表示(如0.1),以不同的方式执行相同的计算(即更改数学运算的顺序)可能会导致结果略有不同,如上面的示例所示。这些差异通常在order of the floating-point precision上,通常可以忽略,但您应该始终意识到它们的存在。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5779270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档