使用Octave arrayfun和字符串参数?

时间:2015-12-08 18:00:44

标签: matlab octave

我使用arrayfun绘制自定义函数的结果,该函数执行一些逻辑,查找和计算。我的原始电话看起来与此类似:

plot(x, arrayfun(@Q, x.^2, someNumericVariable));

这很有效。但是,除了someNumericVariable参数之外,我还想添加另一个参数someStringVariable,所以我将其更改为:

plot(x, arrayfun(@Q, x.^2, someNumericVariable, someStringVariable));

然而,当试图使用它时,我收到一个错误:

error: arrayfun: dimensions mismatch

我猜这是因为GNU Octave文档中的这一行而发生的:

  

如果给定多个数组输入参数,则所有输入参数必须具有相同的大小   (https://www.gnu.org/software/octave/doc/interpreter/Function-Application.html

所以我假设我尝试传递的字符串被视为一个数组,它的维度与数值常量值不同?

如果是这样,在保持代码语法简洁的同时,我是否可以做任何变通办法?

1 个答案:

答案 0 :(得分:1)

在MATLAB中可以使用的一种解决方法是:

plot(x, arrayfun(@(u,v) Q(u,v,someStringVariable), x.^2, someNumericVariable));