Запись в файл

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

Downshifta
Пользователь
Сообщения: 2
Зарегистрирован: Ср июл 10, 2019 10:08 am

Запись в файл

Сообщение Downshifta » Ср июл 10, 2019 10:30 am

Здравствуйте! Результатом работы моей программы является одномерный массив array = [ D E sum s k], где первые два значения типа double, а оставшиеся три int. Я записываю этот массив в .txt файл. Нужно записывать все в столбец, разделяя запятыми. То есть если есть массив [1.0 2.0 1 2 3], то в файле он должен выглядеть как:
1.0 ,
2.0 ,
1 ,
2 ,
3 ,
Проблема в том, что мне нужно, чтобы множество программ дописывало в этот файл, не затирая предыдущих данных (дозапись должна производится в следующие столбцы).
Писать в строку - проблем нет. Если пытаюсь поменять на столбец, то при транспонировании и использовании sscanf - все равно пишет в строку
При использовании dlmwrite затирает предыдущее, хоть файл и открыт в формате а+. Прошу вашей помощи, заранее спасибо
Прикрепляю реализацию записи в строку.

Код: Выделить всё

nnarray = [ E D sum s k];
fileID = fopen('C:\Users\Александр\Desktop\report2sigma.txt','a+');
formatSpec = '%.2f %.2f %d %d %d';
fprintf(fileID, formatSpec, nnarray);
fprintf(fileID, '\n');
fclose(fileID);

CrabAlexey
Пользователь
Сообщения: 38
Зарегистрирован: Ср май 23, 2018 4:02 pm

Re: Запись в файл

Сообщение CrabAlexey » Чт июл 11, 2019 9:43 am

На скорую руку попробуйте так, правда все числа пишутся в одном формате:

Код: Выделить всё

nnarray = [ E D sum s k];% формирование массива с новыми E D sum s k
C = importdata('C:\Users\Александр\Desktop\report2sigma.txt',',');% импорт исходного массива из txt-файла, с запятой в роли разделителя (можно изначально и пустой файл)
sz=size(C);% определение размера массива, следовательно числа строк и столбцов
i=sz(1,2)+1;% создание переменной i, обозначающей новый столбец массива С
C(1,i)=nnarray(1,1);% запись в 1 строку нового столбца массива С новое значение E
C(2,i)=nnarray(1,2);% запись в 2 строку нового столбца массива С новое значение D
C(3,i)=nnarray(1,3);% запись в 3 строку нового столбца массива С новое значение sum
C(4,i)=nnarray(1,4);% запись в 4 строку нового столбца массива С новое значение s
C(5,i)=nnarray(1,5);% запись в 5 строку нового столбца массива С новое значение k
dlmwrite('C:\Users\Александр\Desktop\report2sigma.txt',C,'precision','%.2f','delimiter',',')%запись массива С с запятой в роли разделителя
open C:\Users\Александр\Desktop\report2sigma.txt% открытие конечного txt-файла