【问题标题】:Content of a uitable is not being saved未保存 uitable 的内容
【发布时间】:2019-09-17 01:24:37
【问题描述】:

我正在尝试为几个目的编写一个 GUI,看起来像这样, 其中之一是通过 uitable 根据用户输入创建矩阵,因此在 untitled_OpeningFcn 中预定义了大小并启用了单元格编辑

set(handles.uitable1,'Data',cell(2,3));
set(handles.uitable1,'ColumnEditable',true(1,3))

pushbutton2_Callback内部,我尝试读取写入表格的数据,将其存储并显示在静态文本字段中:

value=get(handles.uitable1,'Data');
value=str2double(value);
set(handles.text2,'String',num2str(value));

但是当它运行时,文本字段显示"NaN",所以数据没有被保存。

还需要什么?

更新 感谢 aswer 它没有给出预期的结果 使用原始代码时,它会给出下一个输出
当使用建议的 mat2str 时,我得到了这个

【问题讨论】:

  • 你试过debugging this吗?我的直觉是 value=get(handles.uitable1,'Data'); 不会产生任何可转换为数字的东西(例如,试试这个:str2double({1,2,3;4,5,6})),因此随后的 str2double 失败。如果handles.uitable1.Data 已经包含数字,则在其上应用str2double 只会使其变为NaN(例如str2double(magic(3)))。

标签: matlab user-interface user-input matlab-guide matlab-uitable


【解决方案1】:

我相信你的问题的原因是这条线

value = get(handles.uitable1,'Data');

不会产生任何可转换为数字的内容。 考虑以下示例:

hF = uifigure(); % works the same way with `figure()`.
hT = uitable(hF,'Data',[1 2 3; 4 5 6]);

然后,考虑以下几点:

>> hT.Data
ans =
     1     2     3
     4     5     6

>> class(hT.Data)
ans =
    'double'

>> str2double(hT.Data)
ans =
   NaN

>> mat2str(hT.Data)
ans =
    '[1 2 3;4 5 6]'

总之——你需要的可能是mat2str

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多