MATLAB Answers

writecell( [.... -inf inf ...] gives 65535 and 65535 in Excel both for -inf and +inf

14 views (last 30 days)
Jos Indenkleef
Jos Indenkleef on 17 Aug 2020
Answered: Maadhav Akula on 20 Aug 2020
ans =
1×5 cell array
{[650]} {[-Inf]} {[-Inf]} {[-Inf]} {[500]}
>> xx = table2cell(ToperLow)
xx =
1×5 cell array
{[650]} {[-Inf]} {[-Inf]} {[-Inf]} {[500]}
writecell( xx, 'test.xls', 'Sheet', 'sheet1', 'UseExcel', false )
Resulting cells in Excel is +65535 instead of - 65535???
650 65535 65535 65535 500


dpb on 17 Aug 2020
Another of the mysteries of Excel.
It doesn't know about IEEE Inf or NaN
There are some kludges you can do like writing a VBA routine something like
Function Inf(Optional Recalc) As Double
On Error Resume Next
Inf = 1/0
End Function
but you have to then use conditional formatting to display the "inf" indicator for the value that is, iirc, returned as (2^1024).
All in all, use 1E99 or some other "magic number" for the purpose or just forget about it...
dpb on 18 Aug 2020
For some purposes, maybe...a string in the column instead of numeric may break import and return as cellstr() though...not convenient.

Sign in to comment.

Answers (1)

Maadhav Akula
Maadhav Akula on 20 Aug 2020
I believe this is how Excel treats Inf and -Inf in a cell, as @Binbin Qi mentioned one workaround would be to write them as strings as mentioned in the following post:
Also the documentation of xlswrite and writetable mention regarding this.
Hope this Helps!


Sign in to comment.

Community Treasure Hunt

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

Start Hunting!