Cell配列の連結に伴う要素数の追加
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
takeru misawa
am 13 Sep. 2021
Bearbeitet: takeru misawa
am 13 Sep. 2021
A = struct2cell(matfile3);
name = fieldnames(matfile3);
for i = 1:size(A,1)
Output.(name{i}) = [A{i,1}, A{i,2}];
end
Output
の部分なのですが、入力するmatfile(フィールドなどの構造は同じ)の数を可変にしたい場合、どのようにすればいいですか。マットファイルの数が変数Xとおいて考えた場合のコードがいまいちわかりません。
例えば、X = 5だとして
A = struct2cell(matfile3);
name = fieldnames(matfile3);
for i = 1:size(A,1)
Output.(name{i}) = [A{i,1}, A{i,2}, A{i,3}, A{i,4}, A{i,5}];
end
Output
と同じ結果になるようにしたいです。(毎回、「A(i,〇〇)」)と書くのは大変なので。。。
0 Kommentare
Akzeptierte Antwort
Hernia Baby
am 13 Sep. 2021
読み込むのも自動化しましょう
clear,clc;
matnames = dir('*.mat');
ここがミソです
最初を空集合にして、名前の数だけloadしたものを格納してます
matfile3 = [];
for i = 1:length(matnames)
tmp = load(fullfile(matnames(i).folder,matnames(i).name));
matfile3 = [matfile3; tmp.S1] ;
end
A = struct2cell(matfile3);
name = fieldnames(matfile3);
ここでも同様に空集合tmpを使い、1列ずつ連結しています
for i = 1:size(A,1)
tmp = [];
for j = 1:size(A,2)
tmp = [tmp, A{i,j}];
end
Output.(name{i}) = tmp;
clear tmp
end
Output
1 Kommentar
takeru misawa
am 13 Sep. 2021
Bearbeitet: takeru misawa
am 13 Sep. 2021
ご回答いただきありがとう御座います。実際にいま作成している分析スクリプトに上記の内容を少し修正したものを加えたところ、無事に実行することができました。
すぐにお返事いただき大変感謝しております。このような発想がすぐできるように私もなりたいですね。。。
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!