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

16 visualizaciones (últimos 30 días)
takeru misawa
takeru misawa el 13 de Sept. de 2021
Editada: takeru misawa el 13 de Sept. de 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,〇〇)」)と書くのは大変なので。。。

Respuesta aceptada

Hernia Baby
Hernia Baby el 13 de Sept. de 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 comentario
takeru misawa
takeru misawa el 13 de Sept. de 2021
Editada: takeru misawa el 13 de Sept. de 2021
ご回答いただきありがとう御座います。実際にいま作成している分析スクリプトに上記の内容を少し修正したものを加えたところ、無事に実行することができました。
すぐにお返事いただき大変感謝しております。このような発想がすぐできるように私もなりたいですね。。。

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre 構造体 en Help Center y File Exchange.

Productos


Versión

R2019b

Community Treasure Hunt

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

Start Hunting!