如何将单元格数组分配给嵌套结构中的字段?

How to assign cell arrays to field in nested structure?

假设我有一个要分配给嵌套字段的元胞数组。

myArray = {{ 1     2     3     4     5}; 
           { 7     8     9     10    11    12    13}}

我希望最终结果类似于:

myStruct(1).field = { 1     2     3     4     5}
myStruct(2).field = { 7     8     9     10    11    12    13}

实际上不必像我在上面的示例中那样访问每个单独的字段。另外,我想避免使用 for 循环。

最后,我们如何执行逆运算(再次不访问单个字段或使用 for 循环):从 myStruct 结构中提取 myArray

为此有两个非常具体的 MATLAB 函数:cell2struct and struct2cell

对于第一次转换,您只需要注意通过选择正确的 dim 参数来使用正确的轴。这里有一个 2 x 1 元胞数组,所以它是 dim = 2.

第二次转换,直接使用struct2cell即可。

完整代码如下:

myArray = {{ 1     2     3     4     5}; 
           { 7     8     9     10    11    12    13}}

myStruct = cell2struct(myArray, 'field', 2);
myStruct(1).field
myStruct(2).field

myArrayAgain = struct2cell(myStruct).'

输出看起来像这样(缩短):

  myArray =
  {
    [1,1] =
    {
      [1,1] =  1
      [1,2] =  2
      [...]
    }

    [2,1] =
    {
      [1,1] =  7
      [1,2] =  8
      [...]
    }

  }

  ans =
  {
    [1,1] =  1
    [1,2] =  2
    [...]
  }

  ans =
  {
    [1,1] =  7
    [1,2] =  8
    [...]
  }

  myArrayAgain =
  {
    [1,1] =
    {
      [1,1] =  1
      [1,2] =  2
      [...]
    }

    [2,1] =
    {
      [1,1] =  7
      [1,2] =  8
      [...]
    }

  }

希望对您有所帮助!