Main Content

Simulink.saveVars

(非推奨) MATLAB コード形式でワークスペース変数とその値を保存

Simulink.saveVars は推奨されません。代わりに matlab.io.saveVariablesToScript を使用してください。

説明

Simulink.saveVars(filename) は、MATLAB® コードの生成が可能な現在のワークスペース内のすべての変数を filename.m という MATLAB ファイルに保存します。ある変数の MATLAB コードの生成が不可能な場合、この変数は filename.mat というコンパニオン MAT ファイルに保存され、警告が生成されます。どちらのファイルの場合も、既存のファイルは上書きされます。ファイル名は、現在のワークスペース内のどの変数の名前とも同じにすることができず、オプションで接尾辞 .m を付けることができます。Simulink.saveVars を使用しても、ワークスペースの内容には影響がまったくありません。

MATLAB ファイルを実行すると、このファイルに保存されている変数が現在のワークスペースに復元されます。コンパニオン MAT ファイルが存在する場合は、MATLAB ファイル内のコードによって MAT ファイルが読み込まれ、その変数も復元されます。MATLAB ファイルと MAT ファイルの両方が存在するときは、MAT ファイルが利用可能な場合を除き、MATLAB ファイルを読み込まないでください。読み込むと、エラーが発生します。MAT ファイルを直接読み込まないでください。直接読み込むと、データが完全に復元されません。ファイルの読み込みによって既存の変数が上書きされない場合、警告は表示されません。

Simulink.saveVars によって作成された MATLAB ファイルは編集できます。保存された変数の MATLAB コード セクション間またはセクション内に、コメントを挿入することが可能です。ただし、後で Simulink.saveVars を使用してファイルを更新したり、ファイルに追加したりした場合は、MATLAB コード セクション間のコメントしか維持されません。したがって、後で変更することを予定していないファイルでしか、内部コメントを使用すべきではありません。

MATLAB ファイル内の、最初の 5 つのコメント行を構成するヘッダー セクションは編集しないでください。Simulink® は、手動で編集された MATLAB ファイルが構文的に正しいかどうかをチェックしません。ファイル内のいずれの MATLAB コードも編集しないでください。MAT ファイルは編集不可能であり、編集しようと試みるべきではありません。

Simulink.saveVars(filename, var1,...,varN) は、var1,...,varN で指定された変数のみを保存します。ワイルドカード文字 * を使って、パターンの一致する変数をすべて保存できます。* は、英数字以外の文字を含む、1 つ以上の文字と一致します。

Simulink.saveVars(filename,'-regexp',RegExps) は、正規表現のコンマ区切りリスト RegExps 内のいずれかの正規表現と一致する名前をもつ変数のみを保存します。詳細については、正規表現を参照してください。この関数を呼び出すと、VarNames'-regexps', RegExps の両方を、この順番を使用してコンマで区切って指定できます。

Simulink.saveVars(filename,___, UpdateOption) は、UpdateOption の指定に基づいて変数を保存します。

Simulink.saveVars(filename,___, Configuration) は、指定されたコンフィギュレーション オプションに従って変数を保存します。

Simulink.saveVars(filename, ___, MatlabVer) は、MatlabVer によって指定される MATLAB バージョンに必要な形式で作成された MAT ファイルを保存します。

[r1, r2] = Simulink.saveVars(filename, ___) は、r1 および r2 に保存されている変数を返します。

すべて折りたたむ

いくつかのベース ワークスペース変数を定義し、さまざまな入力引数を使用して MATLAB ファイルに保存します。

いくつかのベース ワークスペース変数を定義し、新しい MATLAB ファイル myVars.m に保存します。

a = 1;
b = 2.5;
c = 'A string';
d = {a,b,c};
Simulink.saveVars('myVars');

追加のベース ワークスペース変数を定義してから、以前にファイルに保存した値を変更せずに、既存のファイル myVars.m にこれらの変数を追加します。

K = Simulink.Parameter;
myType = fixdt(1,16,3);
Simulink.saveVars('myVars','-append','K','myType');

変数 V1 および V2 を、MATLAB ファイル内の値で更新するか、値を MATLAB コードに変換できない場合は MAT ファイル内の値で更新します。ファイルは既に存在するものでなければなりません。11 個以上の要素をもつ配列は、任意のバージョンの MATLAB に読み込むことができる MAT ファイルに保存されます。戻り引数 r1 は、MATLAB ファイルに保存された変数の名前をリストし、r2 は、MAT ファイルに保存された変数の名前をリストします。

[r1, r2] = Simulink.saveVars('MyFile', 'V1', 'V2', '-update',
'-maxnumel', 10, '-v4');

my3Dtable 3 次元配列の出力の 2 次元スライスを指定します。2 次元スライスの指定は次のように、1 つ目と 3 つ目の次元に応じて拡張するようにします。生成された MATLAB コードを確認します。

my3DTable = zeros(3, 4, 2, 'single');
Simulink.saveVars('mfile.m', 'my3DTable', '-2dslice', 1, 3);
my3DTable = zeros(3, 4, 2, 'single');
my3DTable (:,1,:) = single ( ...
  [1 13;
   5 17;
   9 21]);
my3DTable (:,2,:) = single( ...
  [2 14;
   6 18;
   10 22]);
my3DTable (:,3,:) = single( ...
  [3 15;
   7 19;
   11 23]);
my3DTable (:,4,:) = single( ...
  [4 16;
   8 20;
   12 24]);

入力引数

すべて折りたたむ

関数で作成または更新するファイルの名前。文字ベクトルまたは string スカラーとして指定します。ファイル名を現在のワークスペース内の変数の名前と同じにすることはできません。ファイル名には接尾辞 .m を付けることができますが、この関数では無視されます。

単一の変数またはコンマで区切られた一連の変数。文字ベクトルまたは string スカラーとして指定します。この関数は、指定された変数だけを出力ファイルに保存します。ワイルドカード文字 * を使って、パターンの一致する変数をすべて保存できます。* は、英数字以外の文字を含む、1 つ以上の文字と一致します。

例: Simulink.saveVars('myFile','A*') は、ワークスペース内の名前が A で始まるすべての変数とその値を保存します。

単一の正規表現またはコンマで区切られた一連の正規表現。文字ベクトルまたは string スカラーとして指定します。この関数は、これらのいずれかの正規表現と名前が一致している変数のみを出力ファイルに保存します。詳細については、正規表現を参照してください。この関数を呼び出すと、VarNames'-regexp', RegExps の両方を、この順番を使用してコンマで区切って指定できます。

例: Simulink.saveVars('myFile','-regexp','v*')

関数のアクションを制御するキーワード。次の値のいずれかとして指定します。

  • '-create' — 新しい MATLAB ファイル (および、必要に応じて MAT ファイル) を作成します。

  • '-update' — ファイル内に既に存在している指定された変数のみを変更することによって、filename によって指定された既存の MATLAB ファイル (および、必要に応じて MAT ファイル) を更新します。ファイル内の変数の順番は維持されます。

  • '-append' — 以下を行うことによって、filename によって指定された既存の MATLAB ファイル (および、必要に応じて MAT ファイル) を更新します。

    • ファイル内に既に存在している指定された変数を既存の順番を維持して更新する。

    • ファイル内に存在していない指定された変数を追加する。

関数のコンフィギュレーション オプション。次の値の一部またはすべてを任意の順序で指定します。1 つを超えて含める場合はコンマで区切ります。

  • '-maxnumel' MaxNum — 1 つの配列に保存する要素の数を MaxNum に制限します。この値は、0 ~ 10000 の整数でなければなりません。配列がそれより大きい場合は、その配列全体が MATLAB スクリプト ファイルではなく MAT ファイルに表示され、警告が生成されます。既定の設定: 1000

  • '-maxlevels' MaxLevels — 構造体または cell 配列ごとに保存するレベル数を MaxLevels に制限します。この値は、0 ~ 200 の整数でなければなりません。構造体または cell 配列の深度がそれより大きい場合は、そのエンティティ全体が MATLAB スクリプト ファイルではなく MAT ファイルに表示され、警告が生成されます。既定の設定: 20

  • '-textwidth' TextWidth — MATLAB スクリプト ファイル内のテキスト折り返し幅を TextWidth に設定します。この値は、32 ~ 256 の整数でなければなりません。既定の設定: 76

  • '-2dslice' — n 次元 (n > 2) の、char、論理、数値の配列データを表す 2 次元スライスの 2 つの次元を設定します。'-2dslice' オプションを使用すると、MATLAB による n 次元配列データの表示に対応した可読性の高いコードが生成されます。

    -2dslice オプションに続けて 2 つの整数引数を指定しなかった場合、Simulink.saveVars は 2 次元スライスのサイズとして n 次元配列の最初の 2 つの次元を使用します。指定する 2 つの整数引数には次の制限があります。

    • 2 つの整数は、正の値でなければなりません。

    • 2 つの整数は、n 次元配列の次元数に等しいか小さい値でなければなりません。

    • 2 つ目の整数は 1 つ目より大きい値でなければなりません。

メモ

[MATLAB の基本設定] を使用して、-maxnumel-maxlevels'-2dslice'、および -textwidth 構成オプションの既定の設定を変更できます。[ワークスペース] ペインで、[変数を MATLAB スクリプト ファイルとして保存] グループ内のオプションを使用します。

この関数が保存する MAT ファイルによって構文が使用される MATLAB バージョン。次の値で指定します。

  • '-v7.3' — 7.3 以降

  • '-v7.0' - 7.0 以降

  • '-v6' — Version 6 以降

  • '-v4' — 任意の MATLAB バージョン

出力引数

すべて折りたたむ

MATLAB ファイルに保存された変数。文字ベクトルの cell 配列として指定されます。

MAT ファイルに保存された変数。文字ベクトルの cell 配列として指定されます。

制限

関数 Simulink.saveVars には、次のような制限事項があります。

  • 共有される参照を維持しない。

  • オブジェクトの動的プロパティを無視する。

  • 以下の項目を MAT ファイルに保存するが、これらの項目は MATLAB ファイルに表示される可能性がある

多くの変数を保存する場合、生成される MATLAB ファイルには多くの行数のコードが含まれるため、実行に時間がかかる可能性があります。実行時間が長くなるのを避けるため、次の代替方法を検討してください。

  • Simulink.saveVars を使用する代わりにデータ ディクショナリに変数を永続的に保存する。データ ディクショナリでは変数を管理するためのツールがさらに提供されます。Simulink モデルの変数とオブジェクトの保存場所の決定を参照してください。

  • 関数 save を使用して MAT ファイルに変数を保存する。

ヒント

  • 容易に理解できる形式で変数を保存する必要がない場合は、関数 save を参照してください。

  • バス オブジェクトだけを保存する必要がある場合は、関数 Simulink.Bus.save を使用してください。

  • コンフィギュレーション セットだけを保存する必要がある場合は、メソッド Simulink.ConfigSet.saveAs を使用してください。

バージョン履歴

R2010a で導入