Arrays 如何取消嵌套单元格数组的嵌套?

Arrays 如何取消嵌套单元格数组的嵌套?,arrays,matlab,conditional,cell,Arrays,Matlab,Conditional,Cell,您好,我正在尝试创建一个单元格数组,它应该是这样的 '3/7/2014' '209.167.128.156' 1037 '3/13/2014' '204.205.57.137' 8 '3/18/2014' '209.167.128.156' 164 '3/27/2014' '216.178.43.209' 825 但问题是,当我运行代码时,我得到一个如下所示的单元格数组 {1x3cell} {1x3 cell} {1x3 cell} {1x3 cell} {1x3 ce

您好,我正在尝试创建一个单元格数组,它应该是这样的

'3/7/2014'  '209.167.128.156'   1037 
'3/13/2014' '204.205.57.137'    8
'3/18/2014' '209.167.128.156'   164
'3/27/2014' '216.178.43.209'    825
但问题是,当我运行代码时,我得到一个如下所示的单元格数组

{1x3cell} {1x3 cell} {1x3 cell} {1x3 cell} {1x3 cell]
这是我的密码:

cell = {};
month = 'March';
[num text raw] = xlsread(sheet);
text(1,:)= [];
fanta = text(:,1);
[row col] = size(fanta);
a = 1;
for i = 1:row
    coke = fanta{i};
    [first rest] = strtok(coke, '/');
    if strcmp(first, '1') && strcmp(month, 'January')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '2') && strcmp(month, 'February')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '3') && strcmp(month, 'March')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '4') && strcmp(month, 'April')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '5') && strcmp(month, 'May')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '6') && strcmp(month, 'June')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '7') && strcmp(month, 'July')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '8') && strcmp(month, 'August')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '9') && strcmp(month, 'Sepetember')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '10') && strcmp(month, 'October')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '11') && strcmp(month, 'November')
        cell{i} = raw((a+i), :);
    end
    if strcmp(first, '12') && strcmp(month, 'December')
        cell{i} = raw((a+i), :);
    end
end
cell = cell(~cellfun('isempty', cell))
我做错了什么?我该如何修复它。
谢谢。

要折叠单元阵列,您可以尝试

  C = cell2mat(C); % <-- using cell as a var name is bad practice!

首先,不要调用变量
单元格,因为它是内置Matlab函数的名称。这很糟糕,你应该为此受到惩罚:-)

假设您已将所有
单元格
替换为
C
。然后,您应该首先定义
C

C = cell(0,3);
并替换所有的

C{i} = ...

最后一点:最后一列将由字符串而不是数字组成。如果你真的想在这个列中有数字,你应该考虑使用函数<代码> STR2Doudi/<代码>某处。
最好的是,

似乎没有任何实际的错误,如果您使用的是单元格,那么您基本上是在创建一个数组。如果访问
单元格{i}
,它将返回一个向量,其中包含3个项目,即您显示的行。如前所述,您可以使用矩阵,但矩阵不能处理不同的数据类型(本例中为字符串和整数),因此我将继续使用单元格。 此外,您还可以创建多维的

所以,和疯狂老鼠说的一样,我会取代

cell{i}


是的,不要一个细胞一个细胞地打电话。

细胞=细胞(…)
是非常糟糕的做法(!!):-?(
cell
是matlab中的一个函数)请看我的答案:它是有效的。谢谢你的建议。我更改了你说的所有内容,但它在同一列上打印了所有内容。你知道它为什么这样做吗?这还不能回答问题。OP想要解压单元格数组中的单元格。你只是说使用单元格是合理的,这一点是肯定的。但他不能将其解包为常规矩阵,因为他有不同的数据类型。我没有说他应该将其解包为矩阵。他想将单元格数组解压成另一个二维单元格数组。如果你看Try Hard的答案,那就是OP想要的。不用担心。我只是想指出,万一有人决定否决投票。我不会,因为你让我放心,OP使用细胞阵列的立场是正确的。祝你好运@rayryeng嗯,我可能是通过使用cell=。。。我自己:-)哎呀!我给了你一个+1:)
C(i,:) = ...
cell{i}
cell{i,:}