Conversion of arrays to cell array

2 views (last 30 days)
I have time series data as a pivot in an array.
The first row and first column are headers.
x =
NaN 101 102 103 104
731034 4 3 NaN 3
731035 5 NaN 2 1
731036 6 2 5 2
731037 3 1 4 7
I would like to write the above data into an excel but the first column needs to be dates and not datenum. I tried to create a cell array contaning datestr and other columns and then write it to an excel, but I get an error saying "Element of an array cannot be a character matrix" when data is being written to the excel.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 9 Jan 2013
Edited: Azzi Abdelmalek on 9 Jan 2013
x={'datenum' 'col1' 'col2' 'col3' 'col4'
731034 4 3 NaN 3
731035 5 NaN 2 1
731036 6 2 5 2
731037 3 1 4 7}
x(2:end,1)=cellstr(datestr(cell2mat(x(2:end,1))))
  2 Comments
Azzi Abdelmalek
Azzi Abdelmalek on 9 Jan 2013
Edited: Azzi Abdelmalek on 9 Jan 2013
I don't know if you are working with cell or double array
x = [NaN 101 102 103 104
731034 4 3 NaN 3
731035 5 NaN 2 1
731036 6 2 5 2
731037 3 1 4 7]
out=num2cell(x)
idx=find(~isnan(x(:,1)))
out(idx,1)=cellstr(datestr(x(idx,1)))
Ms. Mat
Ms. Mat on 9 Jan 2013
Hi,
I am working with a double array. num2cell and cellstr works fine.
Thank You !
X = [NaN 101 102 103 104;
731034 4 3 NaN 3;
731035 5 NaN 2 1;
731036 6 2 5 2;
731037 3 1 4 7]
XCell = num2cell(X)
XCell(2:end,1) = cellstr(datestr(X(2:end,1)))

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!