필터 지우기
필터 지우기

Saving Cell array and String to text file.

조회 수: 65 (최근 30일)
pr
pr 2015년 3월 30일
댓글: Hamdullah Livaoglu 2018년 6월 4일
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?

채택된 답변

Jan
Jan 2015년 3월 30일
fid = fopen(FilePath,'w');
CT = Cell_in.';
fprintf(fid,'%s\n', CT{:});
fclose(fid)
  댓글 수: 2
pr
pr 2015년 3월 31일
편집: pr 2015년 3월 31일
@ Jan Simon and Konstantinos Sofos : Thank you for the solutions.
Hamdullah Livaoglu
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
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,

Simon Wiedemann
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

카테고리

Help CenterFile Exchange에서 Cell Arrays에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by