【发布时间】:2020-12-09 18:08:37
【问题描述】:
在 MATLAB 中,我从文件中加载自定义类对象。它包含对其他文件的引用,这些文件应该位于目标文件旁边的驱动器上。有没有办法在初始化期间获取加载对象的文件的位置?
例子:
- 我的目标文件是 C:\user\myObjectFile.mat
- 我从脚本加载它:load('C:\user\myObjectFile.mat')
- 我希望对象能够知道它是从指定文件加载的
谢谢!
【问题讨论】:
在 MATLAB 中,我从文件中加载自定义类对象。它包含对其他文件的引用,这些文件应该位于目标文件旁边的驱动器上。有没有办法在初始化期间获取加载对象的文件的位置?
例子:
谢谢!
【问题讨论】:
您可以创建自定义加载函数,即
function obj = loadMyObj( filepath )
data = load( filepath );
obj = data.obj; % load returns the object "obj" in a struct
obj.filepath = filepath;
end
然后使用loadMyObj 而不是load。
当然,这要求您的对象具有filepath 属性,但如果您希望它保留加载它的位置,这是给定的。
另一种选择可能是将这种行为放入对象的类构造函数中,然后调用类似
obj = myClass( 'C:\some\path\file.mat' );
构造函数在哪里加载文件,分配存储在文件中的属性,并存储路径。
【讨论】:
loadobj,我只是调用一个自定义函数loadMyObj,它调用正常负载(您可以将其更改为load( filepath, '-mat')),然后分配对象的文件路径属性。