带类的matlab - 将结构保存在空的双数组中

Posted

技术标签:

【中文标题】带类的matlab - 将结构保存在空的双数组中【英文标题】:matlab with classes - save struct in empty double array 【发布时间】:2020-04-27 05:28:22 【问题描述】:

我尝试在 matlab 中创建一个类

它有一个属性children

properties
    children

如果这个变量被写入 - 它应该是一个结构数组 它失败了

    function obj = Init(obj, valueList)
        %INIT Initialise with vector of new parameter sets
        newSet = obj.ParamSet;
        newSet.values = valueList;
        obj.children(end + 1) = newSet; % <<< error

错误是:

无法从 struct 转换为 double。

这是使用的结构

methods(Static)
    function paramset = ParamSet()
        newset.('values') = [];
        newset.('fitness') = 0;
        paramset = newset;
    end
end

【问题讨论】:

您不能将结构存储在双精度数组中。您可以将它们存储在单元格中,或者创建一个结构体。 当您说“结构数组”时,您是指具有一致字段的 N*1 结构,还是任意结构数组?前者意味着obj.children 将是一个结构数组,后者意味着您需要一个单元格数组...请提供一个minimal reproducible example,您可以在其中创建children 应该是什么的示例——这可能不需要整个类定义 我在不知道ParamSet 的类的情况下发布了答案。您能否更新您的帖子,使用obj.ParamSet 的类? 【参考方案1】:

简单的解决方案是如果为空则赋值:

if isempty(obj.children)
   obj.children = newSet;
else
   obj.children(end + 1) = newSet;
end

【讨论】:

以上是关于带类的matlab - 将结构保存在空的双数组中的主要内容,如果未能解决你的问题,请参考以下文章

matlab 怎么将374个结构体数据保存在一个数组中?用哪个函数

如何在 Matlab 中生成类的实例并将它们保存在数组中?

带类的元素内的最后一个带类的元素的 CSS 选择器

如何将网格线保留在空的 TableView Javafx 中

JPA:在空的多方面将 Fetch 结果加入 NULL

为啥在空的 try 块中使用 try finally ?