字符串单元格数组到 matlab 结构

字符串单元格数组到 matlab 结构

我需要创建一个 matlab 结构,将ds=struct('name',{{'my_name_is'},{'matlab_thining_hair'}})其存储为具有字段名称的 1x2 结构数组。调用ds.name生成输出:

ds.name
ans = 'my_name_is'
ans = 'matlab_thining_hair'

请注意输出中的单引号。它们很重要。也就是说,我需要使用以下变量创建上述结构:X = [1x46 char] [1x47 char]即 1x2 单元格,我相信它实际上是字符串的单元格数组。除其他外,我尝试了以下操作:

Y = cell2struct(X, 'name', 1)'

这会产生一个带有字段名称的 1x2 结构数组,但是对 Y 的调用会生成输出:

Y.name
ans = my_name_is
ans = matlab_thining_hair

请注意,输出中缺少单引号,尽管 Y 和 ds 都是带有字段名称的 1x2 结构数组,但字段值的格式并不相同,并且结构的字节大小也不同。本质上我需要的是一个带有单元格数组字段的结构,其中每个单元格数组本质上都由一个唯一的字符数组组成。我不知道如何将字段值格式化为字符数组?任何帮助都将不胜感激。

答案1

您的示例中的差异在于,原始示例 ds.name 的每个元素都是包含字符的单元格(例如 {'my name is'}),而 X 的每个元素都是字符(例如 'my name is')。如果您将 X 的每个元素的类型从字符更改为包含字符的单元格,那么您应该会得到您想要的行为。

下面的例子中显示了这一点。

X2={{'my_name_is'},{'matlab_thinning_hair'}};

Y = cell2struct (X2,'名称',1);

姓氏

答 =

'我的名字是'

答 =

‘matlab_稀疏_头发’

您可以通过索引元素并执行下列操作为变量 X 实现此目的:

X2{1}={X{1}};

X2{2}={X{2}}

matlab 帮助这里对这个话题很有帮助。

相关内容