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

How to split cell array values into two columns in MATLAB?

我在元胞数组中有数据 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" 那样做)。

你应该使用 cell2mat

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

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

B=round(100*B)/100;
% 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);

根据您的环境设置,您可能仍会在前两位小数后看到很多尾随零...但别担心,一切正常(从精度的角度来看)。如果您只想显示号码的 "real" 位,请使用此命令:

format short g;

如果您的 N 元素元胞数组 C 在每个元胞中都有 2×1 数值数据,您可以像这样轻松地将其转换为 N×2 数值矩阵 M (使用 round 函数将每个元素四舍五入为 2 位有效数字):

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

语法 C{:} 使用 .' 创建 comma-separated list of the contents of C, equivalent to C{1}, C{2}, ... C{N}. These are all horizontally concatenated using [ ... ], then the result is transposed