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