MATLAB ワークスペースの使い方

8 Ansichten (letzte 30 Tage)
晃平
晃平 am 21 Feb. 2024
Kommentiert: 晃平 am 26 Feb. 2024
セル配列の変数と値をワークスペースに登録したいです。
data{1,1}:文字列変数 A,B,Cなど
data{1,2}:数値   1,2,3など
で、ワークスペースに
A=1
B=2
C=3
と登録したいです。

Akzeptierte Antwort

Tak
Tak am 21 Feb. 2024
Bearbeitet: Tak am 21 Feb. 2024
以前の質問 でも回答しましたし、Dyuman Joshi さんのコメント にもありますように、このように変数を作成するのは好ましくありません。どうしてもワークスペースに作成する変数名と値を、セル配列で管理・指定する必要がある のであれば eval や assignin を使う必要があります。
どちらのドキュメントにも記載されていますが コードが分かりにくくなったり、予期しない結果が発生する可能性があります ので注意してください。
data の 1列目に変数名, 2列目にデータが格納されたセル配列とした場合。
data = {'A', 1;
'B', 2;
'C', 3}
eval でのワークスペースへの変数作成
以前の質問と違い、変数名ではなく格納する値を文字列に変換してMATLAB式にしますので、有効桁数には注意が必要です。
for n=1:height(data)
eval([data{n,1} '=' num2str(data{n,2}) ';'])
end
assignin でのワークスペースへの変数作成
assignin は、ワークスペースや変数名、値を指定して変数を作成します。セル配列の要素ごとに assignin を実行する必要がありますので、これには cellfun をあわせて使います。
ws = repmat({'base'}, height(data), 1);
var = data(:,1);
val = data(:,2);
cellfun(@assignin, ws, var, val)
セル配列から構造体 を作成する
今回のように 名前でアクセスしたい のであれば構造体が望ましいです。
既にセル配列に格納されている名前や値から構造体を作成するには cell2struct を使います。
s = cell2struct(data(:,2), data(:,1), 1)
構造体フィールドに各値が格納されますので s.A, s.B ... または s.('A'), s.('B') のように記述することでアクセスできます。
その他の方法としては、いまセル配列で管理・運用している変数名や値を、CSVやJSON形式ファイルなどの外部ファイルにすることが可能でしたら、外部ファイルからインポートして構造体やテーブルを作成することもできます。
  1 Kommentar
晃平
晃平 am 26 Feb. 2024
ご回答ありがとうございます。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu ビッグ データの処理 finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2022b

Community Treasure Hunt

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

Start Hunting!