Matlab тексты может дать мне неправильное количество строк - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть имена файлов inputR_revised.tsv на https://www.dropbox.com/s/vtby4027rvprhga/inputR_revised.tsv?dl=0
В Matlab я набрал

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

Я получаю covTable {1,1} размером 41699 раз 1. Однако когда я печатаюследующее в терминале

wc -l inputR_revised.tsv

Я получаю 41677. Почему это отличается?Я использовал sed и cut для изменения исходного файла, чтобы получить inputR_revised.tsv.Это причина?

Есть ли способ это исправить?

1 Ответ

0 голосов
/ 12 ноября 2018

%.8 недостаточно, если у вас есть десятичные числа, напечатанные более чем из 8 цифр.Для этих случаев цифры после 8-го знака после запятой можно рассматривать как отдельную запись.Это сделает больше цифр, чем ожидалось.Вы должны использовать более высокое значение для числа десятичных знаков в формате сканирования.Например,

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

Это должно дать вам правильное количество строк.

...