How to set data in the same uitable

5 views (last 30 days)
yu yue
yu yue on 17 Oct 2016
Commented: yu yue on 17 Oct 2016
I have a 3 columns x 6 rows uitable, the user will input data in column 1 & column 2, column 3 will display the result of (column 2 - column 1). My code is:
T_Data = get(handles.t_data, 'data');
t11=T_Data{1,1};
t21=T_Data{2,1};
t31=T_Data{3,1};
t41=T_Data{4,1};
t51=T_Data{5,1};
t61=T_Data{6,1};
t12=T_Data{1,2};
t22=T_Data{2,2};
t32=T_Data{3,2};
t42=T_Data{4,2};
t52=T_Data{5,2};
t62=T_Data{6,2};
Net1= t12-t11;
Net2= t22-t21;
Net3= t32-t31;
Net4= t42-t41;
Net5= t52-t51;
Net6= t62-t61;
set(handles.T_Data{1,3},'data',Net1);
But I get the error:
Cell contents reference from a non-cell array object.
Why?
How can I display the number I wanted in the same uitable?
Thank you.

Accepted Answer

Adam
Adam on 17 Oct 2016
Edited: Adam on 17 Oct 2016
You haven't shown how you create your table, but I assume 'Data' is a numeric array, not a cell array.
Why would you create all those ugly variables though instead of just doing maths with the data as they already are in the array?
T_Data(1,3) = T_Data(1,2) - T_Data(1,1);
or simply
T_Data(:,3) = T_Data(:,2) - T_Data(:,1);
to do all at once, then after editing the whole thing just put it back into your table 'Data' property:
set(handles.t_data, 'data', T_Data);

More Answers (1)

Image Analyst
Image Analyst on 17 Oct 2016
T_Data may be a cell array if some of the table entries were text/strings. In that case you'd need to use {} to get the contents of the numeric cells:
T_Data{1,3} = T_Data{1,2} - T_Data{1,1};
because using () would refer to actual cells, not the contents of the cells. If T_Data is not a cell, just do it like Adam said.

Categories

Find more on Operators and Elementary Operations 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!