Delete fields of struct based on starting characters

2 次查看(过去 30 天)
Hello everyone. I have a struct called temp which has 5 fields
I want to delete all the fields starting with 'fig' and 'ax'. The final output struct should look something like
I know that we can do it in a complex way using fieldnames and rmfield with multiple lines of code.
Is there any simple way to do this? Thanks in advance.

采纳的回答

Guillaume
Guillaume 2020-2-26
编辑:Guillaume 2020-2-26
You do have to use fieldnames and rmfield indeed. It's only two lines and not complicated at all:
fns = fieldnames(temp);
temp = rmfield(temp, fns(startsWith(fns, {'fig', 'ax'})))
edit: However, note that if you're trying to remove all the graphics objects from your structure a more reliable method would be:
fns = fieldnames(temp);
temp = rmfield(temp, fns(cellfun(@(fn) ishghandle(temp.(fn)), fns)));
  2 个评论
Image Analyst
Image Analyst 2020-2-26
If you need more help, attach temp in a .mat file using the paper clip icon, so we can work with it
save('answers.mat', 'temp'); % Save temp to a file on disk.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by