这个 ~ 的功能是什么意思? (例如函数=f(~,x,y))

What does a function with this ~ mean? (e.g. function=f(~, x, y))

我正在做另一门课程作业,这次是空中机器人。我必须使用 matlab ode45(普通差分方程)对 pd 控制器进行编程。必须包含此代码的文件按如下方式调用:

pd_controller(~, s, s_des, params)

我四处搜索,但找不到向我解释这一点以及它是如何工作的。

在主程序中,该函数是用我的 ODE 需要的时间变量调用的:

controlhandle(t, s, s_des, params)

其中此控制句柄是 pd_controller 的函数句柄。

那么,这是什么意思?我可以访问 ~ 后面的任何内容吗?

此外: 我找到了一个例子,但另一个例子。一个函数,让我们称之为 function = f(a,b) 是用 f(~, b) 调用的,其中 ab 已在函数内部声明。

这意味着你不需要在这个函数调用中传递这个参数。此外,您也可以在某些函数的输出中使用它。例如:

A = [1 4 2 2 41];
[~, B] = sort(A);

这意味着你不需要第二个输出,你可以忽略它。

在你的例子中,当没有为第一个参数 t 发送值时,函数可能在他的计算中作用于 t 的默认值。

此外,您可以在 matlab documentation 中找到更多相关信息。 我应该提到 this post 作为答案存在,但它可能在这里。

该符号称为波浪号,表示您将忽略该输入参数。

在此处查看文档:https://mathworks.com/help/matlab/matlab_prog/ignore-function-inputs.html

在你的例子中,函数 controlhandle 不会被传递一个 t 变量,并且可能(应该)对此进行一些检查,如果 none给出。


这与输出参数相同,例如,如果您想要数组中最大值的 索引,而不是最大值本身,您可以使用

a = [pi, 3.6, 1];
[~, idx] = max(a); % idx = 2, we don't know what the max value is