检查结构中是否存在嵌套字段

39个视图(过去30天)
KAE
KAE 2020年4月28日
回答: KAE2020年5月18日
我正在构建一个字段和子字段都是嵌套结构的结构。我想在一个子字段中循环,确定是否已经分配了任何值,如果没有,则为数组的末尾分配一个值。下面是一个示例,我正在检查客人们带多少土豆菜参加感恩节聚餐。是否有如何做到这一点?我的真实数据集的字段比这个示例多得多。
potatoList = {“山药”,“白色”,“糖果”};
对于iPerson = 1:4通过客人的百分比
对于iPotato=1:长度(Potatolost)
isFirst=false;这是不是某一种土豆的第一个条目?
如果~存在(“感恩节”,“var”)%还没有创建结构
isFirst=true;
其他的%结构存在,但子字段可能不存在
如果~ isfield(感恩节,“土豆”)
isFirst=true;
其他的
如果~isfield(感恩节土豆,马铃薯专家{iPotato})
isFirst=true;
终止
终止
终止
如果是第一
iValue=1;%第一次,索引从1开始
%在赋值前嵌套子字段的占位符,以避免
%由于字段尚不存在而导致错误
感恩节。土豆。(马铃薯专家{iPotato})。数字=[];
其他的
%第一次之后,索引从数组的末尾开始
iValue=长度(感恩节土豆(马铃薯马铃薯专家{iPotato}).number)+1;
终止
%为数组指定示例值
感恩节。土豆。(马铃薯专家{iPotato})。数字(iValue)=...
轮(兰德(1)* 10);%有人带了多少土豆菜
终止
终止

公认的答案

KAE
KAE 2020年5月18日
我发现了一个有用的函数isnestedfield。米 这个答案 由Thorsten提供,所以我将结束这个问题。

更多答案(1)

顾磊杰(rajat aggarwal
顾磊杰(rajat aggarwal 2020年5月13日
您可以使用索引来访问数据结构的字段。有些人还开发了一些API来访问MATLAB中的数据结构。
还可以从变量生成字段名。有关更多信息,请参阅以下链接。
//www.tatmou.com/help/matlab/matlab_prog/generate-field-names-from-variables.html
代码中不清楚您的马铃薯结构中存在哪些字段和数据字段。如果您需要更多关于这方面的输入,请共享您的结构详细信息。
1评论
KAE
KAE 2020年5月14日
您应该能够运行我提供的代码来生成具有许多嵌套字段的示例结构。在代码中,我必须检查子字段是否不存在(isFirst=true),并在分配数值之前分配一个空占位符值[]。我想知道是否有更好的方法。
如果我的问题仍然不清楚,请让我知道。

登录以发表评论。

标签

社区寻宝

在MATLAB Central中查找宝藏,了解社区如何帮助您!

开始狩猎!