MATLAB: How to write the matlab command for creating the nested structures
MATLAB
Hello,
I want to write the single Matlab command for creating the nested structures as below, instead of two commands (like a = struct(…))
a.b(1).c = struct('d',{1,2,3},'e',{4,5,6})
a.b(2).c = struct('f',{7,8,9},'g',{4,5,6})
Best Answer
In my opinion, you're better off sticking with what you have. It's a lot clearer than the one-liner. If you really want the one-liner, it's more of the same as what you've already written:
a = struct('b', struct('c', {struct('d',{1,2,3},'e',{4,5,6}), struct('f',{7,8,9},'g',{4,5,6})}))
I assume this is related to yourprevious question. First, I'd like to point out that it doesn't look like a structure is the right container for your data. Since you want to do the same operations on all or most the fields, a cell array (or a matrix if the content of the fields is the same size) would be a lot better.
That's also the way to solve this particular problem. You can't do it withstructfun.
A.B.C = [1 2 3];
A.B.D = [3 4 5];
A.B.E = [6 7 8];
c = struct2cell(A.B); %convert to cell array. In this particular case, a matrix would work even better
%you can then filter rows (fields) of the cell array any way you want,e .g.
fn = fieldnames(A.B);
filteredc = c(~ismember(fn, {'E', 'G'})); %remove fields 'E' and 'G'
Best Answer