Как правильно прочитать прочитанные значения из строки текстового файла в матрицу, используя matlab - PullRequest
0 голосов
/ 27 января 2020

х = cell2mat (TextScan (линия, '% * s% F% F% F% F% F% F% F% F% F', 'CollectOutput', 1, 'EmptyValue', 0)) *; 1001 *

заданные значения как R17 19311104.430 8 103337621.26208 19311107.476 7

Я должен получить выходные данные как 19311104.4300000 8 103337621.262080 0 0 0 0 19311107.4760000 7

0, 19000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000640000000000000000646400000000641664000000006440404040404040 Тп 0 0

1 Ответ

0 голосов
/ 27 января 2020

почему вы предполагаете вывод

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...