如何从 MATLAB 中的函数句柄中提取 x 和 y 值?

问题描述 投票:0回答:1

我有一个 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 值的方法。

function matlab properties extract sym
1个回答
0
投票

MATLAB 函数

func2str
将函数句柄作为输入并返回函数的名称或定义。所以

>> fh = @(P) (subs(P, x, 2) == 0);
>> fText = func2str(fh)

fText =

    '@(P)(subs(P,x,2)==0)'

现在您可以使用 MATLAB 字符串解析函数从该文本中获取您想要的数字。有多种方法可以做到这一点,最好的方法取决于您需要处理哪些可能的输入(您的 xy 值可以是负数吗?十进制?以科学计数法表示?),但对于一个简单的情况你可以使用

digitBoundary
:

>> c = split(fText, digitBoundary)

ans =

  5×1 cell array

    {'@(P)(subs(P,x,'}
    {'2'             }
    {')=='           }
    {'0'             }
    {')'             }

x = str2num(c{2});
y = str2num(c{4});
© www.soinside.com 2019 - 2024. All rights reserved.