【问题标题】:Matlab textscan with mixed data types具有混合数据类型的 Matlab textscan
【发布时间】:2014-06-19 18:36:21
【问题描述】:

我有一个“.ismr”文件,可以用 fopen 打开。该文件有几列(但我对其中的前 9 个感兴趣)和几行。一行是:

1655, 60.00, 12, 00A00000, 184.25, 21.92, 42.02, 0.099385, 0.079280,

打开文件后,我使用tline一次读取一行,然后使用textscan如下:

xyz = textscan(tline,'%f, %f, %f, %s %f, %f, %f, %f, %f,');

当我运行我的脚本时,它只会正确地给我该行的前三个读数(即 1655、60.00 和 12),但从第 4 个开始,我什么也没有得到,或者只是垃圾。

请帮助我更正我的脚本。 谢谢

【问题讨论】:

    标签: matlab textscan


    【解决方案1】:

    为什么不直接使用逗号作为分隔符,而不是将其放入格式中?

    xyz = textscan(tline,'%f%f%f%s%f%f%f%f%f','Delimiter',',');
    

    注意,你可以直接在文件上使用textscan来读取多行格式相同的行,在处理之前不需要读入行。

    【讨论】:

    • 这是我得到的(一堆3个值,一个值):[1655; 0.06621700000000; 115.2246090000] [60; 0.071213000000; 0.071213000000; 0.2741900000000; 0.2741900000000; 0.076000000 00000000000000000000000000000000000000000000000000000000000000000000000000000000来;0.0764090000000000;115.347588000000] [21.9200000000000;-29.9933040000000;0.276983000000000] [42.0200000000000;0.0490000000000000;17544.8700000000] [0.0993850000000000;115.338326000000;8109] [0.0792800000000000;-0.0549600000000000]
    • 另外,请告诉我如何将文本扫描限制为仅读取前 9 列而忽略其余列。
    • 编辑您的问题以提供有关您的格式的更多信息。 textscan 会自动读取多行,因此看起来它正在读取三个(3x 单元格将包含三个字符串)并按列收集它们。对于另一个,请查看标有“跳过一行的剩余部分”的 textscan 帮助部分
    • 当我打开文件时,它看起来与我在问题中发布的一样。我不知道我应该进一步解释文件的格式。无论如何,感谢您跳过部分。
    • 您显示了一行。如果所有行都相同,那么很好。如果某些行不同,那就是 isuse。
    猜你喜欢
    • 2016-03-14
    • 1970-01-01
    • 2013-04-08
    • 2018-11-14
    • 2012-03-04
    • 2021-12-15
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多