beg*_*inh 7 string matlab structure
我有一个字符串,想要检查工作区中是否存在任何具有相同名称的变量.在工作区我也有很多结构MNO MNN MNM等我只能检查是否存在名为M的变量.如何更深入地进入这个结构?我试过了:
exist('M.N')
YesNo = any(strcmp(who,'M.N.O'))
evalin('base','exist(''M.N.O'',''var'')')
Run Code Online (Sandbox Code Playgroud)
都给我同样的问题所以我被困住了.
Gun*_*uyf 12
您可以使用isfield检查变量是否具有特定字段.请参阅链接以获取示例!
举个例子,你需要:
isfield(M,'N')
Run Code Online (Sandbox Code Playgroud)
如果是真的,你可以更深入:
isfield(M.N,'O')
Run Code Online (Sandbox Code Playgroud)
请注意
isfield(M,'N.O')
Run Code Online (Sandbox Code Playgroud)
不会工作;)
一种选择:编写一个递归函数将结构向下扩展到其叶字段,将字段附加到列表中。
(未经测试的概念代码 - 可能无法正常工作)
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
Run Code Online (Sandbox Code Playgroud)
然后你就可以使用any(strcmp(who,'M.N.O'))你已经准备好的支票了。
| 归档时间: |
|
| 查看次数: |
6507 次 |
| 最近记录: |