【问题标题】:Convert a cell array of cells to cell arrays of doubles将单元格数组转换为双精度元胞数组
【发布时间】:2015-06-22 16:40:00
【问题描述】:

假设我有一个只包含数值的单元格数组。它的名字叫Q。

Q = { {[0]    [1]    [0]    [238]} }
Q{1}

ans = 

    [0]    [1]    [0]    [238]

我想做的是将所有这 4 个单元格合并为一个单元格。 在这种情况下,它将类似于以下内容:

Q{1}

ans =

     0     1     0   238

任何帮助将不胜感激。

【问题讨论】:

    标签: arrays matlab cell-array


    【解决方案1】:

    你有一个双嵌套元胞数组:

    Q = { {[0]    [1]    [0]    [238]} }
    

    您需要comma-separated lists 将其转换为数组。我假设您在Q 中有多个单元格数组,因此您可以使用cellfun

    out = cellfun(@(x) [x{:}], Q,'uni',0)
    

    你会得到

    Q{1} = 
    
        [0]    [1]    [0]    [238]
    
    
    out{1} =
    
         0     1     0   238
    

    对于一个元素,这相当于:

    Q{1} = [Q{1}{:}]
    

    因为cellfun 操作中的x 等价于Q{i},其中i 是运行变量。

    但是,如果您的元胞数组中只有一个数组,请考虑:

    out = cell2mat(Q{:})
    

    因为您根本不需要它是一个元胞数组。

    【讨论】:

    • Q{1} = cell2mat(Q{1}) ?
    • @thewaywewalk 非常感谢,Q{1} = [Q{1}{:}] 工作得很好。这就是我真正需要的。 :)
    • @LuisMendo 有用的答案,它也很完美!
    【解决方案2】:

    尝试这样做:

    Q{1} = [Q{1}{:}]
    

    【讨论】:

    • 下午好!我为我们创建了一个 MATLAB 聊天室,因此我们可以讨论与 MATLAB 相关的任何事情……可能是题外话的问题,或者不适合评论范围的事情。有空的时候来看看我们吧! chat.stackoverflow.com/rooms/81987/matlab
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    • 2015-09-13
    相关资源
    最近更新 更多