NaN elements during table data input - Matlab GUI
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Peter Borda
il 7 Gen 2015
Commentato: Adam Taher
il 13 Mag 2015
I have a simple gui with a table: three columns, all set to editable, containing texts. With an additional button I can append empty rows to the end of the table. However, every time I write something in the new, empty cells at the bottom of the table and hit enter the value automatically changes to NaN. I've figured out that if I write a numerical value in the cells, there's no problem, so because of some reason matlab handles the new cell elements as if their type would be numeric. Any ideas how to solve this? I tried to add a CellEditCallback to the object, but the value update seems to happen before the callback would be evaluated...
2 Commenti
Baris Gungordu
il 19 Gen 2015
Dear Peter,
I have the same problem. I want the user to define only the first column for each added row. However, I could not apply your code.
I create my table with the following code: (Counters are used to number the rows created)
counter1 = counter1 + 1;
data = get(handles.uitable1, 'Data');
data(end+1,:) = [0 counter1-counter2+1 0 0 0 0];
set(handles.uitable1,'Data',data)
The rows created are all 0's and user can edit it. I want the first 0 to be 'Name' and to be editable by the user. I appreciate if you can give me an idea.
Risposta accettata
Geoff Hayes
il 8 Gen 2015
Peter - how are you creating the new row? Is each element (of it) a cell string or an empty matrix? If I create my new row like
% get the current data
data = get(handles.uitable1,'Data');
% determine the number of columns and create the new row of empty matrices
numCols = size(data,2);
newRow = cell(1,numCols);
% add the new row to data and save it to the table
data = [data ; newRow];
set(handles.uitable1,'Data',data);
then I observe the same behaviour as you - each non-numeric entry is converted to NaN since all elements in my new row are empty matrices (i.e []).
But if I create the new row as a row of strings by assigning each element of newRow to a cell with an empty string as
newRow = cell(1,numCols);
newRow(:) = {''};
or the simpler
newRow = repmat({''},1,numCols);
then I am able to add both numeric and non-numeric data to the new row of the table since each element in the row is now a string.
3 Commenti
Adam Taher
il 13 Mag 2015
Hi, i'm trying to do the same thing, but by adding new columns this time. Adding new rows works fine, but not columns.
I used the newRow code to do it:
data = get(handles.uitable, 'data');
numRows = size(data,2); newCol = cell(numRows,1); % or newCol = repmat({''},1,numRows); data = [data ; newCol]; set(handles.uitable,'Data',data);
What it does is when i press my "Add column" push button, it keeps adding rows instead of columns.
Thanks for the help!
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!