如何在 Matlab 中将不规则单元格转换为字符串或字符向量

how to convert irregular cell to string or char vector in Matlab

假设我有一个不规则的单元格x:

x={{11,23},11.2,{22,1,222.3}}

我想要一个函数 celltostr,其中 celltostr(x) returns 一个字符串 '{{11,23},11.2,{22,1,222.3}}' 或类似 '11 23\n11.2\n22 1 222.3\n' 的东西。我尝试 char([x{:}]) 并抛出错误。我该怎么办?

您可以编写一个小辅助函数并遍历元胞数组:

x={{11,23},11.2,{22,1,222.3}};
formattedCharVectors = cellfun(@checkCellContents,x,'un',0);
stringOutput = strjoin([formattedCharVectors{:}],'');

function charVector = checkCellContents(x)
    if iscell(x)
        charVector = compose(repmat('%.1f,',1,size(x,2)),[x{:}]);
        charVector{1}(end) = ';';
    else
        charVector = [num2str(x) ';'];
    end

end

stringOutput 是一个字符向量,根据您的评论具有所需的内容:

>> stringOutput

stringOutput =

'11.0,23.0;11.2;22.0,1.0,222.3;'