创建细胞结构 - MATLAB

Creation of a Structure of Cells - MATLAB

我有一组数据,从随附的快照中可以看出。可以看出,这是一组重复的数据。我正在尝试编写代码,以便该代码创建一个主结构 "RoadXML",并将单元格中的所有后续文本作为结构元素。

例如:“RoadXML.Network.SubNetworks.SubNetwork.RoadNetwork.Grounds.Ground”应该生成一个结构 RoadXML,它有一个结构元素 "Networks",它又是一个结构。同样,“网络”应该有“子网”作为一个元素,它是一个结构等等......此外,其余数据应该将其自身附加到其各自字段下的主结构。因此,最后只有一个结构会保留 excel sheet 中的所有数据作为其结构元素。

现在的问题是,当 excel sheet 中存在重复的元素集时,如屏幕截图所示,仅保留最后一组数据,从而覆盖了已经存储。也就是说(参考附图)第30行到第34行的数据覆盖了所有已经存储的第15行到第29行的数据。

更新

为了更清楚地说明我的问题,在从第 15 行到第 19 行的迭代过程中,我的代码将第一列的数据存储为结构,其格式与快照中显示的格式完全相同。即 RoadXML 是一个具有 Network 的结构,它又是一个具有 SubNetworks 的结构,它又是具有 SubNetwork 等的结构,直到最后一个参数。最后,我们将 Ground 作为 Grounds.

中的结构

由于A15和A20是相同的数据,一旦遇到第20行,代码应该将Ground之前的结构转换为单元格,在单元格中创建一个1x1结构其中有 ''Attributes''(structure) 作为字段。创建“'Attribute'”后,“'granulosity'”、“'grip'”; ''name'' 和 ''type'' 应附加到 ''Attributes'' 以及它们在 B 列中的相应值。

对于 excel 文件中的每一行:

  1. 检查新字段路径的一部分是否已经存在。 例如,在创建第 2 行 "RoadXML.Network.SubNetworks.SubNetwork.RoadNetwork.Grounds.Ground.Attributes.granulosity" 之后。 在第 3 行,到 "Attributes" 的路径已经存在。仅缺少字段 "grip"。

阅读 here 关于检查某个字段是否存在于嵌套结构中的内容。

  1. 如果部分路径存在,开始在现有路径结束处添加字段。

  2. 如果包含最后一个字段的完整路径存在,请选择您希望它执行的操作。覆盖?使该字段成为投票者?

示例运行:

第 15 行:地面不存在,因此创建: RoadXML....Ground{1,1}.Text="" 第 16-19 行:地面存在,添加属性 RoadXML....Ground{1,1}.Attributes.X=Y 第 20 行:地面包含 1 个单元格,因此添加一个新单元格: RoadXML....Ground{1,2}.Text=""

等等..