I want to make a table, 'uitable', with 4 collumns and a variable number of rows. The number of rows is determined by an edit text box, 'edit1'. The problem is that I want to insert text in the first collumn, but as soon as i insert any caracter that is not a number, the cell automatically goes to NaN. Can you help me?
edit1 = str2num(char(get(hObject,'String')));
if ~isempty(edit1) && edit1>0
edit1 = ceil(edit1);
data = cell(edit1,4);
% convert the values matrix to a cell array
valuesAsCell = mat2cell(data);
% update the table
set(handles.uitable,'Data',valuesAsCell{:});
end

 채택된 답변

Geoff Hayes
Geoff Hayes 2015년 1월 24일

0 개 추천

Diogo - this may be a problem that is similar to http://www.mathworks.com/matlabcentral/answers/169197-nan-elements-during-table-data-input-matlab-gui. Your line of code
data = cell(edit1,4);
creates the cell array where each element is the empty array, []. If you try to populate any of these elements with strings, then you see NaN. Try instead to initialize this array to one of empty strings and reduce your code to simply
data = cell(edit1,4);
data(:) = {''};
% update the table
set(handles.uitable1,'Data',data);
I used the above code in a simple GUI, and was able to enter non-numeric data in any column (as well as numeric data which will still be considered as a string). Note that I removed the code to convert the array to a cell array (the call to mat2cell) since data is already a cell array.

댓글 수: 2

aaaaaannnnnddd IT WORKS!!
thanks Geoff! sorry for my poor search of the problem
Geoff Hayes
Geoff Hayes 2015년 1월 24일
Glad it worked out, Diogo!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Zoltán Csáti
Zoltán Csáti 2015년 1월 23일

0 개 추천

It is because you supplied a string. Convert it to number.
edit1 = str2num(edit1);
edit1 = ceil(edit1);
...

댓글 수: 3

its already in number. check the first line.
edit1 = str2num(cha* r(get(hObject,'String')));
if ~isempty(edit1) && edit1>0
...
what i meant was, when inserting data in the UI table, the first collumn must be a string, the other 3 are numbers. For example, for edit1=3:
String | | Number | | Number | | Number
ex1 | | 15 | | 2034 | | 3000
ex2 | | 35 | | 2064 | | 2056
ex3 | | 21 | | 2012 | | 2076
with my code i can´t insert the string on the first collumn, but the construction of the table and the other collumns work fine.
Could you send me your program. I would look at it.
the gui is in portuguese, in case you need to translate. thank you in advance!

댓글을 달려면 로그인하십시오.

카테고리

질문:

2015년 1월 23일

댓글:

2015년 1월 24일

Community Treasure Hunt

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

Start Hunting!

Translated by