如果我使用 matlab 的加载函数,我通常最终会做这样的事情:
temp = load('filename.mat');
realData = temp.VarName;
clear temp
或者
realData = load('filename.mat');
realData = realData.VarName;
这些方法中是否有任何一种优于其他方法,尤其是在内存使用方面?还是有更直接的方法来避免这种临时结构?
谢谢托马斯
如果我使用 matlab 的加载函数,我通常最终会做这样的事情:
temp = load('filename.mat');
realData = temp.VarName;
clear temp
或者
realData = load('filename.mat');
realData = realData.VarName;
这些方法中是否有任何一种优于其他方法,尤其是在内存使用方面?还是有更直接的方法来避免这种临时结构?
谢谢托马斯
如果您知道您只需要 matfile 中的特定变量,您可以这样做
realData = load('filename.mat', 'VarName');
有关加载命令的更多信息,请参阅Matlab 文档。
好吧,如果你只是这样做load('filename.mat');
,所有的变量都会在当前范围内结束。
不过,我怀疑您的任何一种方法都有任何有意义的内存成本。Matlab 使用写时复制。
您可能想尝试使用“importdata”命令:
szFilePath = 'c:\dirName\myData.mat';
myData = importdata( szFilePath );
这避免了在没有输出参数的情况下使用 load 时将变量隐式放置到作用域中,以及不必要的 assignment-from-struct 命令。
正如 Oli 所指出的,惰性复制(写时复制)行为意味着内存考虑没有实际意义。
从维护/可读性的角度来看,importdata 有几个优点:
我正在使用 MATLAB R2010a。