почему вы предполагаете вывод
19311104.4300000 8 103337621.262080 0 0 0 0 19311107.4760000 7
от входа
R17 19311104.430 8 103337621.26208 19311107.476 7
?
Ваша операция textscan(line,'%*s%f%f%f%f%f%f%f%f%f','CollectOutput',1,'EmptyValue',0)
собирает 9 чисел с плавающей запятой из строка ввода. Ваша входная строка содержит только 5 чисел с плавающей точкой, это означает, что первые 5 %f
получат значение, а остальные 4 станут NaN
(или в вашем случае 0
из-за вашего параметра 'EmptyValue',0
).
Следовательно, все работает как положено.
Однако, если вы хотите достичь желаемого результата, вам нужно использовать более «причудливый» алгоритм, например:
x = zeros(1,9);
tmp=cell2mat(textscan(line,'%*s%f%f%f%f%f%f%f%f%f','CollectOutput',1));
x(1:3)=tmp(1:3);
x(end-1:end) = tmp(4:5)