如何在MATLAB中将单元格数组值拆分为两列?

时间:2017-12-05 13:22:43

标签: matlab split cell-array

我将单元格数组中的数据设为shown in the variable viewer here

{[2.13949546690144;56.9515770543056],
 [1.98550875192835;50.4110852121618],
 ...}

我想将其拆分为两列,其中包含两个小数点数字:

2.13   56.95 
1.98   50.41

删除括号和分号,例如[;] (与Excel中的“Text to columns”类似)。

3 个答案:

答案 0 :(得分:1)

如果您的N元素单元格数组C在每个单元格中都有2 x 1数字数据,您可以轻松地将其转换为N-by-2数字矩阵M,如此(使用round函数将每个元素舍入为2位有效数字):

M = round([C{:}].', 2);

语法C{:}创建C内容comma-separated list,相当于C{1}, C{2}, ... C{N}。这些都是horizontally concatenated使用[ ... ],结果是transposed使用.'

答案 1 :(得分:0)

% let's build a matching example...
c = cell(2,1);
c{1} = [2.13949546690144; 56.9515770543056];
c{2} = [1.98550875192835; 50.4110852121618];

% convert your cell array to a double array...
m = cell2mat(c);

% take the odd rows and place them to the left
% take the even rows and place them to the right
m = [m(1:2:end,:) m(2:2:end,:)];

% round the whole matrix to two decimal digits
m = round(m,2);

根据您的环境设置,您可能仍会在前两位小数后看到很多尾随零...但不要担心,一切正常(从精确的角度来看)。如果您只想显示数字的“真实”数字,请使用以下命令:

format short g;

答案 2 :(得分:-2)

你应该使用cell2mat

A={2.14,1.99;56.95,50.41};
B=cell2mat(A);

至于四舍五入,你可以这样做:

B=round(100*B)/100;