Main Content

writeall

ファイルへのデータストアの書き込み

R2020a 以降

説明

writeall(ds,outputLocation) は、入力データストア ds のデータを outputLocation で指定された場所の出力ファイルに書き込みます。出力ファイルの数は、データストアが参照するファイルの数と同じです。

writeall(ds,outputLocation,Name,Value) は、1 つ以上の名前と値のペアの引数で指定された追加のオプションを使用してデータを書き込みます。たとえば、'OutputFormat''csv' などのファイル拡張子を指定すると、writeall で作成されるファイルの種類を指定できます。

すべて折りたたむ

データストアをディスクに書き込み、書き込んだファイルの新しいデータストアを作成します。このプロセスは、作業内容を保存したり、データストアを同僚と共有したりするために役立ちます。

airlinesmall.csv データ セットのデータストアを作成し、'NA' 値を欠損データとして扱います。変数 YearMonth および Carrier のみを選択します。

ds = datastore('airlinesmall.csv');
ds.TreatAsMissing = 'NA';
ds.SelectedVariableNames = {'Month','Year','UniqueCarrier'};

データストアをプレビューします。

preview(ds)
ans=8×3 table
    Month    Year    UniqueCarrier
    _____    ____    _____________

     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    
     10      1987       {'PS'}    

このデータストアを C:\ ディスクの ExampleData という名前の新規フォルダーに保存します (特に Windows® コンピューターを使用していない場合は、異なる書き込み先を指定することが可能)。'FolderLayout''flatten' として指定して、サブフォルダーを作成せずにデータストア ファイルをターゲット フォルダーに直接配置します。

location = 'C:\ExampleData';
writeall(ds,location,'Folderlayout','flatten')

作業ディレクトリから ds をクリアします。ディスクからデータストアを復元するには、新しいデータストアを作成し、データが書き込まれていた同じフォルダーを参照します。

clear ds
ds2 = datastore(location);

データストアをファイルに書き込む際に、'FolderLayout' パラメーターを設定して、フォルダー構造を複製するかフラットにするかを選択できます。入力場所からイメージ データストアを作成し、そのデータストアをファイルに書き出します。次に、フォルダー レイアウトを複製してファイルを出力場所に書き込みます。最後に、ファイルを出力場所にフラット リストとして書き込みます。

自動車と電車のイメージがいくつか格納されている場所 'C:\input\' からイメージ データストアを作成します。

imds = imageDatastore('C:\input\','IncludeSubfolders',true);

このフォルダー構造は一例です。ご使用のマシンでイメージ ファイルが格納されているフォルダー構造に対してこの機能を試すことができます。

入力データセットへの完全修飾パスを含む入力データストアの Folders プロパティを確認します。

imds.Folders
ans =

  1×1 cell array

    {'C:\input\'}

データストアを出力場所 'C:\output\' に書き込みます。'FolderLayout' パラメーターの既定値は 'duplicate' です。したがって、関数 writeall は、入力データストアの Folders プロパティに含まれるすべてのフォルダーを複製し、ファイルを対応する出力フォルダーに書き込みます。

writeall(imds,'C:\output\');

次に、'FolderLayout''flatten' に設定して、データストアのファイルを出力場所 'C:\output\' にフラット リストとして書き込みます。この場合、関数 writeall は入力フォルダー レイアウトを保持せず、代わりにすべてのファイルをフラットな出力場所に書き込みます。

writeall(imds,'C:\output\','FolderLayout','flatten');

詳細については、FolderLayout を参照してください。

FilenamePrefix パラメーターと FilenameSuffix パラメーターを使用して、出力ファイル名の先頭または末尾にテキストを追加できます。入力場所からイメージ データストアを作成します。データストアをファイルに書き出し、ファイル名の先頭にテキストを追加します。次に、データストアを再度書き込み、ファイル名の末尾にテキストを追加します。

自動車と電車のイメージがいくつか格納されている場所 'C:\input\' からイメージ データストアを作成します。

imds = imageDatastore('C:\input\','IncludeSubfolders',true);

このフォルダー構造は一例です。ご使用のマシンでイメージ ファイルが格納されているフォルダー構造に対してこの機能を試すことができます。

次に、ファイルを出力場所に書き込みます。FilenamePrefix の値を 'png_' として指定して、そのテキストを各出力ファイル名の先頭に追加します。

writeall(imds,'C:\output\','FilenamePrefix','png_');

ファイルを別の出力場所に書き込みます。FilenameSuffix の値を '_image' として指定して、そのテキストを各出力ファイル名の末尾に追加します。

writeall(imds,'C:\output2\','FilenameSuffix','_image');

入力引数

すべて折りたたむ

入力データストア。次のデータストアを writeall の入力として使用できます。

'OutputFormat' または 'WriteFcn' の名前と値のペアを指定する場合は、writeall で次のデータストアも使用できます。

データを書き込むためのフォルダーの場所。文字ベクトルまたは string スカラーとして指定します。outputLocation には、絶対パスまたは相対パスを指定できます。

例: outputLocation = '../../dir/data'

例: outputLocation = "C:\Users\MyName\Desktop"

データ型: char | string

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: writeall(ds,outputLocation,'FolderLayout','flatten')

一般オプション

すべて折りたたむ

出力ファイル形式。'OutputFormat' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

入力データストア ds のタイプに基づいて、出力ファイルとして次のいずれかの値を選択します。以下に示す表形式データストアには、任意の表形式の出力形式を選択できます。

入力データストア

出力形式

TabulartextDatastore, SpreadsheetDatastore, ParquetDatastore'txt''csv''xlsx''xls''parquet''parq''dat'、または 'asc'
ImageDatastore'png''jpg''jpeg''tif' または 'tiff'
AudioDatastore'wav''ogg''flac''mp4' または 'm4a'
FileDatastore, TransformedDatastore, CombinedDatastore, SequentialDatastoreすべての出力形式がサポートされます。

データ型: char | string

出力フォルダー内のファイルのレイアウト。'FolderLayout' と、'duplicate' または 'flatten' のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'duplicate' — 関数 writeall は、入力データの場所にあるフォルダー構造を指定された出力場所に複製します。入力データの場所には、入力データストアの Folders プロパティが含まれます。

  • 'flatten' — 関数 writeall は、入力のすべてのファイルを指定された出力フォルダーにサブフォルダーなしで書き込みます。

データ型: char | string

ファイル名の接頭辞。'FilenamePrefix' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

関数 writeall は、指定された接頭辞を出力ファイル名に追加します。たとえば、次のコードは、データストアからのすべての出力ファイル名の先頭に今日の日付を追加します。

prefixText = string(datetime('today'))
writeall(imds,'C:\myFolder','FilenamePrefix',prefixText);

データ型: char | string

ファイル名の接尾辞。'FilenameSuffix' と文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

関数 writeall は、指定された接尾辞を出力ファイル名に追加します。たとえば、次のコードは、データストアからのすべての出力ファイル名の末尾に説明テキスト 'jpeg_70per' を追加します。

writeall(imds,'C:\myFolder','FilenameSuffix','jpeg_70per');

データ型: char | string

並列書き込みのインジケーター。'UseParallel' と、false または true (0 または 1) のいずれかで構成されるコンマ区切りのペアとして指定します。

既定では、writeall は書き込みを逐次実行します。UseParalleltrue に設定すると、writeall は書き込み操作をグループに分け、次の条件が満たされる場合に各グループを並列実行します。

  • Parallel Computing Toolbox™ がインストールされている。

  • 開いている並列プールが存在するか、[並列基本設定] でプールの自動作成が有効にされている。

そうでない場合、writeallUseParallel の設定値に関係なく書き込みを逐次的に実行します。

writeall は、ローカル スレッドによる並列での書き込みをサポートしません。

メモ

並列書き込みは、CombinedDatastore オブジェクト、または CombinedDatastoretransform を適用して得られたデータストアではサポートされていません。

データ型: logical

カスタム書き込み関数。'WriteFcn' と関数ハンドルで構成されるコンマ区切りのペアとして指定します。指定した関数は出力ファイルの作成を受け持ちます。

writeall が出力形式を直接にサポートしていない場合でも、名前と値のペアの引数 'WriteFcn' を使用して、さまざまな形式でデータを書き込むことができます。

関数シグネチャ

カスタム書き込み関数は、少なくとも datawriteInfooutputFormat の 3 つの入力引数を受け入れなければなりません。

function myWriteFcn(data,writeInfo,outputFormat)
また、この関数は、最初の 3 つの必須入力の後に、名前と値のペアなどの追加入力を受け入れることもできます。

  • data には、データストアに対して操作を行う read メソッドの出力が含まれている。

  • writeInfo は、次の表にリストされているフィールドをもつ matlab.io.datastore.WriteInfo 型のオブジェクト。

    フィールド説明
    ReadInforead メソッドの 2 番目の出力struct
    SuggestedOutputName場所と命名の要件を満たす、完全修飾の、グローバルに一意なファイル名string
    Locationデータストアの書き込みに渡される位置引数string
  • outputFormat は、"txt""csv" などの書き込み先の出力形式。

関数の例

データストアの Parquet ファイルを書き込む書き込み関数は、次のとおりです。

function myParquetWriteFcn(data, writeInfo, outputFormat)
if strcmp(outputFormat,"parquet")
  parquetwrite(writeInfo.SuggestedOutputName,data)
end
end
myParquetWriteFcn をデータストア ds 用の書き込み関数として呼び出すには、以下のコマンドを使用します。
ds = parquetDatastore(location);
outputLocation = 'C:/tmp/MyData';
writeall(ds,outputLocation,'WriteFcn',@myParquetWriteFcn);

データ型: function_handle

jpeg または jpg 出力のオプション

すべて折りたたむ

JPEG 圧縮ファイルの品質。'Quality' と [0,100] の範囲内のスカラーで構成されるコンマ区切りのペアとして指定します。0 は低品質で高圧縮、100 は高品質で低圧縮です。

例: 'Quality',25

wav または flac 出力のオプション

すべて折りたたむ

サンプルごとの出力ビット数。'BitsPerSample'8162432 または 64 で構成されるコンマ区切りのペアとして指定します。

FLAC ファイルの場合は、サンプルあたり 816 または 24 ビットのみがサポートされます。

例: 'BitsPerSample',32

mp4 または m4a 出力のオプション

すべて折りたたむ

圧縮オーディオ ファイルで使用される 1 秒あたりのキロビット数 (kbit/s)。'BitRate'6496128160192256 または 320 で構成されるコンマ区切りのペアとして指定します。Windows® 7 以降で有効な値は、96128160、および 192 のみです。

一般に、BitRate の値が大きいほど、圧縮品質も高くなります。

例: 'BitRate',96

txt または csv 出力のオプション

すべて折りたたむ

変数名を列見出しとして書き込むためのインジケーター。'WriteVariableNames' と、true または false のいずれかで構成されるコンマ区切りのペアとして指定します。

インジケーター

動作

true

書き込み関数は、変数名を出力の列見出しとして含めます。これは既定の動作です。

false

書き込み関数は出力に変数名を含めません。

フィールドの区切り記号。'Delimiter' と、次の指定子のいずれかを含む文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。

指定子

フィールドの区切り記号

','

'comma'

コンマ。これは既定の動作です。

' '

'space'

スペース

'\t'

'tab'

タブ

';'

'semi'

セミコロン

'|'

'bar'

縦棒

'Delimiter' 名前と値のペアは区切り付きテキスト ファイルに対してのみ使用できます。

例: 'Delimiter','space'

データ型: char | string

ファイルに関連付けられた文字エンコード スキーム。'Encoding''system' で構成されるコンマ区切りのペア、または次の表に示す値のいずれかのような標準の文字エンコード スキーム名として指定します。エンコードを指定しない場合、またはエンコードを 'system' として指定した場合は、書き込み関数はシステムの既定のエンコードを使用してファイルを書き込みます。

"Big5"

"ISO-8859-1"

"windows-874"

"Big5-HKSCS"

"ISO-8859-2"

"windows-949"

"CP949"

"ISO-8859-3"

"windows-1250"

"EUC-KR"

"ISO-8859-4"

"windows-1251"

"EUC-JP"

"ISO-8859-5"

"windows-1252"

"EUC-TW"

"ISO-8859-6"

"windows-1253"

"GB18030"

"ISO-8859-7"

"windows-1254"

"GB2312"

"ISO-8859-8"

"windows-1255"

"GBK"

"ISO-8859-9"

"windows-1256"

"IBM866"

"ISO-8859-11"

"windows-1257"

"KOI8-R"

"ISO-8859-13"

"windows-1258"

"KOI8-U"

"ISO-8859-15"

"US-ASCII"

 

"Macintosh"

"UTF-8"

 

"Shift_JIS"

 

例: 'UTF-8'

データ型: char | string

引用符付きテキスト書き込みのインジケーター。"minimal""all"、または "none" として指定します。

  • QuoteStrings"minimal" の場合、この関数は区切り記号、行末、または二重引用符が含まれるすべての変数を二重引用符で囲みます。

  • QuoteStrings"all" の場合、この関数はすべてのテキスト変数、categorical 変数、datetime 変数、duration 変数を二重引用符で囲みます。

  • QuoteStrings"none" の場合、この関数は変数を二重引用符で囲みません。

名前と値の引数 QuoteStrings は、区切り形式のテキスト ファイルでのみ使用できます。

xls または xlsx 出力のオプション

すべて折りたたむ

書き込み先のワークシート。'Sheet' と、ワークシート名またはワークシート インデックスを示す正の整数を含む文字ベクトルまたは string スカラーで構成されるコンマ区切りのペアとして指定します。ワークシート名にコロン (:) を含めることはできません。スプレッドシート ファイルのシートの名前を調べるには、sheets = sheetnames(filename) を使用します。詳細については、sheetnames を参照してください。

書き込み先のワークシートを、名前またはインデックスで指定します。

  • 名前 — 指定したシート名がファイルに存在しない場合、書き込み関数がワークシート コレクションの最後に新しいシートを追加します。

  • インデックス — 指定したシート インデックスがワークシート数より大きい場合、書き込み関数が、ワークブック内のワークシートの数がシート インデックスと等しくなるまで空のシートを追加します。書き込み関数は新しいワークシートが追加されたことを示す警告も生成します。

'Sheet' 名前と値のペアはスプレッドシート ファイルでのみ使用できます。

例: 'Sheet',2

例: 'Sheet', 'MySheetName'

データ型: char | string | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

拡張機能

バージョン履歴

R2020a で導入