检查任何字段在一个给定的结构是空的

278(30天)
大家好,
我有一个结构相当一些字段,我想检查,如果任何字段是空的。有一个方法没有逐个检查每个字段吗?
目前我有一个if语句和许多口服补液盐这样做:
如果isempty (structure.field1) | | isempty (structure.field2)
等等
我试着做同样的事情
任何(isempty(字段名(结构)
但显然非空字段名。

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2017年3月6日
任何(structfun (@isempty YourStructure))
5个评论
沃尔特·罗伯森
沃尔特·罗伯森 2019年3月9日
如果长度(a.table) > = 20 & ~ isempty (a.table {20})

登录置评。

更多的答案(2)

罗斯奈
罗斯奈 2017年11月30日
我要离开这里,以防有人遇到这个页面寻找类似的回答我。
我有一个1 xn与许多领域的结构。一个特定的领域应该是布尔,但只有假已经进入,其余[]。上面的答案似乎没有帮助我,但我确实发现一些 Reddit 该做的。
emptyIndex =找到(arrayfun (@ (MyStruct) isempty (MyStruct.myField) MyStruct));
然后我可以使用emptyIndex设置字段为true。
HTH某人。
3评论
安德烈斯
安德烈斯 2021年5月27日
这将工作
找到(cellfun (@isempty {MyStruct.myField}))
为一系列struct MyStruct myField领域。
注意在许多情况下,您不需要找到索引。
例如:用0填充空字段
MyStruct (3)。myField = 123;
hasNone = cellfun (@isempty {MyStruct.myField});
[MyStruct (hasNone)。myField] =交易(0);

登录置评。


LeChat
LeChat 2020年8月13日
这可能是有点脏,因为我使用循环但工作原理:
印第安纳州= [];
2 = 1:元素个数(MyStruct)
如果isempty (MyStruct (ii) .FieldName)
印第安纳州=(印第安纳州,二世);
结束
结束
然后 印第安纳州 包含所有的索引结构字段是空的。
例如如果你想删除它们的结构:
MyStruct_init = MyStruct;
MyStruct(印第安纳州)= [];
希望这可以帮助!

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!