0

matlab で load 関数を使用すると、通常は次のようなことになります。

temp = load('filename.mat');
realData = temp.VarName;
clear temp

また

realData = load('filename.mat');
realData = realData.VarName;

特にメモリ使用量の点で、この方法のいずれかが他の方法よりも優れていますか? または、この一時的な構造体を回避するためのより直接的なアプローチはありますか?

Thx トーマス

4

3 に答える 3

6

matfile から特定の変数だけが必要であることがわかっている場合は、次のことができます。

realData = load('filename.mat', 'VarName');

load コマンドの詳細については、 Matlab のドキュメントを参照してください。

于 2010-09-07T09:09:50.123 に答える
0

「importdata」コマンドを使用してみてください。

   szFilePath = 'c:\dirName\myData.mat';
   myData = importdata( szFilePath );

これにより、 load が出力引数なしで使用された場合にスコープに変数が暗黙的に配置されることや、不要な assign-from-struct コマンドが回避されます。

Oli が指摘したように、レイジー コピー (コピー オン ライト) 動作は、メモリに関する考慮事項が無意味であることを意味します。

メンテナンス/読みやすさの観点から、 importdata にはいくつかの利点があります。

  1. ワークスペースで作成された変数に明示的に名前を付けると、関数の動作がより明確になります。
  2. 構造体からの割り当て操作の必要性をなくすことで、気を散らす無関係な操作をソース ファイルから削除できます。

MATLAB R2010a を使用しています。

于 2010-09-13T12:13:10.743 に答える
0

そうですね、単に を実行するload('filename.mat');と、すべての変数が現在のスコープに収まります。

ただし、どちらの方法にも意味のあるメモリコストがあるとは思えません。Matlab はコピーオンライトを使用します。

于 2010-09-07T09:02:15.047 に答える