【发布时间】:2015-07-27 13:28:49
【问题描述】:
在 Matlab 的 mex 文件中,有一个函数 mxIsScalar 可以告诉您 mex 文件的输入是否是标量。但该功能已在 R2015a 中引入。
如果使用以前版本的 Matlab(在我的情况下是 2014b,如果这很重要),检查输入是标量还是数组的最优雅的方法是什么?
我需要将mxGetNumberOfDimensions、mxGetDimensions 和mxIsNumeric 组合起来吗?或者还有其他clear和simple的方法吗?我更喜欢可读性而不是速度。
【问题讨论】:
-
我不确定这一点,但印象是
sizeof可以做到这一点。有什么理由不适合这里(sizeof(vec)/sizeof(vec[0]))? -
@patrik 它可能会成功。不是经验丰富的 C 代码编写者,所以对此一无所知。我想这与
vec的正确类型无关?在这种情况下,它们将是 mxArray 类型。 -
我认为
sizeof适用于任何类型,但正如我所说,我并不完全确定。你可以试试看是否成功。 -
mathworks.com/help/releases/R2014b/matlab/matlab_external/… 有一个示例,它检查标量值。 mxGetM 和 mxGetN 应该适用于任何类型。如果您期望超过 2-D,您可能还需要检查维度数。
-
@Navan 我看不到那个例子...许可证激活关联错误(虽然我在大学使用的是完整版的 Matlab,所以我应该有任何许可证)。