Saving Cell array and String to text file.

76 Ansichten (letzte 30 Tage)
pr
pr am 30 Mär. 2015
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?

Akzeptierte Antwort

Jan
Jan am 30 Mär. 2015
fid = fopen(FilePath,'w');
CT = Cell_in.';
fprintf(fid,'%s\n', CT{:});
fclose(fid)
  2 Kommentare
pr
pr am 31 Mär. 2015
Bearbeitet: pr am 31 Mär. 2015
@ Jan Simon and Konstantinos Sofos : Thank you for the solutions.
Hamdullah Livaoglu
Hamdullah Livaoglu am 4 Jun. 2018
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?,

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Konstantinos Sofos
Konstantinos Sofos am 30 Mär. 2015
Bearbeitet: Konstantinos Sofos am 30 Mär. 2015
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 am 4 Sep. 2017
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

Community Treasure Hunt

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

Start Hunting!

Translated by