如何将单元格数组分配给嵌套结构中的字段?
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
[...]
}
}
希望对您有所帮助!
假设我有一个要分配给嵌套字段的元胞数组。
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
[...]
}
}
希望对您有所帮助!