Effacer les filtres
Effacer les filtres

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

5 vues (au cours des 30 derniers jours)
晃平
晃平 le 21 Fév 2024
Commenté : 晃平 le 26 Fév 2024
セル配列の変数と値をワークスペースに登録したいです。
data{1,1}:文字列変数 A,B,Cなど
data{1,2}:数値   1,2,3など
で、ワークスペースに
A=1
B=2
C=3
と登録したいです。

Réponse acceptée

Tak
Tak le 21 Fév 2024
Modifié(e) : Tak le 21 Fév 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 commentaire
晃平
晃平 le 26 Fév 2024
ご回答ありがとうございます。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur プログラミング ユーティリティ dans Help Center et File Exchange

Tags

Produits


Version

R2022b

Community Treasure Hunt

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

Start Hunting!