我需要创建一个 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 帮助这里对这个话题很有帮助。