Arrays Matlab结构类型松散类型的单元阵列字段?
我想使用struct在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} 这将导致错误:“非单元格数组对象的单元格
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;