我在Matlab中有一个单元格数组的单元格数组,我想通过根据其单元格中的一个单元格的内容来命名每个单元格数组来简化操作。这是一个例子:
myCell1 = {'';'name1'; 'stuff';'two';'three'};
myCell2={'';'name2';'more stuff';'4';'things'};
Cell={myCell1, myCell2}
如果我在上面的示例中有Cell
,我想创建两个 unnested 单元格数组,这些数组基于每个单元格中的第二行命名。在此示例中,结果如下:
name1 =
''
'name1'
'stuff'
'two'
'three'
name2 =
''
'name2'
'more stuff'
'4'
'things'
我该怎么做?我尝试索引如下,但它没有工作(我不知道如何让MATLAB认识到我希望单元格数组中的字符串是一个名字)。
Cell{1,1}{2}=Cell{1,1};
答案 0 :(得分:0)
您可以使用eval
为您执行此操作。基本上,您创建一个您想在MATLAB中作为字符串执行的命令,然后使用eval
为您执行此命令。因此,您可以这样做:
for idx = 1 : numel(Cell)
cel = Cell{idx}; %// Extract i'th cell
name = cel{2}; %// Get the name
%// Create a cell array of this name in your workspace
st = [name ' = cel;'];
eval(st);
end
上面代码的作用是它访问整个单元格数组中的每个嵌套单元格,提取单元格的名称,使用eval
获取单元格的名称,使其成为变量并分配到您提取的嵌套单元格。
通过执行此代码,我得到:
name1 =
''
'name1'
'stuff'
'two'
'three'
name2 =
''
'name2'
'more stuff'
'4'
'things'