Matlab:从一个文本文件导入多个数据集

标签 matlab import octave

所以我有一个脚本,可以在不同的环境中为我解析一些数据,并将这些数据输出到文件中,稍后我想将其读入 MATLAB。但是,如果我将 10 个数据集写入同一个文件(理想情况),MATLAB 将只读取第一个数据集。理想情况下,我想读入包含以下结果的结构元胞数组:进口。我对如何输出文件有一些余地,但基本上它必须是简单的,我可以一次写一行。

不幸的是,仅将附加数据集作为列附加是非常困难的。以下是一些示例数据的示例:

DataSet1
x   y   z
3.82724 60.8234 13.0031
3.79987 60.909  -8.89291
3.75338 60.9124 19.5031
3.67715 61.0104 -24.5894
3.68124 61.0889 -20.8511
3.88438 61.1817 34.891
3.71405 61.2379 16.31
3.85504 61.245  -19.3778
4.09736 68.85   5.86954
3.39505 69.9457 64.8669
3.36033 69.9552 -58.8838
3.39427 70.9253 -26.0232
3.35769 70.9523 18.7863

DataSet2
x   y   z
3.73244 60.597  -21.6651
3.81217 60.712  -29.5505
3.74396 60.7554 -43.6225
3.70079 60.8271 -69.0996
3.87417 60.8662 -49.8068
3.74371 61.6553 34.915
3.815   61.7063 28.5842
3.88035 61.802  78.4314

理想情况下我想保留这种结构。我看到的最好的替代方案是写入大量不同的文件(不理想),或者将其写入一个长数组,然后在其中包含一些 header 信息,指示每个数据集的开始位置。同样,这不是一个理想的情况。有没有办法使用类似于 importdata() 的东西?

最佳答案

您可以使用文本扫描。它非常灵活,所以我相信您可以根据您的情况进行调整。以下是示例数据集的代码:

C = textscan(fd, '%f%f%f', 'TreatAsEmpty', {'x y z', 'Dataset1', 'Dataset2'});

C 是一个由 3 个具有 double 值的列向量组成的单元格,每个 %f 对应一个列向量。

>> C{1}

ans =

   NaN
   NaN
3.8272
3.7999
3.7534
....

如您所见,在有数据集分隔符的地方您将得到 NaN,因此您可以轻松地拆分数据集。必须将“字符串”数据集分隔符显式指定为 TreatAsEmpty 参数(我已更改此处的“x y z”字符串以在字符之间包含一个空格)。

关于Matlab:从一个文本文件导入多个数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503181/

相关文章:

python - 导入 numpy 和 Scipy 包的模块/子包的差异

matlab - 什么是作为索引值无效的复杂标量类型

octave - Octave中使用的@符号是什么?

matlab - 如何参数化作为高斯导数的曲线

Android Studio 无法识别 Facebook 导入

java - Matlab无法启动,错误: "Cannot locate com/mathworks/jmi/OpaqueJavaInterface class"

import - 如何从同级模块导入?

matlab - Octave fminsearch : Problems with minimization and options

MATLAB 在命令窗口自动完成文本

matlab - matlab中randn函数的问题