如何在 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;'
假设我有一个不规则的单元格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;'