我需要创建一个matlab结构ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})
,它存储为带有字段:name的1x2结构数组。对ds.name的调用会生成输出:
ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'
请注意输出中的单引号。它们很重要。也就是说,我需要使用以下变量创建上述结构: X = [1x46 char] [1x47 char],即1x2 cell,我相信它实际上是一个字符串的单元格数组。除其他外,我尝试了以下内容:
Y = cell2struct(X, 'name', 1)'
导致带有字段名称的1x2结构数组,但是对Y的调用会生成输出:
Y.name
ans = my_name_is
ans = matlab_thining_hair
请注意,输出中的单引号丢失,尽管Y和ds都是带字段名称的1x2结构数组,但字段值的格式不同,结构的字节大小也各不相同。如何将字段值格式化为字符数组?
答案 0 :(得分:1)
在第一种情况下,您创建了一个包含两个字段的结构,其值为单元格数组。单元格数组显示引号。
在第二种情况下,你的struct字段有char数组,这就是你想要的。字符数组显示没有引号。
您可以在命令提示符{'abc'}然后输入'abc'来验证这一点。
在第一种情况下,您可以通过将字符串传递给单元格括号来创建非单元格数组字段值。
DS =结构( '姓名',{ 'my_name_is', 'matlab_thining_hair'})
答案 1 :(得分:1)
在调用cell2struct之前,将char字符串粘贴到另一层单元格中。而不是:
X = { 'foo', 'bar' }
尝试:
X = { {'foo'}, {'bar'} }
即,1乘2的单元格,其单元格内容本身就是单元格,而不是字符。然后cell2struct(X, 'name', 1)
应该给你一个包含单元格数组字段的结构数组。
如果你现有的X是一个celltr,我想你可以在它上面调用num2cell
将每个单元格推入另一层单元格间接。