问题标签 [textscan]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
194 浏览

matlab - 优化这段代码?

我有一个名为reference的“父”文本文件,它是:

这个想法是生成一组类似的文件,只更改上述文件的 4 个确定的行(LENGTH,STEP,UBAR,SEED)。

目前我正在使用这段代码:

但是这样一来,代码大部分时间都花在了编写输出上。我想更多地做同样的事情,只阅读参考文件(使用 fopen() 或其他命令)和改变(打印)

在新文件中。

有谁知道如何达到这个结果?如果可能的话,我也想矢量化而不是使用 for 循环。

否则,我正在考虑这种过程:感谢您的回答并与我分享代码。

您可能注意到代码由块组成:它们以“MSTART”开头,以“MEND”结尾;每个 MSTART 后跟单个块的标签/名称。

在这种情况下,块是 CONSTANTS 和 WINDND。我想知道是否有可能:

代码的开头是:

但是我不知道如何继续,因为我只是 Matlab 的大一新生,尤其是文本/结构操作。

我希望你能对我有耐心。

问候。

我提前感谢大家。

最诚挚的问候,弗朗切斯科

0 投票
2 回答
1346 浏览

matlab - 与 R 中的类似方法相比,Matlab 中的 textscan 使用过多的 RAM

我在具有 16 GB RAM 的 Linux Mint v12 上运行 Matlab R2011b 和 R 版本 2.13.1。

我有一个 csv 文件。前 5 行(和标题)是:

该文件很大(大约 900MB)。给定字符和数字数据的组合,可以将这个文件读入 matlab,如下所示:

虽然文件是 900MB,但在运行上述代码时,系统监视器显示我的 RAM 使用量从大约 2GB 跃升至 10GB。更糟糕的是,如果我使用稍大的 csv 文件(约 1.2 GB)尝试相同的过程,我的 RAM 最大为 16 GB,而 Matlab 永远无法完成数据的读取(它只是停留在“忙碌”模式)。

如果我想将同一个文件读入 R,我可能会使用:

这比 Matlab 需要更长的时间,但系统监视器显示我的 RAM 使用量仅从 2GB 跳到 3.3GB(考虑到原始文件大小更合理)。

我的问题有两个部分:

1)为什么textscan在这种情况下会占用大量内存?

2)我可以使用另一种方法将这种类型的 1.2GB csv 文件放入我系统上的 Matlab 中,而不会耗尽 RAM?

编辑:澄清一下,我很好奇是否存在仅 matlab 的解决方案,即我对涉及使用不同语言将 csv 文件分解成更小的块的解决方案不感兴趣(因为这就是我已经在做)。抱歉 Trav1s,我应该从一开始就说清楚。

0 投票
1 回答
529 浏览

matlab - Matlab textscan 出错了:cellfun 从某些行中选择数据

嗨,我正在使用以下代码从 data.txt 中包含“GPGGA”的行中读取一些值

如果删除 data.txt 中的最后一行,该代码将完美运行。当最后一行包含在文本文件中时,不确定为什么会引发此错误。是什么原因?我很困惑!

“???错误使用 ==> horzcat CAT 参数尺寸不一致。==> 4 Loc = [A{[2, 4]}] 测试中的错误;”

数据.txt

0 投票
4 回答
10384 浏览

python - Python 等价于 Matlab textscan

我正在将一些 Matlab 代码传输到 Python。我对 Python 比较陌生,并且不确定 Python 等效于 Matlab 的textscan方法。任何帮助将不胜感激。

0 投票
2 回答
391 浏览

matlab - 如何将浮点数与共同编写的字符串分开 - matlab

我有一个关于在 matlab 中读取 txt 文件的问题,格式未知,但 txt 文件中的每一行总是这样开始:

然后记录一些不同的东西,txt 文件可能看起来不同,例如

我处理textscan并使用:

NCol在文件中,它计算了我们记录 了多少 col ( ),但这里没有显示

但有时文本文件包括0.0%,例如:

现在'%.2f'行不通了。我不知道日志什么时候是这样的。有没有更好的方法将浮动和字符串打印在一起时分开;我只想收集数据(浮点数),以便绘制。

当它随 %.2f 和 %.1f 变化时,如何获得所有浮点值;你不知道模式。

0 投票
1 回答
2458 浏览

matlab - 从 .dat 文件导入特定列和行范围

我将如何从以下 .dat 文件的第四行导入数据:

因此,按照以#33 开头的行,我想导入 17,433(应该是 17.433),然后导入 17,446,依此类推。我试图通过指定数据从第 13 行开始来使用 textscan 和 headerlines:

但是,这不起作用(在 MATLAB 返回一个空数组的意义上)。我猜这是因为第二列和第三列不是浮点数,但是,当我将它指定为字符串时它也不起作用。接下来我应该尝试什么?

0 投票
1 回答
197 浏览

matlab - 如何连接由 textscan() 加载的不同值?

我正在使用 textscan 加载一些文本,虽然数据通过了,但我想将该数据转换为浮点矩阵而不是 hh:mm:ss 格式。

以下是数据示例:

这是我的代码:

还要注意 m{:,6} 被转换为整数,这是不可取的。目标是使 b 成为单行或单列浮点数,可以将小时:分钟:秒转换为 0 的单个数字。 - 23.999

感谢您的任何建议!jml

0 投票
1 回答
216 浏览

matlab - 文本扫描迭代

我有一些文件要处理,但我正在使用的中间缺少文件

对于 i=1:文件;

fid = fopen(['Raw',num2str(i),'.txt']);

D = textscan(fid1,'%*f %f%*f%*f%*f% f%f% [^\n]','delimiter',';','headerlines',50,'CollectOutput' , 1);

fclose(fid);

现在,当我按顺序整理文件时,程序的其余部分运行良好

即,我的文件夹中有 100,200 个任意数量的文件,依次为 Raw1.txt、Raw2.txt、Raw3.txt、...。

一旦缺少 Raw1.txt、Raw4.txt、Raw5.txt 等文件,我就会遇到麻烦

我如何迭代我的文本扫描,以便它可以忽略文件编号?

谢谢

编辑 :

通过丢失文件,我主要是指“原始”之后的数字

我的文件生成为 Raw1、Raw2、Raw3............ Raw400.txt

当所有文件都井井有条并且存在时,我没有问题。

当我有一些缺失或跳跃时,例如 Raw1 。Raw2........ Raw10, Raw15, Raw16 我有麻烦,因为从 Raw10.txt 跳转到 Raw15.txt 如果我的文件从 Raw1.txt 以外的任何地方开始,我也会遇到同样的问题

0 投票
1 回答
7218 浏览

matlab - MATLAB textscan 标题行

当我尝试使用headerlineswithtextscan跳过文本文件的第一行时,我的所有数据单元格都存储为空。

这段代码给出

如果没有该headerlines部分并且没有需要在文本文件中跳过的第一行,则可以毫无问题地读入数据。它创建一个1x4 cell数据单元格,其中包含列中文本文件中的所有信息。

我该怎么做才能跳过文本文件的第一行并正常读取我的数据?

谢谢

0 投票
1 回答
189 浏览

matlab - 对 csv 文件中的列进行文本扫描,其中包含用于标记数据的列,分隔符问题

我正在阅读许多 csv 文件并提取第 1、6、8 和 20 列。分隔符是 '","' 因为 csv 使用双引号。除非标记了某些数据,否则这非常有效,在这种情况下,一切都会变得异常。数据示例:

脚本读取完美到 * 然后一切都被转移,所以我得到的只是 NaN。

所以我想我的问题是:

我可以使用循环预格式化每个文件以删除标志或更改文本扫描以忽略所有标志,以便我的分隔符起作用。

感谢您的输入!