How to combine the elements of several identical cell structure ?
1 回表示 (過去 30 日間)
古いコメントを表示
I have 100 .mat files each containing a cell structure "Tau" with components "Tau.n" and "Tau.u", each component is an array of size 1000*5*11.
I would like to combine the data from all these .mat files such that we could generate one .mat file that now has a cell structure "Tau" with components "Tau.n" and "Tau.u" of size 100000*5*11
What would be the easiest way to do this ? For eaxample I have attached four .mat files. In this case the cell components "Tau.u" and "Tau.n" each becomes an array of size 4000*5*11.
2 件のコメント
Joe Yeh
2016 年 10 月 3 日
The data contained in the mat file does not match your description. Can you update either your question or the mat files ?
採用された回答
Joe Yeh
2016 年 10 月 3 日
編集済み: Joe Yeh
2016 年 10 月 3 日
Ok. Here's a solution for you :
Tau = struct;
for ii = 0:9
data = load(['Tau@09_n1000_c', num2str(ii), '.mat']);
if ii == 0
Tau.u = data.Tau.u;
Tau.n = data.Tau.n;
else
Tau.u = cat(4, data.Tau.u);
Tau.v = cat(4, data.Tau.n);
end
end
save('Tau_concatenated.mat')
その他の回答 (1 件)
Guillaume
2016 年 10 月 3 日
Note: there is no cell array in your mat files, just a scalar structure.
Here is how I'd solved your problem:
srcdir = 'C:\somewhere\where\mat\files\are'
mfiles = dir(fullfile(srcdir, 'tau*.mat'));
mfiles = {mfiles.name};
mfilecontent = cellfun(@(fname) load(fullfile(srcdir, fname)), mfiles, 'UniformOutput', false);
temptau = [mfilecontent{:}]; %convert cell array into structure with field Tau
temptau = temptau.Tau; %convert structure of structures into a 1x100 structure
Tau.u = vertcat(temptau.u); %concatenate u field
Tau.v = vertcat(temptau.v); %concatenate v field
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!