【问题标题】:MATLAB: Convert cell array of 1D strings to 2D stringMATLAB:将一维字符串的元胞数组转换为二维字符串
【发布时间】:2017-03-22 20:52:25
【问题描述】:

最新版本的 MATLAB 具有 strings,它们是字符向量的 N 维矩阵。我有一个这样的一维字符串的单元格数组,我想将它们组合成一个二维字符串,但是这样做有很多麻烦。 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 对象。

【问题讨论】:

    标签: arrays string matlab cell-array


    【解决方案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)。

    【讨论】:

    • 这只是一个例子,我有单元格格式的数据,我没有单独的字符串。
    猜你喜欢
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    • 2015-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多