Я пытаюсь читать данные из файлов по строкам, используя fgets
. У меня есть несколько строк этого Формат-Извлечение данных из строки в matlab
0.0000 -0.5808 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0
пространство между каждым является переменной.
str=fgets(fid)
с помощью этого я получаю весь string.I хочет извлечь информацию из этой строки и изменить values.For например, я хочу изменить первые два float
значения и сказать, второй последний integer.So после изменений это будет мой новый лайн-
0.4500 9.5808 0.0000 F 0 0 0 0 0 0 0 0 0 0 6 0
Один из способов сделать это, чтобы идти по всей длине символа строки по характеру, получить значения между spaces
преобразовать их в float
или integer
и заменить их в string.I хотят знаете, есть какой-то другой метод, с помощью которого я могу извлечь информацию иона без прохождения всей строки. Потому что формат строки всегда одинаковый - три значения float, за которыми следует символ, за которым следуют 12 целых чисел. Есть ли способ получить доступ к этим элементам напрямую?
Редактировать - Чтобы быть точным, я могу сделать что-то вроде следующего, который я сделал в c
.Это довольно просто-
sscanf(str,"%f %f %f %c %d %d ",&a,&b,&c,&d,&e,&f);
Таким образом, с помощью этого я мог бы легко, что я want.So , есть что-то подобное в Matlab?
А, да. Я считаю, что 'strread()' - это то, что вы ищете. Проверьте это здесь: http://www.mathworks.com/help/matlab/ref/strread.html – Bobbyrogers
Функции ['sscanf'] (http://mathworks.com/help/matlab/ref/sscanf.html) и ['fscanf'] (http://mathworks.com/help/matlab/ref/fscanf.html) также существует в Matlab, и синтаксис очень похож на эквивалент' C', если вы привыкли к нему. – Hoki
@Hoki yes, но 'sscanf' в matlab не позволяет нам контролировать выходные переменные. Если я не ошибаюсь, у нас может быть только один вывод в' sscanf' – LifeIsGood