Sum up a value to a row and create new colum at the end of the cell

1 view (last 30 days)
How can I add to a row 1 unit? I have the following cell:
A= {12 1996 1999
15 1999 2002
26 1997 2001
43 1999 2008
59 1995 2000}
I would like the output to be:
Output={A= {12 1996 1999 2000
15 1999 2002 2003
26 1997 2001 2004
43 1999 2008 2009
59 1995 2000 2001}
I tried this:
A(:,end+1) = cell2mat(A(:,3))+1;
It gives me the error: 'Conversion to cell from double is not possible.'
But if I take out the 'cell2mat', I get the error: 'Undefined function 'plus' for input arguments of type 'cell'.'
Does someone know how to solve the problem? Thank you

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 27 Jul 2014
Edited: Azzi Abdelmalek on 27 Jul 2014
cell2mat(cellfun(@(x) [x x+1],A,'un',0))
%or
[A num2cell([A{:}]+1)']
  2 Comments
Maria
Maria on 27 Jul 2014
ok I omited the part that I have more rows that I presented in the example. I believe that's why the codes are not working. I will edit. Sorry
Maria
Maria on 27 Jul 2014
thanks, it works perfectly like this!
A=[A num2cell([A{:,3}]+1)'];

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 27 Jul 2014
A(:,end+1) =cellfun(@(x)x+1,A(:,end),'un',0)

Tags

Community Treasure Hunt

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

Start Hunting!