8

我有一个字符串,想检查工作区中是否存在任何同名的变量。在工作区中,我还有许多结构 MNO MNN MNM 等。我只能检查是否存在名为 M 的变量。如何更深入地了解这个结构?我试过了:

exist('M.N')
YesNo = any(strcmp(who,'M.N.O'))
evalin('base','exist(''M.N.O'',''var'')')

所有人都给我同样的问题,所以我被卡住了。

4

2 回答 2

13
于 2012-08-20T16:23:46.703 回答
3

一种选择:编写一个递归函数将结构扩展到它们的叶子字段,将字段附加到列表中。

(未经测试的概念代码 - 可能无法正常工作)

function varlist = getStructFields(var,varlist)
if isstruct(var)
    fn = fieldnames(var);
    varlist = vertcat(varlist,fn); %# append fields to the list
    for field = fn' %# ' create row vector; iterate through fields
         varlist = getStructFields(var.(char(field)), varlist); %# recursion here 
    end
end
end

然后你可以使用any(strcmp(who,'M.N.O'))你已经想出的支票。

于 2012-08-20T17:07:18.560 回答