セル配列に格納されたテーブルデータのラベル名検索
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
添付画像のようにセル配列にテーブルデータを格納したデータが複数あります。
■ やりたいこと
複数ファイルにおいて、任意のラベル名で、複数の列データを、上記のようなデータから抽出したい
■ 現状
検索したいラベル名は分かっているのですが、
データによってはセル配列の列位置が異なるため、
非効率ですが、
セル内のテーブルデータのラベル名を確認 → そのラベルが存在するセル列を指定 → データを抽出
をしています。
■ 質問
セル配列内のテーブルラベル名を検索して、データにアクセスする方法をご教授願います。
For文でセル配列の行列1つ1つを検索する方法も考えましたが、
何かもっとスマートな方法があるのではと思い、質問させて頂きました。
0 commentaires
Réponse acceptée
Atsushi Ueno
le 14 Juil 2022
mytbls={array2table(rand( 20, 3)) array2table(rand( 2, 4)) array2table(rand( 1, 3)) ...
array2table(rand( 206, 4)) array2table(rand(2067, 5)) array2table(rand( 21, 8)) ...
array2table(rand(2023,46)) array2table(rand(5056,16)) array2table(rand( 750,30))} % サンプルデータ
サンプルデータ (セル配列) の各テーブルにおけるラベル名は全てVar1, Var2, ... となっています。
mytbls{2} % 例えば2番目のテーブル(2行4列)は下記のようなランダムデータです
find関数で各テーブルの変数名から"Var4"を検索すると、1,3番目以外のテーブルの4列目に"Var4"が見つかりました。
clmns = cellfun(@(x) find(x.Properties.VariableNames == "Var4"), mytbls, 'uni', false)
ラベルが存在するセル列が得られたので、下記のように各テーブルの”Var4”だけを抜き出して集める事が出来ます。
clmns = cellfun(@(x,clmn) x(:,clmn), mytbls, clmns, 'uni', false)
Plus de réponses (0)
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!