Arrays 防止MATLAB将单元素数组转换为非数组类型

Arrays 防止MATLAB将单元素数组转换为非数组类型,arrays,matlab,cells,Arrays,Matlab,Cells,我有一个单元格数组,其中每个单元格都包含一个字符串数组。例如: example = {{['a'], ['b']}, {['c']}} 但是, example{1} 返回1x2单元格数组,而 example{2} 返回一个单元格,而不是预期的1x1单元格数组。因此,此单个单元格值的格式与封装示例单元格数组的格式不同,这将进一步分解计算 我该如何解决这个问题?理想情况下,我希望能够有一个1x1单元数组,并避免任何讨厌的特殊情况。在MATLAB中,标量实体和1 x 1数组之间没有区别。标量只是

我有一个单元格数组,其中每个单元格都包含一个字符串数组。例如:

example = {{['a'], ['b']}, {['c']}}
但是,

example{1}
返回1x2单元格数组,而

example{2}
返回一个单元格,而不是预期的1x1单元格数组。因此,此单个单元格值的格式与封装示例单元格数组的格式不同,这将进一步分解计算


我该如何解决这个问题?理想情况下,我希望能够有一个1x1单元数组,并避免任何讨厌的特殊情况。

在MATLAB中,标量实体和1 x 1数组之间没有区别。标量只是数组的1 x 1版本。没有特殊的数组类,数组只是简单的数组。无论是
double
数组、
char
数组、
struct
数组还是
cell
数组(更多信息),这都适用

因此,
示例{2}
确实返回1 x 1单元格数组。您可以使用、和/或测试
示例{2}
实际上是一个1 x 1单元格


由于它是一个1 x 1单元数组,因此您的其余代码应该能够毫无问题地处理它(假设您正确地编写了其余代码)。

单元素单元数组仍然是大小为1x1的单元数组。注意:

>> class(example{1})
ans =
cell
>> class(example{2})
ans =
cell
>> size(example{1}) 
ans =
     1     2
>> size(example{2}) 
ans =
     1     1

如果你的数组的大小是1x1,特别是在你的代码下面,你可以单独测试,或者考虑用<代码>()> < /C>语法】索引单元格数组是否更有利于你,例如:

>> example(1)
ans = 
    {1x2 cell}
>> example(2)
ans = 
    {1x1 cell}
>> example(1)
ans = 
    {1x2 cell}
>> example(2)
ans = 
    {1x1 cell}