Matlab函数将结构转换为结构数组

Posted

技术标签:

【中文标题】Matlab函数将结构转换为结构数组【英文标题】:Matlab function to convert a struct to a struct array 【发布时间】:2021-04-18 23:30:36 【问题描述】:

我有一个格式为:

my_struct
   |
   + element_1
   |     |
   |     + value_1: "some string"
   |     + value_2: 25
   |
   + element_2
   |     |
   |     + value_1: "some other string"
   |     + value_2: 11
   ...

并且找不到一种简单的方法来创建一个结构数组,例如my_struct(1).value_1 == "some string"。同样,my_struct(2).value_2 == 11。字段名称“element_1”和“element_2”是不必要的。

【问题讨论】:

您尝试过简单的循环吗? out(ii)=my_struct.(['element_',num2str(ii)]); 【参考方案1】:

这是一种方法(见struct2cellcell2mat):

result = cell2mat(struct2cell(my_struct).');

示例

my_struct.element_1.value1 = "some string"; 
my_struct.element_1.value2 = 25;
my_struct.element_2.value1 = "some other string"; 
my_struct.element_2.value2 = 11;
result = cell2mat(struct2cell(my_struct).');

给予

>> result
result = 
  1×2 struct array with fields:
    value1
    value2
>> result(1)
ans = 
  struct with fields:

    value1: "some string"
    value2: 25
>> result(2)
ans = 
  struct with fields:

    value1: "some other string"
    value2: 11

【讨论】:

以上是关于Matlab函数将结构转换为结构数组的主要内容,如果未能解决你的问题,请参考以下文章

matlab中怎么定义结构体

matlab中怎么定义结构体

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

如何将结构从 Matlab 代码转换为 C 代码(使用 Matlab 编译器)

matlab中如何看函数结构体中的数据

在哪里定义类型转换到 MATLAB OOP 中的结构?