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
,以及x
和v
之间的区别可能是什么。
【讨论】:
即使我删除了 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模拟退火算法求解全局最大值最小值问题含Matlab源码 1242期