Matlab GUI 错误值

Posted

技术标签:

【中文标题】Matlab GUI 错误值【英文标题】:Matlab GUI Error Value 【发布时间】:2014-12-10 16:24:54 【问题描述】:

我有一个 MATLAB 程序,我正在为它做一个 GUI。它有几个输入和输出,除了一个之外都工作正常,我不知道为什么。

输入是Area_Cov,这个输入在代码中没有改变,只是使用而已。

在 GUI 中,我为它使用了一个编辑框,将它的标签命名为“Area_Cov” 这是编辑框回调函数,我在许多其他框上使用了相同的代码,效果很好。

function Area_Cov_Callback(hObject, eventdata, handles)
% hObject    handle to Area_Cov (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of Area_Cov as text
%        str2double(get(hObject,'String')) returns contents of Area_Cov as a double

v = (get(hObject,'String')); %get recently entered string

if (str2num(v) <= 0)
  waitfor(warndlg('Area value has to be real','!! Warning !!'))
         (warndlg('The value will be set to 10452','!! Warning !!'))
         set(hObject,'String',10452);
else
  Area_Cov = handles.Area_Cov; %update saved value
end

 x = get(handles.Area_Cov,'String'); 
 if isempty(x)
   waitfor(warndlg('Must specify Area Covered','!! Warning !!'))
         (warndlg('Value set to 10452','!! Warning !!'))
          set(hObject,'String',10452);
end


guidata(hObject,handles)

当我按下按钮计算时,我有以下关于 Area_Cov 的信息

Area_Cov=handles.Area_Cov;
assignin('base', 'Area_Cov', Area_Cov);

当我运行代码并按下按钮时,一切似乎都运行良好。 但是当我尝试在 matlab 中检查 Area_Cov 的值时,我总是得到值 259.0017

我删除了那个框,又写了一遍,把Area_Cov改成Area_Covered,检查matlab代码,代码中没有任何地方,或者GUI代码,Area_Cov除了编辑框还有输入,没有任何地方这个值是否等于 259.0017。 此外,如果我不更改框中的值,最初为 10452,则该值将保持不变,否则将仅更改为 259.0017。

代码在许多其他盒子上都可以正常工作,所以我认为这不是问题。

以前有人遇到过这个问题吗?帮助

【问题讨论】:

【参考方案1】:

Area_Cov = handles.Area_Cov; 只是将Area_Cov 设置为句柄,而不是句柄的内容。 (259.0017 可能是这方面的数字表示)。您可能想要将其设置为由str2num(v) 表示的数值,您可以使用它来检查输入的有效性,然后不再使用。

我也不清楚您为什么要两次调用get,以及xv 之间的区别可能是什么。

【讨论】:

即使我删除了 Area_Cov 回调中的所有代码并仅添加 Area_Cov = handles.Area_Cov ,我仍然得到值 259.0017 当我使用 v 而不是 x 时,我认为是相同的,我没有从函数isempty得到相同的结果,但这不是我现在需要解决的问题,可以忽略atm 我是说你不应该Area_Cov = handles.Area_Cov这行,因为它没有给你盒子内容的价值。你应该改用Area_Cov = str2num(v)) 之类的东西。 但是为什么它不只适用于 Area_Cov,我有超过 5 个其他功能相同类型和相同的代码,但不同的名称都可以正常工作 @Necro1992 我不相信。 @Benoit_11 啊,我是手工做的,所以不知道。

以上是关于Matlab GUI 错误值的主要内容,如果未能解决你的问题,请参考以下文章

matlab GUI popupmenu怎么用?

优化求解基于matlab GUI模拟退火算法求解全局最大值最小值问题含Matlab源码 1242期

构建matlab gui时出现未知错误

如何在 MATLAB GUI 中的函数之间传递值?

虹膜识别基于matlab GUI形态学虹膜检测含Matlab源码 959期

水果识别基于matlab GUI形态学水果识别含Matlab源码 907期