【问题标题】:Break / Stop while loop from user input at the Matlab command line在 Matlab 命令行中从用户输入中断/停止 while 循环
【发布时间】:2018-03-23 17:34:22
【问题描述】:

我正在尝试创建一个 while 循环,该循环将持续循环,直到用户在命令行输入。

我已经尝试过两种实现方式,第一种,第一种源自python。问题是每次要遍历循环时都必须输入除 exit 之外的其他内容。

    global active
    active = true;

        while active == true
            userInput = input('enter: ','s');
            inputHandler(userInput)
            disp(rand)
            pause(1);
        end

        function inputHandler(value)
            global active
            if value == 'exit'
                active = false;
            end
        end

第二个是

global loopFlag
loopFlag = true

while loopFlag == true
    %some awesome code happens here
end

您的想法是您可以在代码执行时在命令行输入loopFlag = false 并且它会停止。 我知道这可以通过使用toggle button 来完成,但除非绝对必要,否则我宁愿不必走那条路。

【问题讨论】:

  • 那么第一个实现有什么问题?
  • @LuisMendo 您必须在每次想要循环时输入一些内容。我需要循环自行运行,直到它看到来自命令行的输入
  • 除了input,我不知道命令窗口检测按键的方法,正如您所见,它会在等待输入时停止程序执行。您也许可以创建一个图形并设置其'WindowKeyPressFcn',以便将其UserData 从true 更改为false。程序中的 while 循环将是 while get(figureHandle,'UserData')

标签: matlab while-loop infinite-loop


【解决方案1】:
active = true;
while active == true
   active = input('Enter true or false ' );
   disp(rand)
   pause(1)
end

【讨论】:

  • Nivi,这个方法和我第一次尝试的结果一样。您必须在循环的每次迭代中输入一个值才能继续。这个想法是循环将持续运行,直到输入命令来停止它。
  • 我明白了,我以为你想改进你的 prev 代​​码。我在 Labview 中做到了这一点,但在 Matlab 中没有。我认为你可以使用 GUI 来做到这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 2014-01-01
相关资源
最近更新 更多