问题标签 [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 投票
2 回答
898 浏览

arrays - textscan() 读取结果是嵌套单元格数组?

我有一个包含 100 行的数据文件,格式如下

现在我希望将它们读入100x3MATLAB 中的单元格数组。我做了以下事情:

然后,我注意到这allData是一个1x3单元格数组,每个项目都是另一个100x1单元格数组。(前两列是字符串型元胞数组,而第三列是双精度型元胞数组)

换句话说,读取结果是一个nested数组,我不想要。

如何 100x3在阅读时直接实现单元阵列?

0 投票
1 回答
194 浏览

matlab - MATLAB 的 Textscan 格式复杂性与后处理

我有一个关于 MATLAB 的问题textscan。我有一个包含大量列的文件,并且行数为 1-32 行(与 #col 相比非常小)。这是一个简单的例子:

列数是不知道的,第一个也是唯一一个开始一行的字符串的长度是不知道的。我在第一行读取并计算列数,并构建实际的格式字符串以读取文件的其余部分,如下所示:

我选择了几个例子,每次我得到以下信息:假设我有一个包含 100,000 列和 3 行的文件。/ s 告诉我第一行读取在 0.16 秒内完成tictoc然后,当我构建格式字符串并阅读整个文档时,它会在 9 秒内完成。为什么读入时第一行%s读入如此之快,但下一次我读取整个文件(仅多 2 行)时却需要更长的时间?是因为format我第二次解析文件时使用了更复杂的字符串吗?将整个文件解析为空格分隔的字符串然后执行后处理(例如:)str2double以获取我的双精度矩阵是否有意义?

编辑:澄清文件格式的细节:

所以数字不是 int,它们是正/负。

注意:我基本上感到困惑的是,为什么 textscan 能够非常快速地读取文件的第一行,而接下来的两行比第一行花费的时间长得多。

0 投票
1 回答
45 浏览

matlab - 将文件数据分配给结构

我正在尝试使用成员 ID、X 坐标和 Y 坐标创建一个名为“points”的结构。从文件中扫描数据的最简单方法是什么?我正在使用 textscan,但到目前为止它并没有做我想要的。

检查点(1)返回以下内容。所有 x 和 y 值都存储在每个点中。

任何帮助表示赞赏。

0 投票
2 回答
62 浏览

matlab - 使用条件语句分配结构

我想根据条件(Matlab)将输入数据分配给 2 个不同的结构。做这个的最好方式是什么?

目标:如果code = 0,分配给结构A。如果不是,分配给结构B。

这是我尝试过的。真的只是在黑暗中开枪。

0 投票
3 回答
1113 浏览

matlab - textscan 具有有效格式字符串的意外空单元格

我正在阅读一个制表符分隔的文件。该文件的五个代表行是:

日期时间属性路径1 路径2 路径3 路径4 路径5 路径6 路径7 路径8
列1 列1 列1 列1 列1 列1 列1 列1

1/1 00:00:00 F1 (sm³/s) -1.3405E-003 -1.1170E-002 -1.0123E-004 9.7769E-003 -8.4673E-004 1.1710E-003 2.6890E-004 2.2413E-003

1/1 01:00:00 F1 (sm³/s) 1.9988E-004 1.6655E-003 2.2252E-004 1.6883E-003 1.8612E-003 2.0221E-004 2.0795E-004 1.7333E-003

1/1 02:00:00 F1 (sm³/s) -4.0722E-004 -3.3931E-003 -4.4324E-004 -2.1177E-003 -3.7075E-003 -2.5364E-004 -3.7330E-004 - 3.1115E-003

当我使用以下格式字符串时,我得到了预期的结果:

给我:

这是我想要的,但是当我尝试时:

我得到一个 1x8 的空单元格。

格式字符串翻译中的错误是什么?

0 投票
1 回答
738 浏览

matlab - textscan 和空格

网页包含由某些列显示并由标签 "pre" "/pre" 分隔的一些数据:

我用下面的代码得到它们

但在这种情况下,我不知道所有元素的价值,我想阅读它们中的每一个,我尝试过

但未检测到空格!例如在第二行中,我检测到 {3x1 cell} 而不是 {5x1 cell}。

0 投票
1 回答
680 浏览

matlab - Matlab:使用 textscan 读取复数

我有一个cTest.dat包含一堆复数的文本文件,格式如下:

我想将它们读入matlab。从帮助站点来看,这似乎textscan是一个不错的选择,我尝试

然而,这给了我

有谁知道如何做到这一点?

0 投票
2 回答
384 浏览

regex - textscan delimiter = "abc" 不起作用

我正在尝试读取具有文本数据并由分隔符分隔的文本文件,例如分隔'abc'我要读取的字符串的连续字符。

例如:说text.txt文件,如下:

我尝试了以下代码,但它不起作用,因为分隔符不是单个字符:

非常感谢任何帮助

0 投票
1 回答
47 浏览

matlab - Matlab中的textscan后不是字符串

我正在阅读以下形式的字符串:Text1_Text2_Text3_Text4。我textscan用分隔符做一个"_"

myString = textscan('Text1_Text2_Text3_Text4', '%s', 'delimiter','_');

输出:

'Text1' 'Text2' 'Text3' 'Text4'

这是一个字符数组。要将其转换为我使用的字符串myString = myString{1}。我想知道第二个索引的大小->numel(myString(2)); 但是 MATLAB 总是返回 1。我错在哪里?提前致谢。

PS如果我这样做,它会起作用

myString = myString{1}(2); myString = myString{1};

但是如果我还想知道索引 1、3 或 4 的大小,我需要很多变量,所以必须有一个更简单的方法。

0 投票
2 回答
4361 浏览

matlab - 如何使用 Matlab 跳过 txt 文件中的行?

我正在开发一个涉及上传 txt 文件的 GUI 程序。文件的前 80 行包含我不需要的信息,它是数字和文本数据的混合。例如这里有几行我不想使用的数据;

vertical_line_flag;0
vertical_line_ratio;
0laser_wavelength;
0laser_powerlevel;0
overlay_js;0
相对强度校正标志;0
像素;波长;波数;拉曼位移;暗色;参考;原始数据 #1;暗减 #1;%TR #1;吸光度#1;辐照度(流明)#1;
0;165.98;60247.73;-60247.73;0.0000;65535.0000;1125.0000;31.0000;0.0000;0.0000;0.0000; 1;166.38;60103.59;-60103.59;0.0000;65535.0000;549.0000;-545.0000;0.0000;0.0000;0.0000; 2;166.78;59960.14;-59960.14;0.0000;65535.0000;0.0000;-1094.0000;0.0000;0.0000;0.0000; 3;167.18;59817.38;-59817.38;0.0000;65535.0000;998.0000;-96.0000;0.0000;0.0000;0.0000; 4;167.57;59675.31;-59675.31;0.0000;65535.0000;1046.0000;-48.0000;0.0000;0.0000;0.0000; 5;167.97;59533.90;-59533.90;0.0000;65535.0000;1020.0000;-74.0000;0.0000;0.0000;0.0000; 6;168.37;59393.17;-59393.17;0.0000;65535.0000;1003.0000;-91.0000;0.0000;0.0000;0.0000; 7;168.77;59253.11;-59253.11;0.0000;65535.0000;1051.0000;-43.0000;0.0000;0.0000;0.0000; 8;169.17;59113.71;-59113.71;0.0000;65535.0000;1024.0000;-70.0000;0.0000;0.0000;0.0000; 9;169.56;58974.97;-58974.97;0.0000;65535.0000;1045.0000;-49.0000;0.0000;0.0000; 0.0000; 10;169.96;58836.88;-58836.88;0.0000;65535.0000;1091.0000;-3.0000;0.0000;0.0000;0.0000; 11;170.36;58699.44;-58699.44;0.0000;65535.0000;1064.0000;-30.0000;0.0000;0.0000;0.0000; 12;170.76;58562.65;-58562.65;0.0000;65535.0000;1019.0000;-75.0000;0.0000;0.0000;0.0000;

数字开始的点,如 (lumen) #1 之后的行;是我想在我的程序中使用的数据。

我尝试使用此代码跳过文件的前 80 行

但这导致 A= [0x1 double]

任何有关如何解决此问题的建议将不胜感激。