matlab textscan 给了我错误的行数
matlab textscan gives me wrong number of lines
我在 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。是这个原因吗?
有办法解决这个问题吗?
%.8
如果您打印的小数位数超过 8 位,则
%.8
是不够的。对于这些情况,小数点后 8 位之后的数字可以被视为单独的条目。这将产生比预期更多的数字。您应该为扫描格式中的小数位数使用更高的值。例如,
fid=fopen('BMC3C/example/inputR_revised.tsv','r')
covTable = textscan(fid,['%s',repmat('%.18n',[1,20])],'HeaderLines',1);
这应该会给您正确的行数。
我在 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。是这个原因吗?
有办法解决这个问题吗?
%.8
如果您打印的小数位数超过 8 位,则
%.8
是不够的。对于这些情况,小数点后 8 位之后的数字可以被视为单独的条目。这将产生比预期更多的数字。您应该为扫描格式中的小数位数使用更高的值。例如,
fid=fopen('BMC3C/example/inputR_revised.tsv','r')
covTable = textscan(fid,['%s',repmat('%.18n',[1,20])],'HeaderLines',1);
这应该会给您正确的行数。