Matlab GUI错误值

时间:2014-12-10 16:24:55

标签: matlab user-interface matlab-guide

我有一个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 个答案:

答案 0 :(得分:1)

Area_Cov = handles.Area_Cov;只需将Area_Cov设置为句柄,而不是句柄的内容。 (259.0017可能是数字表示)。你可能想要设置的是str2num(v)表示的数值,用于检查输入的有效性,然后再也不用。

我也不清楚为什么你要拨打get两次,xv之间的差异可能是什么。