表数据输入期间的NaN元素- Matlab GUI

5次观看(过去30天)
我有一个简单的图形用户界面与一个表:三列,全部设置为可编辑,包含文本。通过一个额外的按钮,我可以将空行附加到表的末尾。然而,每当我在表底部的新的空单元格中写入内容并点击回车时,值自动更改为NaN。我发现如果我在单元格中写入一个数值,没有问题,因为某种原因,matlab处理新的单元格元素时,就好像它们的类型是数值一样。有什么解决办法吗?我试图添加一个CellEditCallback到对象,但值更新似乎发生在回调将被计算之前…
2的评论
彼得波尔达
彼得波尔达 2015年1月23日
在我的例子中,将新行初始化为某个值——如下面的Geoff所建议的那样——解决了这个问题。然而,在你的情况下,这可能也有用:
数据(+ 1,:)= {“名字”Counter1-counter2 +1 0 0 0 0};
注意花括号,否则会抛出错误!如果您不能编辑第一列,那么您可能必须设置ColumnEditable属性(如果您还没有这样做的话)。

登录发表评论。

接受的答案

杰夫•海斯
杰夫•海斯 2015年1月8日
Peter—您是如何创建新行的?每个元素是单元格串还是空矩阵?如果我创建一个新行,比如
%获取当前数据
data =得到(handles.uitable1“数据”);
%确定列的数量,并创建空矩阵的新行
numCols =大小(数据,2);
启动=细胞(1、numCols);
%将新行添加到数据中,并将其保存到表中
数据=[数据;启动];
集(handles.uitable1,“数据”、数据);
然后我观察到与您相同的行为-每个非数字条目被转换为NaN,因为我的新行中的所有元素都是空矩阵(即[])。
但如果我将新行创建为字符串行通过为的每个元素赋值 启动 到具有空字符串as的单元格
启动=细胞(1、numCols);
启动(,)= {};
或者更简单的
启动= repmat ({} 1 numCols);
那么我就能够将数值和非数值数据添加到表的新行中,因为行中的每个元素现在都是字符串。
3评论
亚当·塔希尔
亚当·塔希尔 2015年5月13日
嗨,我正在尝试做同样的事情,但这次通过添加新的列。添加新行可以,但不能添加列。
我使用了newRow代码来完成它:
data =(处理。场上,“数据”);
numRows =大小(数据,2);newCol =细胞(numRows, 1);% or newCol = repmat({"},1,numRows);数据=[数据;newCol];集(handles.uitable,数据,数据);
它所做的是,当我按我的“添加列”按钮,它一直添加行而不是列。
谢谢你的帮助!

登录发表评论。

更多的答案(0)

世界杯预选赛小组名单社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!世界杯预选赛小组名单

开始狩猎!

Baidu
map