Cell配列の連結に伴う要素数の追加

8 visualizzazioni (ultimi 30 giorni)
takeru misawa
takeru misawa il 13 Set 2021
Modificato: takeru misawa il 13 Set 2021
の質問にございます。Hernia Baby 様が回答くださっている記事に関して
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,〇〇)」)と書くのは大変なので。。。

Risposta accettata

Hernia Baby
Hernia Baby il 13 Set 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
Output = struct with fields:
a: [1 2 3] b: [2 3 4 5 6 7] c: 'test1test2test3'
  1 Commento
takeru misawa
takeru misawa il 13 Set 2021
Modificato: takeru misawa il 13 Set 2021
ご回答いただきありがとう御座います。実際にいま作成している分析スクリプトに上記の内容を少し修正したものを加えたところ、無事に実行することができました。
すぐにお返事いただき大変感謝しております。このような発想がすぐできるように私もなりたいですね。。。

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su 構造体 in Help Center e File Exchange

Prodotti


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!