首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >电梯仿真- Matlab

电梯仿真- Matlab
EN

Stack Overflow用户
提问于 2015-11-29 09:18:08
回答 2查看 878关注 0票数 1

我正在做一个关于模拟电梯的项目,遇到了这个问题。我有一个listbox,用户可以选择他们想去的楼层,但我不知道如何让电梯的门按正确的顺序打开。

例如,第一个人想去一楼,第二个人想去三楼。他们会先选择1,然后选择3,但当我这样做时,Matlab总是先打开3楼,然后再打开1楼。

我正在考虑将列表框的值存储在一个矩阵中,然后使用for循环以正确的顺序根据楼层打开电梯的门。

这是我的项目的GUI。GUI

listbox1_Callback下。我试着这样做,但我的数组只有一个元素。

代码语言:javascript
复制
A = [];
listValue = get(handles.listbox1,'Value');
A = [A,listValue];

我想让A保存一个值序列,这样我就可以将foor循环应用于A,并逐个元素地执行。

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2015-11-29 14:46:01

例如,假设您有一个名为open的函数,该函数接受一个参数,即楼层编号,并打开该楼层的电梯门。要循环遍历每个选定的楼层,请执行以下操作:

代码语言:javascript
复制
handles.listbox1 = uicontrol('Style', 'listbox', ...
   'String', [1 2 3 4], ...
   'Position', [10 10 40 100], ...
   'Max', 2);
selectedFloor = get(handles.listbox1, 'Value');
for ii = 1:length(selectedFloor)
    open(selectedFloor(ii));
end
票数 1
EN

Stack Overflow用户

发布于 2016-03-21 10:11:33

你的项目可能已经结束了,但我还是会贡献一些东西。不是关于编程代码本身,而是关于电梯原理,这可能有助于您和其他人下一次正确地构思系统。

只有当驾驶室在某一特定楼层或离该楼层非常近(通常小于8厘米)时,电梯门才会打开。原因很简单:打开车门的电机和机械装置在驾驶室上。起落架门实际上是由驾驶室门移动的,使用带有溜冰鞋和皮卡滚轮的离合器。因此,在您的程序中必须关注的是驾驶室的位置,这是一个简单的对象,它按顺序从一个楼层移动到另一个楼层。

因此,当呼叫被注册时,你必须将它们与驾驶室的位置进行比较。然后你决定走哪条路,向上还是向下(或者如果位置已经正确,就直接打开门)。您保持首选方向,直到到达最远的呼叫,然后更改方向或等待新的呼叫。只需从实际位置加或减1(每个操作之间间隔几秒钟,以使其看起来真实),将该位置与调用数组的相应索引进行比较,然后决定停止并打开门(如果存在调用)或继续(如果不存在调用)。即使由于某些原因不存在呼叫,也不要忘记在末端停止。

如果您想在混合中引入着陆呼叫,则必须考虑它们是向上呼叫还是向下呼叫。你只在上行时停止上行呼叫,在下行时只停止下行呼叫。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33978347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档