字符串的单元格数组为matlab结构

时间:2013-01-10 01:44:15

标签: arrays matlab struct cell

我需要创建一个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结构数组,但字段值的格式不同,结构的字节大小也各不相同。如何将字段值格式化为字符数组?

2 个答案:

答案 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将每个单元格推入另一层单元格间接。