Matlab:加载文件

时间:2010-09-07 08:58:15

标签: matlab memory matlab-load

如果我通过matlab使用load函数,我通常最终会做这样的事情:

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

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

这种方法是否优于其他方法,特别是在内存使用方面?或者是否有更直接的方法来避免这种临时结构?

THX 托马斯

3 个答案:

答案 0 :(得分:6)

如果你知道你需要matfile中的特定变量,你可以

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

有关load命令的详细信息,请参阅Matlab documentation

答案 1 :(得分:0)

好吧,如果你只做load('filename.mat');,所有变量都会在当前范围内结束。

我怀疑你的任何一种方法都有任何有意义的内存成本。 Matlab使用copy-on-write。

答案 2 :(得分:0)

您可能想尝试使用“importdata”命令:

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

这避免了在没有输出参数的情况下使用load时将变量隐式放置到作用域中,以及不必要的assign-from-struct命令。

正如Oli所说,懒惰副本(写时复制)行为意味着内存考虑因素没有实际意义。

从维护/可读性的角度来看,importdata有几个优点:

  1. 明确命名在工作空间中创建的变量,文档中的功能更清晰。
  2. 删除从struct-for-struct操作的必要性可以从源文件中删除分散注意力和不相关的操作。
  3. 我正在使用MATLAB R2010a。