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

5 次查看(过去 30 天)
晃平
晃平 2024-2-21
评论: 晃平 2024-2-26
セル配列の変数と値をワークスペースに登録したいです。
data{1,1}:文字列変数 A,B,Cなど
data{1,2}:数値   1,2,3など
で、ワークスペースに
A=1
B=2
C=3
と登録したいです。

采纳的回答

Tak
Tak 2024-2-21
编辑:Tak 2024-2-21
以前の質問 でも回答しましたし、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 个评论
晃平
晃平 2024-2-26
ご回答ありがとうございます。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 プログラミング ユーティリティ 的更多信息

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!