2016-01-04 2 views
2

Итак, у меня есть массив ячеек, содержащий 5 элементов. Каждый элемент является п на 6 матрицу, которая выглядит примерно так:Печать элементов ячеек в текстовый файл

31399.5 24581.8 24083.9 22764.7 22458 15473.5 
81169.4 83739.2 82516.1 84139.6 83552.3 55342.7 
41356.6 38413.3 37613 34329.8 38681.8 23949.9 

Для каждого элемента в массиве, я хочу, чтобы распечатать соответствующую матрицу в виде текстового файла в том же формате, что и выше - отделяя каждый элемент массива ячеек пустой строкой.

Теперь я могу записать каждый элемент массива ячеек в текстовый файл. Однако программа не пишет каждую строку на новой строке, она выглядит примерно так:

31399.5 24581.8 24083.9 22764.7 22458 15473.5 81169.4 83739.2 82516.1 84139.6 83552.3 55342.7 41356.6 38413.3 37613 34329.8 38681.8 23949.9 

Он записывает каждую матрицу как одну строку. Это мой код (labels является 1 массивом 5 клеток):

fid = fopen('labels.txt','wt'); 
for i = 1:length(labels) 
    fprintf(fid,'%g\t',labels{i}'); 
    fprintf(fid,'\n'); 
end 
fclose(fid) 

Как я могу изменить это так, что данные представлены по строкам? Любая помощь высоко ценится.

ответ

2

Использование fprintf для печати матриц никогда не бывает очень дружелюбным. Попробуйте использовать dlmwrite вместо fprintf, а в случае, когда вы хотите добавить результаты в файл, используйте флаг -append. Вы также хотите настроить точность с dlmwrite по номерам раундов по умолчанию. Нечто подобное может работать:

for i = 1:length(labels) 
    dlmwrite('labels.txt', sprintf('Label %d', i), '-append'); 
    dlmwrite('labels.txt', labels{i}, '-append', 'precision', 6); 
    dlmwrite('labels.txt', ' ', '-append'); 
end 

Примите к сведению, что я должен был сделать что-то вроде хака, чтобы выполнить возврат каретки, прежде чем написать следующую матрицу для добавления. Проще говоря, я добавил пространство после матрицы, чтобы создать новую строку при добавлении. Для каждого возврата каретки вы увидите пустую строку с одним пробелом, но я предполагаю, что это не будет проблемой. Я также взял на себя смелость в добавлении в Label i перед каждой матрицей, где i является матрицей, видимой в ячейке i.

+1

Отлично, гораздо проще работать с fprintf. Это делает именно то, что я хочу, спасибо. –

+1

@eyesenberg мое удовольствие. Удачи! – rayryeng

+0

@rayreng Эй, я изо всех сил пытался написать «Label i» поверх каждой матрицы в текстовом файле, чтобы отделить их (где i - i-й индекс в массиве ячеек). Я использую fprintf (...) для записи заголовка, но получаю странные результаты. Могли бы вы настроить код, чтобы он это сделал? Я не уверен, почему я нахожу это трудным. Опять же, благодарю за любую помощь :) –

Смежные вопросы