我有一个 MATLAB 函数,它接受函数句柄作为参数,我需要从中提取 x 和 y 值。函数句柄的格式为
@(P) (subs(P, x, <x_value>) == <y_value>)
.
例如,如果使用参数
@(P) (subs(P, x, 2) == 0)
调用函数,我需要提取 x = 2
和 y = 0
。同样,如果使用参数 @(P) (subs(P, x, 6) == 0)
调用该函数,我需要提取 x = 6
和 y = 0
。
如何在 MATLAB 中实现这一目标?我正在寻找一种从函数句柄中提取 x 和 y 值的方法。
输入示例:
@(P) (subs(P, x, 2) == 0)
@(P) (subs(P, x, 6) == 0)
所需输出:
x = 2
和 y = 0
x = 6
和 y = 0
我愿意使用任何可以帮助我从函数句柄中提取 x 和 y 值的方法。
func2str
将函数句柄作为输入并返回函数的名称或定义。所以
>> fh = @(P) (subs(P, x, 2) == 0);
>> fText = func2str(fh)
fText =
'@(P)(subs(P,x,2)==0)'
现在您可以使用 MATLAB 字符串解析函数从该文本中获取您想要的数字。有多种方法可以做到这一点,最好的方法取决于您需要处理哪些可能的输入(您的 x 和 y 值可以是负数吗?十进制?以科学计数法表示?),但对于一个简单的情况你可以使用
digitBoundary
:
>> c = split(fText, digitBoundary)
ans =
5×1 cell array
{'@(P)(subs(P,x,'}
{'2' }
{')==' }
{'0' }
{')' }
x = str2num(c{2});
y = str2num(c{4});