Matlab - 如何检查句柄的存在

时间:2015-05-29 12:38:29

标签: matlab

有没有办法检查手柄是否存在?所以类似:如果我之前没有声明一个句柄,我想要一个0作为输出,否则一个。

我尝试过ishandle,isvalid,isfield,isempty但是他们都没有在一个不存在的领域工作#34;所以如果我没有声明句柄,我会收到一个错误.. "参考不存在的字段' SP'。"

如果我尝试"存在名称"函数它只适用于变量但不适用于句柄

所以:

handle.a=figure;
a=handle.a;
exist a

返回0

,而

handle.a=figure;
exist handle.a

返回1

但我正在寻找:

%without setting the handle:
exist handle.a

ANS = 1

{{1}}

ANS = 0

我希望我的帖子是可以理解的。 谢谢您的帮助!克劳斯

1 个答案:

答案 0 :(得分:2)

让我重新说一下:您正在为结构的字段分配句柄。现在你想测试字段中是否有一个有效的句柄,并防止可能出错的一切:(1)没有字段,(2)它是空的,(3)它是一个数组而不是一个标量,(4) )它不是一个句柄,(5)它不是一个有效的句柄。

因此:

tf = isfield(handle,'a') && isscalar(handle.a) && ishandle(handle.a);

当然,如果您知道某些条件永远不会发生,您可以放弃相应的测试。