如何删除嵌套的struct

时间:2014-04-23 05:37:46

标签: matlab object

我有一个绘图对象,比方说,

obj = line(0,0);

可以轻松删除

delete(obj);

但是如果obj是嵌套的,比如

obj.r = line(0,0);

无法以这种方式删除obj,否则会出现此错误:

Error using delete
Argument must contain a string.

那么如何删除这种嵌套对象?

修改

obj.r = line(0,0);
obj.t = line(0,0);
obj.q = line(0,0);

works:
delete(obj.r);
delete(obj.t);
delete(obj.q);

doesn't work
delete(obj);

1 个答案:

答案 0 :(得分:0)

如果obj是一个结构但没有嵌套(你obj.robj.t但不obj.p.rstructfun可能会做你想要的,这应该在delete的每个字段上调用obj

structfun(@delete,obj)

如果你有嵌套它会变得更复杂(取决于你有多少层)。您可以使用fieldnames执行某些操作,检查是否有任何字段本身是结构,然后对这些字段使用structfun