使用cell2mat Matlab时出错

时间:2018-02-14 17:30:09

标签: matlab cell

我有下面的单元格:

 aa={[1.0094]}     {[1.0370]}    {[1.0956]}    {[1.0957]}   {[1.0171]}    
     {[1.0362]}    {[1.1355]}    {[1.0503]}    {[1.5280]}   {[1.1928]}
     {[1.0148]}    {[0.9822]}    {[1.0316]}    {[1.1135]}   {[1.1135]}

我使用命令cell2mat如下:

  aa=cell2mat(aa);

但它给出了以下错误:

 Error using cell2mat (line 45)
 All contents of the input cell array must be of the same data type.

知道该怎么办? 最好

1 个答案:

答案 0 :(得分:1)

aa = { {[1.0094]}    {[1.0370]}    {[1.0956]}    {[1.0957]}   {[1.0171]}  ...  
       {[1.0362]}    {[1.1355]}    {[1.0503]}    {[1.5280]}   {[1.1928]}  ...
       {[1.0148]}    {[0.9822]}    {[1.0316]}    {[1.1135]}   {[1.1135]} };

是包含单元格数组的单元格数组。

>> % Proof:
>> aa(1)

ans =

  1×1 cell array

    {1×1 cell}

不幸的是cell2mat()不支持包含单元格数组或对象的单元格数组。

As the documentation of cell2mat states:

  

输入参数

     
C — Input cell array
    cell array
  
     

输入单元阵列,其中所有单元格包含相同的数据类型。   cell2mat接受C的单元格中的数字或字符数据,或   具有相同字段名称和数据类型的结构。 cell2mat没有   接受C 中的对象或嵌套单元格。

解决方法可能是将aa内的所有元素转换为双打,然后调用cell2mat()

bb = zeros(1, length(aa));         % Initialize new vector to hold converted cells
for i = 1:length(aa)               % For all elements in aa
    bb(i) = cell2mat(aa{1, i});    % Convert them
end
% Now bb is an array of doubles
%
% bb =
%
%  Columns 1 through 12
%
%    1.0094    1.0370    1.0956    1.0957    1.0171    1.0362    1.1355    1.0503    1.5280    1.1928    1.0148    0.9822
%
%  Columns 13 through 15
%
%    1.0316    1.1135    1.1135