之前我已经完成了一些简单的matlab功能,但由于某些原因我不知道,我现在尝试做的事情不会起作用。
该功能看起来像这样:
function a = calc(t)
if t < 2.0
a = -pi/2;
else
a = 2*pi;
end
我尝试通过以下方式调用它:
a = calc(linspace(0,5))
(至少我之前已经理解)应该生成一个变量矩阵,其值为a。然而,简单地变为具有值2 * pi的常数。为什么它不会记录在t&gt; = 2之前发生的事情?现在似乎它只计算最后一个值(当t = 5时)。有人可以告诉我我做错了吗?
答案 0 :(得分:5)
它无效的原因是因为您的功能仅用于输出一个值。当然,MATLAB将从数组的开头到结束,因为你的函数只输出一个值,它只会给你数组中 last 值的输出(又称为5) 。因此,如果要对值的向量/矩阵执行此操作,则需要确保输出值a
也是同一类型。换句话说,做这样的事情:
function a = calc(t)
a = 2*pi*ones(size(t));
a(t < 2.0) = -pi/2;
让我们慢慢来看看这个。 a
是值的数组/矩阵,其大小与输入t
相同,a
中的每个值都设置为2*pi
。之后,t < 2.0
的任何值,我们都会将值更改为-pi/2
。除此之外,它们将保持不变(即2*pi
)。请记住,当您使用MATLAB时,您需要确保输出可以适应不同形状和大小的输入。与人们处理过的其他编程语言相比,这是一种不同的思维方式,但是一旦掌握了它,它就非常容易。