Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

save

ワークスペースからファイルに変数を保存する

説明

save(filename) は、現在のワークスペースにあるすべての変数を、filename という名前の MATLAB® バイナリ ファイル (MAT ファイル) に保存します。filename が存在する場合、save はこのファイルを上書きします。

save(filename,variables) は、variables で指定された構造体配列の変数またはフィールドのみを保存します。

save(filename,variables,fmt) は、fmt で指定されたファイル形式で保存します。variables 引数はオプションです。variables を指定しない場合、関数 save はワークスペースのすべての変数を保存します。

save(filename,variables,version) は、version で指定された MAT ファイルのバージョンに保存します。variables 引数はオプションです。

save(filename,variables,version,"-nocompression") は圧縮せずに変数を MAT ファイルに保存します。"-nocompression" オプションは MAT ファイル Version 7 (既定) および Version 7.3 のみをサポートします。そのため、version"-v7" または "-v7.3" に指定しなければなりません。variables 引数はオプションです。

save(filename,variables,"-append") は、既存のファイルに新しい変数を追加します。変数が MAT ファイルに既に存在する場合、save はワークスペース内の値を使用してこれを上書きします。

ASCII ファイルの場合、"-append" はファイルの末尾にデータを追加します。

Version 6 MAT ファイルに追加するには、version"-v6" として指定する必要もあります。

save(filename,variables,"-append","-nocompression") は、圧縮せずに既存のファイルに新しい変数を追加します。既存のファイルは MAT ファイル Version 7 (既定) または 7.3 でなければなりません。

save filename は、構文のコマンド形式です。コマンド形式では、必要な特殊文字が少なくなります。かっこを入力したり、入力を一重引用符または二重引用符で囲んだりする必要はありません。入力は、コンマではなく空白を使用して区切ります。入力にスペースが含まれる場合は、一重引用符で囲みます。

たとえば、test.mat という名前のファイルを保存する場合、以下のステートメントは等価です。

save test.mat    % command form
save("test.mat") % function form

前述の構文で説明したいずれかの入力を含めることができます。たとえば、my file.mat という名前のファイルに変数 X を保存するには、次のコマンドを入力します。

save 'my file.mat' X    % command form, using single quotes
save("my file.mat","X") % function form, using double quotes

filename など、入力のいずれかが変数である場合は、コマンド形式を使用しないでください。

すべて折りたたむ

ワークスペースからすべての変数を、バイナリ MAT ファイル test.mat に保存します。filename が変数である場合は、関数構文を使用します。

filename = "test.mat";
save(filename)

それ以外の場合は、コマンド構文を使用することもできます。

save test.mat

ワークスペースから変数を削除し、関数 load でデータを取得します。

clear
load("test.mat")

pq の 2 つの変数を作成し、pqfile.mat という名前のファイルに保存します。

p = rand(1,10);
q = ones(10);
save("pqfile.mat","p","q")

関数 save は、現在のフォルダーにあるファイル pqfile.mat に変数を保存します。

コマンド構文を使用して、変数 pq を保存することもできます。

save pqfile.mat p q

2 つの変数を作成し、ASCII ファイルに保存してからファイルの内容を表示します。

p = rand(1,3);
q = ones(3);
save("pqfile.txt","p","q","-ascii")
type("pqfile.txt")
   8.1472369e-01   9.0579194e-01   1.2698682e-01
   1.0000000e+00   1.0000000e+00   1.0000000e+00
   1.0000000e+00   1.0000000e+00   1.0000000e+00
   1.0000000e+00   1.0000000e+00   1.0000000e+00

または、save の操作のコマンド構文を使用します。

save pqfile.txt p q -ascii

3 つのフィールドを含む構造体を作成します。

s1.a = 12.7;
s1.b = {"abc",[4 5; 6 7]};
s1.c = "Hello!";

構造体 s1 の各フィールドを、個別の変数として newstruct.mat という名前のファイルに保存します。

save("newstruct.mat","-struct","s1")

関数 whos を使用して、ファイルの内容をチェックします。

whos("-file","newstruct.mat")
  Name      Size            Bytes  Class     Attributes

  a         1x1                 8  double              
  b         1x2               390  cell                
  c          -                150  string              

2 つの変数を作成し、example.mat という名前の Version 7.3 MAT ファイルに保存します。

A = rand(5);
B = magic(10);
save("example.mat","A","B","-v7.3")

save の操作のコマンド構文を使用することもできます。

save example.mat A B -v7.3

2 つの変数を作成し、圧縮なしで myFile.mat という名前の Version 7.3 MAT ファイルに保存します。

A = rand(5);
B = magic(10);
save("myFile.mat","A","B","-v7.3","-nocompression")

または、save の操作のコマンド構文を使用します。

save myFile.mat A B -v7.3 -nocompression

"-nocompression" オプションにより、保存の高速化が促進されます。

2 つの変数を MAT ファイルに保存します。次に、3 番目の変数を同じファイルに追加します。

p = rand(1,10);
q = ones(10);
save("test.mat","p","q")

MAT ファイルの内容を表示します。

whos("-file","test.mat")
  Name       Size            Bytes  Class     Attributes

  p          1x10               80  double              
  q         10x10              800  double              

新しい変数 a を作成し、MAT ファイルに追加します。

a = 50;
save("test.mat","a","-append")

MAT ファイルの内容を表示します。

whos("-file","test.mat")
  Name       Size            Bytes  Class     Attributes

  a          1x1                 8  double              
  p          1x10               80  double              
  q         10x10              800  double              

関数 save は、前述の変数 pq を上書きすることなく、変数 atest.mat に追加します。

メモ: Version 6 MAT ファイルに追加するには、"-v6""-append" の両方を指定します。たとえば、変数 a を Version 6 MAT ファイル test.mat に追加するには、以下を実行します。

save("test.mat","a","-v6","-append")

2 つの変数を MAT ファイルに保存します。次に、3 番目の変数を圧縮なしで同じファイルに追加します。

2 つの変数 AB を作成し、MAT ファイル Version 7.3 に保存します。既定では、関数 save は変数を、myFile.mat に保存する前に圧縮します。

A = rand(5);
B = magic(10);
save("myFile.mat","A","B","-v7.3")

MAT ファイルの内容を表示します。

whos("-file","myFile.mat")
  Name       Size            Bytes  Class     Attributes

  A          5x5               200  double              
  B         10x10              800  double              

新しい変数 C を作成して、圧縮なしで myFile.mat に追加します。

C = 5;
save("myFile.mat","C","-append","-nocompression")

MAT ファイルの内容を表示します。

whos("-file","myFile.mat")
  Name       Size            Bytes  Class     Attributes

  A          5x5               200  double              
  B         10x10              800  double              
  C          1x1                 8  double              

複数の変数を作成し、コマンド構文を使用して myMat.mat という名前のファイルにそれらの変数を保存します。

a = 1;
b = 2;
c = 7;
d = 4;
save myMat.mat a c

変数 c を変更します。

c = 3;

myMat.mat 内に既に存在するワークスペース変数のみを保存します。

existingVars = whos("-file","myMat.mat");
save("myMat.mat",existingVars.name)

入力引数

すべて折りたたむ

ファイルの名前。string スカラーまたは文字ベクトルとして指定します。filename を指定しないと、関数 savematlab.mat というファイルに保存します。

filename に拡張子がなく (つまり、末尾にピリオドと、それに続くテキストがない)、format の値が指定されていない場合、関数 save.matfilename に追加します。filename に絶対パスが含まれない場合、関数 save は現在のフォルダーに保存します。ファイルの書き込み権限をもっていなければなりません。

ワークスペース変数をリモートの場所にある MAT ファイルに保存するには、filename に次の形式の Uniform Resource Locator (URL) を指定します。

scheme_name://path_to_file/my_file.mat

リモートの場所に基づいて、scheme_name には次の表の値のいずれかを指定できます。

リモートの場所scheme_name
Amazon S3™s3
Windows Azure® Blob Storagewasb, wasbs

関数 save でリモートの場所への保存がサポートされるのは、Version 7.3 の MAT ファイルのみです。

オンライン ストレージ サービスにアクセスするための MATLAB の設定の詳細については、リモート データの操作を参照してください。

コマンド形式の save を使用する場合は、入力を一重引用符または二重引用符で囲む必要はありません。ただし、filename にスペースが含まれる場合、引数を一重引用符で囲まなければなりません。たとえば、save 'filename withspace.mat' のようになります。

例: "myFile.mat"

例: "s3://bucketname/path_to_file/my_file.mat"

保存する変数の名前。1 つ以上の string スカラーまたは文字ベクトルとして指定します。コマンド形式の save を使用する場合は、入力を一重引用符で囲む必要はありません。

variables は次のいずれかの形式にすることができます。

入力 variables の形式保存する変数
var1,var2,...,varN一覧表示された変数を保存します。個別の string スカラーまたは文字ベクトルとして指定します。パターンを一致させるには、ワイルドカード "*" を使用します。たとえば、save("filename.mat","A*") または save filename.mat A* は、名前が A で始まる、ワークスペース内のすべての変数を保存します。
"-regexp",expr1,expr2,...,exprN正規表現に一致する名前をもつ変数のみを保存します。string スカラーまたは文字ベクトルとして指定します。たとえば、save("filename.mat","-regexp","^Mon","^Tues") または save filename.mat -regexp ^Mon ^Tues は、ワークスペース内にある名前が Mon または Tues で始まる変数だけを保存します。
"-struct",structName structName で指定されたスカラー構造体のフィールドをファイルの個別変数として保存します。たとえば、save("filename.mat","-struct","S") はスカラー構造体 S のフィールドを保存します。
"-struct",structName,field1,field2,...,fieldN指定されたスカラー構造体の指定されたフィールドをファイルの個別変数として保存します。たとえば、save("filename.mat","-struct","S","a","b") はフィールド S.aS.b を保存します。
"-struct",structName,"-regexp",expr1,expr2,...,exprN正規表現に一致する名前をもつフィールドのみを保存します。string スカラーまたは文字ベクトルとして指定します。

ファイル形式。次の表のいずれかの値として指定します。

fmt の値ファイル形式
"-mat"

バイナリ MAT ファイル形式

"-ascii"

8 桁の精度のテキスト形式

"-ascii","-tabs"

8 桁の精度のタブ区切りテキスト形式

"-ascii","-double"

17 桁の精度のテキスト形式

"-ascii","-double","-tabs"

17 桁の精度のタブ区切りテキスト形式

コマンド形式の save を使用する場合は、入力を一重引用符または二重引用符で囲む必要はありません。たとえば、save myFile.txt -ascii -tabs のようにします。

MAT ファイルの場合、1 台のマシンに保存され、別のマシンで読み込まれるデータは、異なるマシンの浮動小数点書式によって可能な限りの精度と範囲を維持します。

いずれかのテキスト形式を使用して、MATLAB の数値をテキスト ファイルに保存します。この場合、

  • 各変数は 2 次元 double 配列でなければなりません。

  • 出力には、複素数の実数部のみが含まれます。

  • 関数 save は、各変数からのデータを順番にファイルに書き込みます。関数 load を使用してファイルを読み取ることを計画する場合、すべての変数の列数が同じでなければなりません。関数 load は、ファイルから単一変数を作成します。

テキスト形式を指定し、変数が文字配列である場合、関数 save は文字を対応する内部 ASCII コードに変換します。たとえば、'abc' はテキスト ファイルで次のように表示されます。

  9.7000000e+001  9.8000000e+001  9.9000000e+001

リモートの場所に保存する場合、save でサポートされる fmt の指定値は "-mat" のみです。

データ型: string | char

MAT ファイルのバージョン。次の表のいずれかの値として指定します。コマンド形式の save を使用する場合は、入力を一重引用符または二重引用符で囲む必要はありません。

version の値読み込まれる MATLAB のバージョンサポート機能圧縮各変数の最大サイズ
"-v7.3"7.3 (R2006b) 以降

変数の一部の保存、および Version 7 のすべての機能。

あり (既定値)64 ビット コンピューターで 2 GB 以上
"-v7"7.0 (R14) 以降

既定の文字エンコード スキームが異なるシステム間でファイル共有を可能にする Unicode® 文字エンコード、および Version 6 のすべての機能Version 7 では、"-nocompression" オプションを使用して、圧縮せずに変数を保存することができます。

あり (既定値)1 変数あたり 231 バイト
"-v6"5 (R8) 以降

N 次元配列、cell 配列、および構造体配列、長さが 19 文字を超える変数名、および Version 4 のすべての機能。

なし1 変数あたり 231 バイト
"-v4"すべて

2 次元の double 配列、文字配列、およびスパース配列の保存。

なし1 配列あたり 100,000,000 要素、1 変数あたり 231 バイト

データ項目に、指定されたバージョンでサポートされていない機能が必要になる場合、関数 save はこれらの項目を保存せずに、警告を表示します。MATLAB ソフトウェアの現在のバージョンより新しいバージョンを指定することはできません。

メモ

Version 7.3 MAT ファイルで使用される HDF5 ベースの形式には、ファイル内容を記述するためのオーバーヘッド ストレージが必要になります。cell 配列、構造体配列または異種混合のデータ型を格納できるその他のコンテナーの場合、Version 7.3 の MAT ファイルは Version 7 の MAT ファイルよりも大きくなることがあります。

メモ

Version 6 および Version 4 の MAT ファイルでは ASCII 文字エンコードのみがサポートされます。

MAT ファイルの既定のバージョンを表示または設定するには、[ホーム] タブに移動し、[環境] セクションで [基本設定] を選択します。[MATLAB][一般][MAT ファイル] を選択してから、[MAT ファイルの保存形式] オプションを選択します。

データ型: string | char

制限

  • 2 つの別個の MATLAB セッションからのデータを同じファイルに同時に保存しようとすると、ファイルが破損する可能性があります。

ヒント

  • より柔軟に ASCII ファイルを作成するには、fprintf を使用します。

  • 関数 save でグラフィックス オブジェクトを保存すると、オブジェクトの再生成に必要なすべての情報がファイルに含まれるため、大きなファイルが作成される可能性があります。

  • 関数 save での Figure の保存は推奨されません。代わりに関数 savefig を使用します。R2014b 以降で save を使用して Figure を保存すると、それより前のバージョンの MATLAB で MAT ファイルにアクセスできなくなります。save を使用して Figure を保存すると、関数から警告メッセージが表示されます。save を使用する前に、すべての Figure を削除してください。Figure はワークスペース内に直接入れることはできませんが、たとえば構造体やコールバック関数のワークスペースに保存することはできることに注意してください。

  • 引数 filename は、現在のプラットフォームで有効な任意の名前にすることができます。ただし、関数 load で任意のプラットフォーム上のファイルに確実にアクセスできるようにするために、filename では \ (バックスラッシュ)、/ (スラッシュ)、: (コロン)、* (アスタリスク)、? (疑問符)、" (二重引用符)、< (小なり記号)、> (大なり記号)、| (パイプ)、' (アポストロフィ)、または ; (セミコロン) の各文字を使用しないでください。

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する