所以我有一个脚本,可以在不同的环境中为我解析一些数据,并将这些数据输出到文件中,稍后我想将其读入 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/