如果我通过matlab使用load函数,我通常最终会做这样的事情:
temp = load('filename.mat');
realData = temp.VarName;
clear temp
或
realData = load('filename.mat');
realData = realData.VarName;
这种方法是否优于其他方法,特别是在内存使用方面?或者是否有更直接的方法来避免这种临时结构?
THX 托马斯
答案 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有几个优点:
我正在使用MATLAB R2010a。