【问题标题】:Loading MATLAB object from a file从文件加载 MATLAB 对象
【发布时间】:2020-12-09 18:08:37
【问题描述】:

在 MATLAB 中,我从文件中加载自定义类对象。它包含对其他文件的引用,这些文件应该位于目标文件旁边的驱动器上。有没有办法在初始化期间获取加载对象的文件的位置?

例子:

  • 我的目标文件是 C:\user\myObjectFile.mat
  • 我从脚本加载它:load('C:\user\myObjectFile.mat')
  • 我希望对象能够知道它是从指定文件加载的

谢谢!

【问题讨论】:

    标签: matlab oop object


    【解决方案1】:

    您可以创建自定义加载函数,即

    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,但我无法将有关文件(其完整路径)的信息传播到对象级别。我有一个 GUI,我在其中选择存储为我想要操作的文件的对象,在 GUI 中我使用 load('C:\user\myObjectFile.extension','-mat') - 带有自定义文件扩展名。我无法将文件的完整路径传播到对象级别 - 我以为我可以使用 loadobj 来自定义对象重新创建过程,但我无法让它工作。我知道我在 GUI 中确实有可用的信息,但我希望对象也存储它。
    • @Vlad 注意我没有使用loadobj,我只是调用一个自定义函数loadMyObj,它调用正常负载(您可以将其更改为load( filepath, '-mat')),然后分配对象的文件路径属性。
    • 很晚才回来,但这确实解决了我的问题。非常感谢!
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 2021-02-04
    • 2010-10-16
    • 2012-06-15
    相关资源
    最近更新 更多