使用保存结构包含数据模型运行期间一次又一次

10视图(30天)
我有一个结构,它存储不同流体的热力学性质。strucutre对应不同的字段属性的单个值,其中一些是数字数组。我用这个结构建模的过程中单位来计算流体性质。所以,我开始运行模型之前,我第一次在工作区中加载这个结构,然后创造一个全局变量,那么所有的函数可以访问这个变量。我已经尝试另一种方式是加载这个结构在一个类,并将它存储在一个类属性。然后我可以将对象传递给不同的功能。
在这两个选项,我必须先加载结构在工作区中或在一个类中。我不确定这是正确的方式。我不喜欢全局变量的方法。我认为加载一个类里面可能不是有效的为每一次的新实例对象传递给一个函数会加载结构。也许我缺少一些非常明显的。
指针对一些更好的方法这样做,我们将不胜感激。
1评论
史蒂文·H
史蒂文·H 2023年5月15日在41
编辑:史蒂文·H 2023年5月15日在41
类的一个子类 处理 类。当你将类对象传递给一个函数,你没有复制的对象,但你只是传递的引用对象。
这并不总是清楚每个人可以肯定的;想象我们有一个 处理 子类调用 数据 哪有一个属性V 价值 。我创建一个实例 data =数据; 和复制的参考 dataCopy =数据; 。现在,如果我集 数据。值= 1; ,你会发现 dataCopy.Value 也更新了。
更多信息,请参阅 处理

登录置评。

答案(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会话,和您的建模功能可以访问它,而不需要通过它作为输入参数。

类别

找到更多的在数据导入与分析帮助中心文件交换

标签

下载188bet金宝搏


释放

R2019a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!