ドキュメンテーション センター

  • 評価版
  • 製品アップデート

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

トラブルシューティング: 配列が拡張するとファイルが予期しないサイズに増大する

この例では、配列に初期値を割り当てることにより、ファイルに 100 万個の倍精度値を書き込むときに配列の拡張を防止する方法を説明します。

書き込み用の matlab.io.MatFile オブジェクトを作成します。

fileName = 'matFileOfDoubles.mat';
matObj = matfile(fileName);
matObj.Properties.Writable = true;

書き込む値のパラメーターを定義します。この例では、一度に 5 万個ずつ、100 万個の値を書き込みます。値の平均値は 123.4、標準偏差は 56.7 です。

size = 1000000;
chunk = 50000; 
mean = 123.4;
std = 56.7;

配列にデータを格納する前に、配列の最後の要素に初期値 0 を割り当てます。

matObj.data(1,size) = 0;

ファイルのサイズを表示します。

  • Windows® システムでは dir を使用します。

    system('dir matFileOfDoubles.mat');
  • UNIX® システムでは ls -ls を使用します。

    system('ls -ls matFileOfDoubles.mat');

matFileOfDoubles.mat は 5000 バイト未満です。配列の最後の要素に初期値を割り当てると、大規模ファイルは作成されません。

一度にチャンクを 1 つずつ、配列にデータを書き込みます。

nout = 0;
while(nout < size)
    fprintf('Writing %d of %d\n',nout,size);
    chunkSize = min(chunk,size-nout);
    data = mean + std * randn(1,chunkSize);
    matObj.data(1,(nout+1):(nout+chunkSize)) = data;
    nout = nout + chunkSize;
end

ファイルのサイズを表示します。

system('dir matFileOfDoubles.mat');

配列にデータが格納されたので、ファイル サイズが大きくなりました。

この情報は役に立ちましたか?