我有下面的单元格:
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.
知道该怎么办? 最好
答案 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