我有一个关于函数验证作为其他函数输入的问题。
假设我想创建一个简单的函数,在向量输入x上迭代另一个函数5次(它的作用不是那么重要,它只是为了说明目的):
% A function to iterate another function
function result = iterateFunction(funcHandle,x)
% Create an input parser to validate x
p = inputParser;
isValidX = @(x) validateattributes(x, {'numeric'}, {'column'});
p.addRequired('x',isValidX);
p.parse(x);
% Initialize the result
result = x;
% Iterate
for k=1:5
result = funcHandle(result);
end
end
现在我想要做的是通过提出问题验证funcHandle
:
" funcHandle
是否引用了一个以向量作为输入并返回与输出大小相同的向量的函数?"
我怀疑在Matlab中没有内置的方法可以做到这一点,因为一般的Matlab函数具有可变输出大小,可能取决于输入大小。
我在想,有可能创建一个自定义类vectorFunction
来封装我需要的这些属性吗?然后我可以通过调用
validateattributes(funcHandle, {'vectorFunction'}, {});
但是,我不知道如何让它在实践中有意义地发挥作用(如果可能的话)。我是面向对象编程的新手。
我在这里发现了类似的讨论:
How can I validate a function handle as an input argument?
但它并不完全让我满意。我希望能够在不调用特定输入函数的情况下验证句柄。
我有一种预感,我问的可能真的不可能......但我想明确是或否。
提前感谢您的时间。
本