matlab结构类型丢失类型的单元格数组字段?

Pee*_*oot 0 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 ) ;
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试访问rx,则原来的单元标识似乎丢失了:

x = r.x ;
x{1}
Run Code Online (Sandbox Code Playgroud)

这会导致错误:'来自非单元数组对象的单元格内容引用.' 字符串数据似乎在那里,因为rx的显示显示:

ans =

V_1


ans =

V_2


ans =

V_3
Run Code Online (Sandbox Code Playgroud)

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

编辑:在上面的例子中使用gui变量资源管理器,显示r最终得到结果:

1   2   'V_1'
1   2   'V_2'
1   2   'V_3'
Run Code Online (Sandbox Code Playgroud)

即它被转换为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'
Run Code Online (Sandbox Code Playgroud)

那么,问题不在于如何将这个字段x作为单元格数组访问,而是如何在插入struct()初始化程序时将其保留为单元格数组?

eig*_*ris 5

根据该文件,顺便struct功能处理单元阵列,你怎么称呼它的方式意味着你将访问V1,V2,V3使用

r(1).x
r(2).x
r(3).x
Run Code Online (Sandbox Code Playgroud)

您可以按照David的建议或使用,获得您想要的行为.

r.x = xnames;
Run Code Online (Sandbox Code Playgroud)