- structures in matlab
- clear all
- a1 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a2 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a3 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a4 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a(1) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a(2) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a(3) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a(4) = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- cat(1,a.data1)
- function so3
- a1 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a2 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a3 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- a4 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- s{1} = struct2cell(a1);
- s{2} = struct2cell(a2);
- s{3} = struct2cell(a3);
- s{4} = struct2cell(a4);
- N = numel(fieldnames(a1));
- data = cell([1 N]);
- for i=1:N
- data{i} = cell2mat(cellfun(@(x){x{i}'},s));
- end
- end
- % first make some data
- foo1 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- foo2 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- foo3 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- foo4 = struct('data1',rand(12,2),'data2',rand(12,2),'data3',rand(12,3));
- varstarter = 'foo';
- varlist = who('-regexp', ['^' varstarter '[0-9]+']);
- try
- eval([varstarter '=[' sprintf('%s,',varlist{:}) '];']);
- catch
- warning('Could not concatenate variables starting with "%s".',varstarter);
- end
- data1 = cat(1, foo.data1);
- data2 = cat(1, foo.data2);
- data3 = cat(1, foo.data3);
- if ~isstruct(foo)
- warning('Variable "%s" is of an unexpected type.',varstarter);
- else
- varfields = fieldnames(foo);
- for k=1:length(varfields)
- eval([varfields{k} '=cat(1, ' varstarter '.' varfields{k} ');']);
- end
- end
- varfields = repmat(fieldnames(foo)',2,1);
- eval(sprintf(['%s=cat(1,' varstarter '.%s);'],varfields{:}));