如何在MATLAB中声明具有不同数据类型的持续变量



是否可以在使用任意数据类型的MATLAB函数中创建持久变量?例如,我想在MATLAB函数中创建一个持久的containers.Map变量。我怎样才能做到这一点?

使用persistent关键字定义为持续定义的所有变量都将初始化为double数据类型的空数组。您可以通过检查使用isempty是否为空并执行初始化,将它们重新定位为所需的任何数据类型。您还可以检查以确保它是double,以防万一您有空的containers.Map对象不想强制重新定位。

function persist(key, value)
    persistent container
    if isa(container, 'double') && isempty(container)
        container = containers.Map();
    end
    container(key) = value;
end

MATLAB类属性可以用于此属性,因为它们可以仅限于特定的数据类型。例如:

classdef foo
    properties
        prop@char scalar = 'A'  % will only accept char inputs, not numeric 
    end
end

然后,如果提供的值是不正确的类型,则试图更新this.prop的每种方法都会失败。如果更新成功,您也可以更新persistent变量。

此功能已正式合并到R2017A中,但已有一段时间的无证件方式。

要进一步阅读此博客文章。

相关内容

  • 没有找到相关文章

最新更新