Arrays Matlab结构类型松散类型的单元阵列字段?

Arrays Matlab结构类型松散类型的单元阵列字段?,arrays,matlab,Arrays,Matlab,我想使用struct在Matlab函数中返回各种值。其中之一是单元阵列。下面是一个例子: xnames = cell( 3, 1 ) ; for i = [1:3] xnames{i} = sprintf( 'V_%d', i ) ; end a = 1 ; b = 2 ; r = struct( 'a', a, 'b', b, 'x', xnames ) ; 但是,如果我尝试访问r.x,则原始小区标识似乎丢失: x = r.x ; x{1} 这将导致错误:“非单元格数组对象的单元格

我想使用struct在Matlab函数中返回各种值。其中之一是单元阵列。下面是一个例子:

xnames = cell( 3, 1 ) ;
for i = [1:3]
   xnames{i} = sprintf( 'V_%d', i ) ;
end

a = 1 ;
b = 2 ;
r = struct( 'a', a, 'b', b, 'x', xnames ) ;
但是,如果我尝试访问r.x,则原始小区标识似乎丢失:

x = r.x ;
x{1}
这将导致错误:“非单元格数组对象的单元格内容引用”。字符串数据似乎存在,如r.x的显示所示:

ans =

V_1


ans =

V_2


ans =

V_3
但是,我不知道在将单元格数组插入结构之后如何获取这些字段

编辑:在上面的示例中使用gui变量资源管理器,显示r以以下结果结束:

1   2   'V_1'
1   2   'V_2'
1   2   'V_3'
i、 e.它被转换成一个struct数组,xnames{i}的每个值对应一个:

>> r(1)

ans =

    a: 1
    b: 2
    x: 'V_1'

>> r(2)

ans =

    a: 1
    b: 2
    x: 'V_2'

>> r(3)

ans =

    a: 1
    b: 2
    x: 'V_3'
因此,问题不在于如何以单元格数组的形式访问此字段x,而在于如何在插入结构初始值设定项时将其保留为单元格数组?

将xnames括在大括号中以将其保留为单元格数组:

r = struct( 'a', a, 'b', b, 'x', {xnames} ) ;
根据,struct函数处理单元格数组的方式与您调用它的方式相同,这意味着您将使用

你可以按照David的建议或使用

r.x = xnames;
r.x = xnames;