首页 > 解决方案 > matlab textscan 给了我错误的行数

问题描述

我在https://www.dropbox.com/s/vtby4027rvprhga/inputR_revised.tsv?dl=0有一个文件名 inputR_revised.tsv
在matlab中,我输入

fid=fopen('BMC3C/example/inputR_revised.tsv','r')
covTable = textscan(fid,['%s',repmat('%.8n',[1,20])],'HeaderLines',1);

我得到大小为 41699 乘以 1 的 covTable{1,1}。但是,当我在终端键入以下内容时

wc -l inputR_revised.tsv

我得到 41677。为什么它不同?我已经使用 sed 和 cut 来修改原始文件以获得 inputR_revised.tsv。这是原因吗?

有没有办法解决这个问题?

标签: matlabtextscan

解决方案


%.8如果您打印的小数超过 8 位,这还不够。对于这些情况,小数点后 8 位的数字可以被视为单独的条目。这将产生比预期更多的数字。您应该为扫描格式中的小数位数使用更高的值。例如,

fid=fopen('BMC3C/example/inputR_revised.tsv','r')
covTable = textscan(fid,['%s',repmat('%.18n',[1,20])],'HeaderLines',1);

这应该为您提供正确的行数。


推荐阅读