使用 Textscan 仅扫描一列

Scanning Only A Column With Textscan

我想通过 textscan 命令获取实时更改文本文件的第二列。我只能获取文本文件的第一列,但我想要第二列。这是我的代码:

    fileid = fopen (Path);
    rxt = textscan (fileid, '%d %*[^\n]' );
    fclose (fileid);

    arr = rxt {1,1};

如何修改它以仅读取第二列?

以下是文本文件的部分内容:

226, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, 0,00, 0,00, 0,00
227, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, 0,00, 0,00, 0,00
228, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, -187500,02, 0,00, 0,00, 0,00

您可以指定要丢弃第一个数字 (%*d),保留第二个 (%d),并丢弃其余字符串 (%*[^\n])

textscan(fileid, '%*d, %d, %*[^\n]')

虽然根据数据,您粘贴了一个逗号分隔的文件, 使用 , 作为小数点。因此,您需要读取第二个和第三个数字并将它们转换为浮点数

numbers = textscan(fileid, '%*d, %d,%d %*[^\n]');
numbers = arrayfun(@(a,b)a * 10^b, numbers{:})