在 matlab 中加载或导入供 class 实例使用的地图

Load or import map for use by class instance in matlab

我有一个 containers.Map file/variable,我已通过 Matlab 命令 Window(或其他一些脚本)定义并将其保存到目录中。我希望能够让我的 class 的实例能够使用该映射,而不必在 class 定义中定义它,或者使用每次函数定义它的其他函数叫做。所以我有:

myMap.mat

并且在单独的 myClass.m 文件中(在同一目录中)我希望能够像这样调用 myMap:

classdef myClass < handle
    properties
        number
    end
    methods
        function obj = myClass(input)
            obj.number = myMap(input);
        end
    end
end

获取 myMap "into the class" 以便实例可以使用它的最有效方法是什么? matfile 一直在给我一些关于不支持部分加载的格式的警告,我无法想象 load 的效率非常高。任何建议表示赞赏。

您可以使用多种方法,但老实说,我认为最简单的方法是在 class 构造函数中使用 persistent 对象,如下所示:

classdef myClass < handle
    properties
        number
    end

    methods
        function obj = myClass(input)
            persistent pmap;

            if (isempty(pmap))
                load('map.mat','map');
                pmap = map;
            end

            obj.number = pmap(input);
        end
    end
end