【问题标题】:Use contents of a cell to name cell array?使用单元格的内容来命名单元格数组?
【发布时间】:2014-08-03 23:41:58
【问题描述】:

我在 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};

【问题讨论】:

    标签: arrays matlab cell-array


    【解决方案1】:

    您可以使用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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-22
      • 2016-12-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多