Saving Cell array and String to text file.
조회 수: 65 (최근 30일)
이전 댓글 표시
I have a cell_in (combination of numeric, date&time & text data) of size mxn and need to save data in a text file.
Here is the code I have written and it works fine
fid = fopen(FilePath,'w');
for rows = 1:size(Cell_in,1)
fprintf(fid,'%s\n',Cell_in{rows,:});
end
fclose(fid)
Instead of doing it in a loop I changed it to string and saved data to text file using the following code
fid = fopen(FilePath,'w');
fprintf(fid,'%s\n',char(Cell_in));
fclose(fid)
and the text file is completely messed up. Am I doing something wrong?
1.If so what did I do wrong?
2. When loading a txt file to MATLAB one can extract the data as cell using
fid = fopen(FileName,'r');
txt_data = textscan(fid,'%s','delimiter','\n');
fclose(fid);
but why not the other way round is possible?
댓글 수: 0
채택된 답변
Jan
2015년 3월 30일
fid = fopen(FilePath,'w');
CT = Cell_in.';
fprintf(fid,'%s\n', CT{:});
fclose(fid)
댓글 수: 2
Hamdullah Livaoglu
2018년 6월 4일
Thanks Jan we owe you big gratitudes:) Howeverit doesnt work in loop like this: fprintf(fid,'%5.4f %5.0f %5.2f %5.0f %5.0f %5.2f %s\n',[kappa;R;snr;fik;fek;cor;date{:}]); all variables are doubles except date. it gives:"Error using vertcat Dimensions of matrices being concatenated are not consistent." how can i handle this error?,
추가 답변 (2개)
Konstantinos Sofos
2015년 3월 30일
편집: Konstantinos Sofos
2015년 3월 30일
Hi,
Can you try
fid = fopen(FilePath,'w');
fprintf(fid,'%s\n',cellfun(@(x) char(x),Cell_in,'UniformOutput',false));
fclose(fid)
or
fid = fopen(FilePath,'w');
fprintf(fid,'%s\n',char(cellfun(@(x) char(x),Cell_in,'UniformOutput',false)));
fclose(fid)
or you can convert to table and then export if you use R2013b or later
Regards,
댓글 수: 0
Simon Wiedemann
2017년 9월 4일
Hello there,
i have a problem with writing many files.
There are some (~20) Text-Files with strings of different lenght. I need to copy these files multiple times and change 1-5 lines in the copied files.
Till now i load a File in a cell array, change the lines and write them back to a new file with function fprintf. This is very slow so it takes very long to do this for every file.
Is it possible to copy a file and then only change one line in the already stored file? And would that be faster? Or is a other faster way?
Best regards, Simon
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Cell Arrays에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!