我想使用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()初始化程序时将其保留为单元格数组?
根据该文件,顺便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)