How to remove empty struct fields [ ] from a group a struct fields ?

104 ビュー (過去 30 日間)
vijay chandra
vijay chandra 2017 年 11 月 23 日
回答済み: Robert 2020 年 6 月 12 日
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.

採用された回答

Jos (10584)
Jos (10584) 2017 年 11 月 24 日
Does this do what you want?
% create a structure with empty fields
S.A = 'x' ; S.B = [] ; S.C = 1:5 ;
fn = fieldnames(S)
tf = cellfun(@(c) isempty(S.(c)), fn)
S2 = rmfield(S, fn(tf))

その他の回答 (2 件)

sourav  malla
sourav malla 2019 年 6 月 26 日
編集済み: sourav malla 2019 年 6 月 26 日
You can try like this:-
out = {t(~cellfun(@isempty,{t.places})).places};
t = cell2struct(out,{'places'},1);
  3 件のコメント
Stephen23
Stephen23 2019 年 6 月 27 日
a.bt(cellfun('isempty',a.bt)) = []
MSani
MSani 2019 年 6 月 27 日
@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
Robert 2020 年 6 月 12 日
% 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

カテゴリ

Help Center および File ExchangeStructures についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by