MATLAB:将数值数组转换为字符串单元格数组的最快方法

时间:2013-05-10 17:15:00

标签: string matlab numbers cell

一般来说,我需要处理许多混合数据类型的文本文件,包括数字和文本。对于数字数据,我需要处理它们的质量,因为我处理了许多数据源,没有标准我可以严格执行。数据可以是整数,浮点或某种复杂格式,我需要清理这些文件。

输入数据可以快速转换为带有文本扫描的数字,但是,尝试将新创建的数字转换回字符串似乎花费的时间太长(比将输入文本转换为数字长6倍)。

我目前正在使用sprintf和textscan的组合将双精度数字数组转换为字符串的单元格数组而不会丢失精度。

numstr = sprintf(sprntffrmtstr, num);

vlnmcllnst = textscan(numstr,txtscnfrmtstr,'delimiter',' ');

vlcll = vlnmcllnst{1};

第1行和第2行占用了探查器中的大量时间。我在for循环中使用此方案来处理从将输入文本转换为数字的textscan的输出。每个循环都是数字的列向量,numstr和vlnmcllnst都是在循环之前预先分配的。

有人可以加快速度吗?

编辑: 文件已在此处上传(2014-04-29仍可访问!):http://www.2shared.com/file/ztVrvE0K/exampledata.html

这只是一个文件的说明。我可能一次使用并分析几千个这样的文件,它们通常在0-7MB(4000行)之间变化,尽管没有严格的上限大小。数据通道只是按列松散组织,某些文件中可能缺少通道,添加了新通道等。我当然预见到需要保持灵活处理文件可能更改的任何标准,因为它们来自不同的来源。我不需要只适用于这个文件的解决方案。我的最终解决方案应该能够处理几乎任何“合法”.csv类型的文件。我不排除使用perl,C等编写的辅助类型函数的可能性,如果没有本机MATLAB代码可以提供足够的速度,可以从MATLAB调用它。

0 个答案:

没有答案