使用 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{:})
我想通过 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{:})