使用保存结构包含数据模型运行期间一次又一次
10视图(30天)
显示旧的评论
我有一个结构,它存储不同流体的热力学性质。strucutre对应不同的字段属性的单个值,其中一些是数字数组。我用这个结构建模的过程中单位来计算流体性质。所以,我开始运行模型之前,我第一次在工作区中加载这个结构,然后创造一个全局变量,那么所有的函数可以访问这个变量。我已经尝试另一种方式是加载这个结构在一个类,并将它存储在一个类属性。然后我可以将对象传递给不同的功能。
在这两个选项,我必须先加载结构在工作区中或在一个类中。我不确定这是正确的方式。我不喜欢全局变量的方法。我认为加载一个类里面可能不是有效的为每一次的新实例对象传递给一个函数会加载结构。也许我缺少一些非常明显的。
指针对一些更好的方法这样做,我们将不胜感激。
答案(1)
苏利耶
约14小时前
你好,
在MATLAB中,您可以考虑创建一个持久变量来存储你的热力学性质结构。持久变量是一个变量,在内存中保留其价值在多个函数调用MATLAB在同一个会话,而不需要作为输入参数传递给函数。
这是如何实现的一个例子:
函数属性= get_properties ()
持续的prop_struct;
如果isempty (prop_struct)
%加载热力学性质结构
prop_struct =负载(“my_properties.mat”);%替换为您自己的文件名称
结束
属性= prop_struct;
结束
在这个例子中,
get_properties
函数检查是否持久变量
prop_struct
已经初始化,加载与热力学性质结构。如果它没有,它从文件加载结构(你可以替代它,用自己的方法加载结构)。然后返回的函数结构作为输出参数。
通过使用持久性变量,可以避免使用全局变量,而你只需要加载结构一次/ MATLAB会话。每一次
get_properties
第一次函数被调用后,它只是从持久检索已经加载结构变量。
然后可以调用
get_properties
功能建模功能得到热力学性质结构:
函数my_model_func (input_args)
属性= get_properties ();
%使用属性来执行计算
结束
通过这种方式,您只加载热力学性质结构一次/ MATLAB会话,和您的建模功能可以访问它,而不需要通过它作为输入参数。