Как сохранить данные в текстовый файл в заданном формате? - PullRequest
3 голосов
/ 29 мая 2009

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

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

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

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

Ответы [ 2 ]

10 голосов
/ 29 мая 2009

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

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

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

3 голосов
/ 29 мая 2009

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

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

...