2009-05-29 4 views
3

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

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 

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

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

+0

Нет проблем, форматирование по-прежнему выглядит неплохо ... и вы получили значок «Очистка»! ;) – gnovice

ответ

10

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

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

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

+0

В редакторы обратите внимание, что в коде необходимо преобразовать '.'', чтобы транспонировать' A' в матрицу 2 на-N для FPRINTF для чтения из столбца. – gnovice

3

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

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