decimals and splitting cell arrays

6 views (last 30 days)
Hi,
I am using the example below to split cells and it works good. However, when I use it, it rounds values like 0.00178 to 0.0018. How can I do the same thing, but then keeping all the decimals?
I'm using this code in a 100031x1 cell and I get a double with rounded values
a={'0,0,0,2,2,0.39,0.49'
'0,1,2,2,2,0.34,0.44'}
out=cell2mat(cellfun(@str2num,strrep(a,',',' '),'un',0))
  3 Comments
Stephen23
Stephen23 on 6 Jun 2018
"However, when I use it, it rounds values like 0.00178 to 0.0018"
I doubt that any rounding is occurring. How values are displayed is a totally different thing to what values are stored in memory. Try changing the format.
Thijs Obers
Thijs Obers on 6 Jun 2018
yes, you are right, thank you!

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 6 Jun 2018
Edited: Stephen23 on 6 Jun 2018
There is no rounding occurring. Change the format to precision with which values are displayed, e.g.:
format long
Also note that you can make this conversion more efficiently and securely using sscanf (because unfortunately str2num hides an eval call inside):
>> a = {'0,0,0,2,2,0.39,0.49';'0,1,2,2,2,0.34,0.44'};
>> C = cellfun(@(s)sscanf(s,'%f,',[1,Inf]),a,'uni',0);
>> vertcat(C{:})
ans =
0 0 0 2 2 0.39 0.49
0 1 2 2 2 0.34 0.44

More Answers (0)

Community Treasure Hunt

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

Start Hunting!