【问题标题】:How do I create a regularly-spaced array of values in MATLAB?如何在 MATLAB 中创建规则间隔的值数组?
【发布时间】:2009-12-05 23:44:25
【问题描述】:

如何创建一个定义有起点、终点和总数组大小的数组?类似于从 1 到 10 的数组,它有 20 个元素长。例如,数组可能看起来像:

1 1.5 2 2.5 3 3.5 ...

【问题讨论】:

  • 在您提供的样本向量中,以 0.5 的步长从 1 移动到 10 将为您提供 19 个元素的向量,而不是 20 个。
  • 19 - 我数了数我的手指。找不到我的算盘。

标签: arrays matlab vector


【解决方案1】:

有几种方法可以做到这一点:

  • 使用colon operator

    startValue = 1;
    endValue = 10;
    nElements = 20;
    stepSize = (endValue-startValue)/(nElements-1);
    A = startValue:stepSize:endValue;
    
  • 使用linspace 函数(由Amro 建议):

    startValue = 1;
    endValue = 10;
    nElements = 20;
    A = linspace(startValue,endValue,nElements);
    

请记住,结果数组中的元素数量包括端点。在上面的示例中,数组元素值之间的差异将是9/19,或略小于 0.5(与问题中的示例数组不同)。

【讨论】:

    【解决方案2】:

    linspace 生成线性间隔向量:

    >>  A = linspace(1, 10, 20-1)
    ans =
    1 1.5 2 2.5 3 3.5 ... 9.5 10
    

    【讨论】:

    • n.b. linspace 输出 row 个向量;在优化领域,所有向量都是列向量。当心。
    • OP 想要创建一个包含 20 个元素的数组,而您正在谈论一些微不足道的优化(甚至可能不是这种情况!!)
    【解决方案3】:

    简单的单线!

    1:0.5:10;
    

    输出:

    1 1.5 2 2.5 ... 9 9.5 10
    

    请注意,这将是一个 19 元素向量,而不是 20。

    【讨论】:

    • 不,这将是一个 19 元素 向量。它将包括整数 1 到 10(其中有 10 个),以及每对整数之间的中点(其中有 9 个)。
    • @gnovice:感谢您的提醒。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 2021-01-08
    • 2018-05-30
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多