【问题标题】:what is the difference between defining a vector using linspace and defining a vector using steps?使用 linspace 定义向量和使用步骤定义向量有什么区别?
【发布时间】:2018-04-03 22:20:56
【问题描述】:

我正在尝试学习 matlab 的基础知识, 我想写一个mattlab脚本, 在这个脚本中,我定义了一个带有“d”步长的向量 x,它的长度是 (2*pi/1000) 我想根据 x 绘制两个 sin 函数: 第一个罪的频率为 1,第二个罪的频率为 10.3 ..

这就是我所做的:

d=(2*pi/1000);
x=-pi:d:pi;
first=sin(x);
second=sin(10.3*x);
plot(x,first,x,second);

我的问题: 有什么区别:

x=linspace(-pi,pi,1000);

和..

d=(2*pi/1000);
x=-pi:d:pi;

?我问是因为我感到困惑,因为我认为它们都是相同的,但我认为我的假设有问题.. 还有没有更充分的方法来编写给定频率的 sin 函数?

【问题讨论】:

标签: matlab


【解决方案1】:

主要区别可以概括为预定义大小与预定义步骤。您的示例确实很好地突出了它(1000 元素与 1001 元素)。

linspace 函数生成一个固定长度向量(长度由第三个输入参数定义,默认为 100),其下限和上限分别由第一个和第二个输入参数设置.使用的正确步骤由函数本身在内部计算 (step = (x2 - x1) / n)。

colon operator 定义了一个元素向量,其值范围在指定的下限和上限之间。 step是可选参数,默认为1,是向量长度的判别式。这意味着结果的长度取决于为达到上限所必须完成的步数,从下限开始。附带说明一下,在this MathWorks thread 上,您可以找到关于冒号运算符在浮点管理方面的行为的非常有趣的讨论。

与第一个相关的另一个区别是,linspace 始终包含上限值,而冒号运算符仅在指定步骤允许时才包含它(0:5:14 = [0 5 10])。

一般来说,当我想生成一个预定义长度的向量时(很明显,不是吗?),我更喜欢使用前者,而当我需要创建一个长度只有边缘相关(或根本没有相关性)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多