MATLAB:将1D字符串的单元格数组转换为2D字符串

时间:2017-03-22 20:52:25

标签: arrays string matlab cell-array

MATLAB的最新版本具有strings,它们是字符向量的N维矩阵。我有一个这样的1D字符串的单元格数组,我想将它组合成一个单独的2D字符串,但是我在这方面遇到了很多麻烦。 joinstrjoinstrcat函数适用于字符串中的字符数组,而cell2mat不起作用:

>> cell2mat({strings(1, 4); strings(1, 4)})
Error using cell2mat (line 52)
CELL2MAT does not support cell arrays containing cell arrays or objects. 

有什么好办法吗?我希望上面的情况中的输出是一个2x1 string对象。

1 个答案:

答案 0 :(得分:1)

string个对象的行为与任何其他数据类型(doublechar等)在使用相同类型进行连接时的行为。只要您希望结果也是string对象,请使用常规连接。

result = [strings(1, 4); strings(1, 4)];

或者您可以使用catvertcat更明确

result = cat(1, strings(1, 4), strings(1, 4));
result = vertcat(strings(1, 4), strings(1, 4));

或者,您可以使用索引来对同一元素进行两次采样

result = strings([1 1], 4);

如果您的数据已经在单元格数组中,那么您可以使用{:}索引生成以逗号分隔的列表,您可以将其传递给cat

C = {string('one'), string('two')};
result = cat(1, C{:})

作为旁注,MATLAB中没有一维数组。所有数组至少有两个维度(其中一个可以是1)。