convert data celll array to double array and write to .xls or .csv

2 views (last 30 days)
Hi,
I have a data cell array "Data" which has 10 cells but each cell have different number of rows (see the image below). Can anybody suggest me a way to store in a "example" double array like this below.?
This is an example of 10 cells but I have 200 cells like this the same way alternatively changes row numbers following the same pattern.
example =
col1 col2 col3...col10
row1 0.5 0.56 0.26 0.01
row2 2.45 3.25 0.45 10.2
.
.
row18262 0.9 0.32 1.11 2.5
row18263 N/A 0.25 N/A 4.5
or if anyone can suggest me a way to write the "Data" cell array into .xls file or .csv file, thats fine with me too.
My main objective is to somehow write the "Data" cell array to .xls for .csv file.
Thanks in advance.

Answers (2)

Adam
Adam on 26 Sep 2014
You could just set the missing values to NaN and have a 18263 * 10 matrix of doubles (or whatever size your real problem is) with the NaNs included. NaNs also have the advantage the you can plot data with them in (if you wish) and they behave sensibly by just not plotting rather than throwing an error or giving silly spikes as e.g. a 0 or -1 or some other invalid indicator value would.
I've never written data to an xls or csv file so I don't really know if you need it as doubles to do that or whether you can just write the cells as they are or with NaNs appended.
  4 Comments
Damith
Damith on 26 Sep 2014
I need to read from RowID matrix from row 1 to 10 of col 2 and 3. And use those row numbers row1 and row 2 to read from col 5 of Gist144. This is working fine in MATLAB 2011 version but the error I am getting in 2014 version.
Hope I explained it well.
Adam
Adam on 26 Sep 2014
You need to look at the class of your variables. It appears your variable has been changed to be a 'table' (doc table) in R2014a. Tables did not exist in R2011

Sign in to comment.


Image Analyst
Image Analyst on 27 Sep 2014
How about you just write each cell to it's own worksheet, so you'd have 10 worksheets in the workbook? It's best if you use ActiveX but you can use xlswrite() also - it's just slower.
for ws = 1 : 10
thisArray = Data{ws}; % Extract just this cell's contents.
sheetName = sprintf('Data %d', ws);
xlswrite(fullFileName, thisArray, sheetName, 'A1');
end

Categories

Find more on Tables in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!