我创建了一个Cell数组,我希望获得该单元格数组的命令窗口格式。
例如:我使用命令行创建了一个5x2单元阵列:
MyCell = {'time' , 'timestamp';'posX', {'DePositionX', 'DePositionXmm'};'posY', {'DePositionY', 'DePositionYmm'};'velocityX', 'DeVelocityX';'velocityY', 'DeVelocityY'};
类似地,我已经创建了一个MxN单元阵列(不是我),我想以命令窗口格式获取该单元的结构,如上面的代码所示。你能告诉我有没有办法或命令来实现这个目标。
感谢。
答案 0 :(得分:0)
这是一个应该完成你想要的功能。它是Per-Anders Ekstrom的cell2str(https://www.mathworks.com/matlabcentral/fileexchange/13999-cell2str)的递归版本。它应该至少适用于单元格数组,字符,数字或逻辑(递归)的单元格数组。
function s = cell2str(C)
% input checking
if ~iscell(C) || ~ismatrix(C)
error('Input must be a 2-d cell array');
end
% get size of input
S = size(C);
% transpose input so will be traversed in rows then columns
C = C.';
% initialize output string with open bracket
s = '{';
% iterate over elements of input cell
for e = 1:numel(C)
if ischar(C{e}) % if element is char, return a string that will evaluate to that char
s = [s '''' strrep(C{e},'''','''''') ''''];
elseif iscell(C{e}) % if element is cell, recurse
s = [s cell2str(C{e})];
else % if element is not char or cell, try to convert it using mat2str
s = [s mat2str(C{e})];
end
% add a semicolon if at end of row or a comma otherwise
if mod(e, S(2))
s = [s ','];
else
s = [s ';'];
end
end
% complete output string with closing bracket
s = [s '}'];
使用您提供的单元格数组检查它,语句
isequal(MyCell, eval(cell2str(MyCell)))
评估为真。