我有一个字符串,想要检查工作空间中是否存在任何具有相同名称的变量。在工作区中,我也有许多结构M.N.O M.N.N M.N.M等。我只能检查是否存在名称为M的变量。如何更深入地研究这种结构?
我试过了:

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

都给我同样的问题,所以我被困住了。

最佳答案

一种选择:编写一个递归函数以将结构扩展到其叶字段,然后将这些字段附加到列表中。

(未经测试的概念性代码-可能无法按原样正确运行)

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'))检查。

关于string - 在matlab中如何检查工作区中是否存在带有字段的结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12041318/

10-11 19:12