How to remove empty struct fields [ ] from a group a struct fields ?
Show older comments
A: [1X1 struct] B: [1X1 struct] C: [1X1 struct] D: [ ] E: [ ] F: [ ] G: [ ] ,...................like this some structure are there. I want to remove those empty fields from that froup of fields.
Accepted Answer
More Answers (2)
sourav malla
on 26 Jun 2019
Edited: sourav malla
on 26 Jun 2019
You can try like this:-
out = {t(~cellfun(@isempty,{t.places})).places};
t = cell2struct(out,{'places'},1);
3 Comments
MSani
on 27 Jun 2019
When I load a matlab file, I am getting a struct with fields as below:
a =
struct with fields:
bt: {[1×1 struct] [] [] [] [1×1 struct] [1×1 struct]}
I would like to delete the empty fields in between. How do I do that and save the file without changing any structure to it?
I tried your solution but I got this error:
Dot indexing is not supported for variables of this type.
Stephen23
on 27 Jun 2019
a.bt(cellfun('isempty',a.bt)) = []
MSani
on 27 Jun 2019
@Stephen Thank you very much! This worked like a charm :)
How I should I then save the file? As I noticed that when I clicked on the save button, it seems to change the way the file is saved and messed up the array structures in the file.
Robert
on 12 Jun 2020
% Create struct with empty fields.
s.a = 'notEmpty';
s.b = [];
s.c = '';
s.d = 12;
fields = fieldnames(s);
sOut = rmfield(s, fields(structfun(@isempty, s)));
sOut =
struct with fields:
a: 'notEmpty'
d: 12
Categories
Find more on Structures in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!