Filter löschen
Filter löschen

How do I save a cell array that has both text and numeric data?

1 Ansicht (letzte 30 Tage)
T Shep
T Shep am 15 Nov. 2016
Kommentiert: Image Analyst am 16 Nov. 2016
I have a data set where I would like to extract alphanumeric data to a text file. E.g. here is one 1x6 cell array:
37 0 240 0.436 'cat dog mouse' 10
I would like to save this data into a text file but I cannot do that with the fprintf command since it contains alphanumeric data. How do I do this?

Akzeptierte Antwort

dpb
dpb am 15 Nov. 2016
>> fmt=[repmat('%5d',1,3) '%8.4f ' '%s %5d\n'];
>> fprintf(fmt,c{:})
7 0 240 0.4360 cat dog mouse 10
>>

Weitere Antworten (1)

Image Analyst
Image Analyst am 15 Nov. 2016
Here's one way:
ca = {37, 0, 240, 0.436, 'cat dog mouse', 10}
fid = open(filename, 'wt'); % File on disk
% fid = 1; % Command window.
fprintf(fid, '%f, %f, %f, %f, %s, %d\n', ca{:});
close(fid);
  4 Kommentare
T Shep
T Shep am 16 Nov. 2016
I see. I think I am getting the hang of it. What if I want to now open up that text file so that each number is in a separate cell and the string 'cat dog mouse' is back in it's own cell (without commas)? i.e. read it in so that I am back to: 37 0 240 0.436 'cat dog mouse' 10
Do I just use....
textread(fid, '%f, %f, %f, %f, %s,%f,%f, %d\n')
Image Analyst
Image Analyst am 16 Nov. 2016
I don't know. You could always try it. I think they recommend textscan() now instead of textread(). Or you could use fgetl() to get just one line and then use textscan() or sscanf() on just that line.
You might also be able to use importdata() or readtable(). See which function lets you read it in with the least fuss.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Data Import and Export finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by