我正在尝试学习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函数吗?
答案 0 :(得分:0)
主要区别可以概括为预定义大小与预定义步骤。您的示例非常清楚地突出显示(|---------------------|
| 1 2 3 4 |
| 5 6 7 |
| 8 9 10 11 |
|---------------------|
元素与1000
元素)。
linspace函数产生一个固定长度的向量(长度由第三个输入参数定义,默认为1001
),其下限和上限分别由第一个和第一个设置。第二个输入参数。正确的使用步骤由函数本身(100
)内部计算。
colon operator定义了一个元素向量,其值在指定的下限和上限之间。该步骤是一个默认为step = (x2 - x1) / n
的可选参数,是矢量长度的判别式。这意味着结果的长度由必须完成的步骤数确定,以便从较低的一个开始达到上限。另请注意,在this MathWorks thread上,您可以找到关于冒号运算符在浮点管理方面的行为的非常有趣的讨论。
与第一个相关的另一个区别是linspace总是包含上限值,而冒号运算符只在指定的步骤允许的情况下包含它(1
)。
作为一般规则,当我想要生成预定义长度的矢量(非常明显,不是吗?)时,我更喜欢使用前者,而后者当我需要创建长度仅有的序列时边际相关性(或根本没有相关性)