Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 在MATLAB中更新GUI轴_User Interface_Matlab - Fatal编程技术网

User interface 在MATLAB中更新GUI轴

User interface 在MATLAB中更新GUI轴,user-interface,matlab,User Interface,Matlab,我正在为我创建的一个程序制作一个GUI,在这个程序中,我需要能够更改梁上荷载的位置。我已经正确设置了轴和滑块,但我不确定如何更新轴,因为我在互联网上找不到任何示例来说明如何进行更新 目前,当我移动负载时,位置会正确更新,但旧位置也会保留在屏幕上,这很烦人 有人能推荐一些好的例子来说明如何做到这一点,或者有人对如何刷新轴有什么建议吗 这是滑块回调(我没有包括create_fcn函数)。另外,代码中有很多注释,因为我使用了Guide函数来制作GUI 请注意,滑块的输入是梁总长度的一个比例(十进制)

我正在为我创建的一个程序制作一个GUI,在这个程序中,我需要能够更改梁上荷载的位置。我已经正确设置了轴和滑块,但我不确定如何更新轴,因为我在互联网上找不到任何示例来说明如何进行更新

目前,当我移动负载时,位置会正确更新,但旧位置也会保留在屏幕上,这很烦人

有人能推荐一些好的例子来说明如何做到这一点,或者有人对如何刷新轴有什么建议吗


这是滑块回调(我没有包括create_fcn函数)。另外,代码中有很多注释,因为我使用了Guide函数来制作GUI

请注意,滑块的输入是梁总长度的一个比例(十进制)

显然,我希望保持绘制其他线条,但在移动滑块时更改PL1Draw。请你解释一下我要做什么

非常感谢


James

我假设您已经绘制了一个梁,当您更改滑块值时,梁应该弯曲。由于您能够将新位置绘制到轴中,因此我假设您知道如何编写回调。我进一步假设情节的某些部分应该保持不变,而某些部分应该改变

要更改需要更改的零件,最简单的方法就是删除它们,然后重新绘制。为了从绘图中删除特定项目,最好对其进行标记。因此,您的绘图将如下所示

%# remove the old position
%# find the handle to the old position by searching among all the handles of 
%# the graphics objects that have been plotted into the axes
oldPosHandle = findall(handles.axes1,'Tag','position');
delete(oldPosHandle);

%# plot new position
PL1Draw = line([zpl1 zpl1],[SH/2 PL1*10]); 
%# add the tag so that you can find it if you want to delete it
set(PL1Draw,'Tag','position');
注1

要使GUI响应更快(如果需要),请不要删除和重新打印,而是更改旧位置对象的“扩展数据”和“YData”属性

注2

如果尚未执行此操作,请将plotting函数(更新绘图中的所有内容,而不仅仅是加载位置的函数)放在单独的函数中,而不是放在滑块的回调中,并让滑块回调调用plot函数。通过这种方式,您可以从几个按钮和滑块调用相同的绘图函数,这使得代码更易于维护

编辑


我已经更新了命令。请注意,没有特殊的“标记”功能“标记”是每个图形对象的属性,如“单位”或“颜色”。它只是帮助您标记图形对象,这样您就不需要记住控制柄。

我假设您已经绘制了一个梁,该梁应该在更改滑块值时弯曲。由于您能够将新位置绘制到轴中,因此我假设您知道如何编写回调。我进一步假设情节的某些部分应该保持不变,而某些部分应该改变

要更改需要更改的零件,最简单的方法就是删除它们,然后重新绘制。为了从绘图中删除特定项目,最好对其进行标记。因此,您的绘图将如下所示

%# remove the old position
%# find the handle to the old position by searching among all the handles of 
%# the graphics objects that have been plotted into the axes
oldPosHandle = findall(handles.axes1,'Tag','position');
delete(oldPosHandle);

%# plot new position
PL1Draw = line([zpl1 zpl1],[SH/2 PL1*10]); 
%# add the tag so that you can find it if you want to delete it
set(PL1Draw,'Tag','position');
注1

要使GUI响应更快(如果需要),请不要删除和重新打印,而是更改旧位置对象的“扩展数据”和“YData”属性

注2

如果尚未执行此操作,请将plotting函数(更新绘图中的所有内容,而不仅仅是加载位置的函数)放在单独的函数中,而不是放在滑块的回调中,并让滑块回调调用plot函数。通过这种方式,您可以从几个按钮和滑块调用相同的绘图函数,这使得代码更易于维护

编辑


我已经更新了命令。请注意,没有特殊的“标记”功能“标记”是每个图形对象的属性,如“单位”或“颜色”。它只是帮助您标记图形对象,这样您就不需要记住句柄。

与实际问题无关,但与项目相关:


这本书仍然可以在亚马逊上使用,它可能会为你节省很多材料力学方面的编码。大约12年前,我还是一名本科生时写过这篇文章,但我认为MATLAB代码应该仍然是功能性的。

与实际问题无关,但与项目相关:


这本书仍然可以在亚马逊上使用,它可能会为你节省很多材料力学方面的编码。大约12年前,我还是一名本科生时写过这篇文章,但我认为MATLAB代码仍然应该是功能性的。

Jonas,谢谢你的回答,但我不完全理解如何使用你指定的标记函数(这是我第一次尝试制作GUI。请参阅下面我的答案,以及我的一些源代码)(我无法将所有代码都放在窗口中)。希望这会让事情变得更清楚一些。Jonas,谢谢你的回答,但我不完全理解如何使用你指定的标记功能(这是我第一次尝试制作GUI。请参阅下面我的答案,以及我的一些源代码(我无法将所有代码放在窗口中).希望这能让事情澄清一点。