Как сохранить данные в текстовый файл в заданном формате?

StackOverflow https://stackoverflow.com/questions/926741

Вопрос

Я хочу сохранить матрицу в текстовый файл, чтобы я мог прочитать ее с помощью другой программы.Прямо сейчас я использую:

save('output.txt', 'A','-ascii');

Но это сохраняет мой файл как

6.7206983e+000  2.5896414e-001
6.5710723e+000  4.9800797e-00
6.3466334e+000  6.9721116e-001
5.9975062e+000  1.3346614e+000
6.0224439e+000  1.8127490e+000
6.3466334e+000  2.0517928e+000
6.3965087e+000  1.9721116e+000

Но я бы хотел, чтобы они были сохранены без "электронной нотации" и не со всеми цифрами.Есть ли простой способ сделать это?

Редактировать:Спасибо!Это работает просто отлично.Извините, но я думаю, что перепутал вашу правку, используя откат.

Это было полезно?

Решение

Я бы использовал fprintf функция, которая позволит вам самим определить, в каком формате выводить данные.Например:

fid = fopen('output.txt', 'wt');
fprintf(fid,'%0.6f %0.6f\n', A.');
fclose(fid);

Это выведет матрицу A с точностью до 6 цифр после запятой.Обратите внимание, что вы также должны использовать функции fopen и fclose.

Другие советы

То же самое с решением gnovice, если вам нужна производительность и пользовательское форматирование.

dlmwrite дает вам некоторый контроль (глобальный, а не для каждого поля) над форматированием.Но он страдает от более низкой производительности.Я запускал тест несколько лет назад, и dlmwrite был примерно в 5-10 раз медленнее, чем решение fopen / fprintf / fclose.(редактировать:Я имею в виду большие матрицы, такие как матрица 15x10000)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top