how to merge two mat files which have different structure cells into a mat file with a matrix
4 ビュー (過去 30 日間)
古いコメントを表示
I need to merge 1000 files with different structure cells into one matrix. For detailed, I make an examples of two files A and B files. File A has one row with n cells A = {cell(1a,1a), cell(1a,2a), .... cell(1a,na)} and B has one row and m cells B = {cell(1b,1b), cell(1b,2b), .... cell(1b,mb)}. Each cell in A and B has same 3 columns but different rows. My question is how to merge these two files with a transformation of all cell content in to ONE matrix mat file like: [cell(1a,1a); cell(1a,2a); .... cell(1a,na); cell(1b,1b); cell(1b,2b), .... cell(1b,mb)] Thanks.
2 件のコメント
jgg
2015 年 12 月 22 日
I think you need to give us a clearer example of what you're trying to do. Let's say you have K files. Then, if I understand your problem, couldn't you just do this:
C = cell(K,1);
for i = 1:K
load(file_i);
C{i} = file_i;
end
Is this not what you want to do?
採用された回答
Renato Agurto
2015 年 12 月 22 日
編集済み: Renato Agurto
2015 年 12 月 22 日
I think this should do it:
for i = 1:N
A = load(file_i);
A = struct2cell(A);
f{i} = cat(1,A{:})
end
combined_f = cat(1,f{:});
3 件のコメント
Renato Agurto
2015 年 12 月 22 日
編集済み: Renato Agurto
2015 年 12 月 22 日
My answer was arlready for multiple files. file_i should actually be file_array{i}. where
file_array = {'file1.mat',..
'file2.mat',...
'file3.mat'};
then you can use the above code:
for i = 1:N
A = load(file_array{i}); %load file i
A = struct2cell(A); %get cell array with ALL matrices in file
f{i} = cat(1,A{:}) %merge matrices of file
end
combined_f = cat(1,f{:}); %merge matrices of all files
where N is the number of files. In this case 3
その他の回答 (1 件)
参考
カテゴリ
Help Center および File Exchange で File Operations についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!