table 中的 matlab 清理条目

matlab-cleaning entries in a table

在我的 matlab 工作区中,一个 table class 包含带有条目的单元格,如下所示


'206'   '2000'  '.12750'    'N/A'   '36'    '116'   '2006-03-16 00:00:00'   '0'
'180'   '10000' '.10500'    'N/A'   '36'    '116'   '2006-03-13 00:00:00'   '0'
</pre>

每个条目都是一个字符,例如'206',条目是“'206'”,206不是数字而是字符。我如何遍历每个单元格,从单元格中取出引号并将数字条目转换为实际数字?

Matlab中有str2num函数将string数据转换为numeric数据。所以唯一的问题 - 如何访问 table class 中的值。

如果将数字数据与某些文本分开时出现问题,您可以这样使用 ismember 函数:

a = '3';          %put here code of accessing your needed cell
b='0123456789';
ismember(a,b);    %return 1 if `a` is a member of `b`

您可以使用 table2cell 将其转换为单元格。我们称此元胞数组为 x;然后使用正则表达式来检测数字(我似乎记得有一个更简单的方法来完成这一步,但不记得确切的功能)。

isNumeric = @( c) ~isempty( regexp(c,'^\d*$'))

在此之后,将其应用于整个元胞数组

idx = cellfun(isNumeric,x)

将 str2num 应用于数字单元格:

x(idx) = cellfun( @str2num , x(idx),'UniformOutput',false)