【问题标题】:Take user input while running in Matlab在 Matlab 中运行时获取用户输入
【发布时间】:2013-02-15 20:34:25
【问题描述】:

我有一个我想输入的功能,但只有在用户想要的时候。例如,如果我有这个代码:

figure
amplitude = 10;
tic
i = 1;
while(1) 
    time = toc;
    values(i) = amplitude*sin(time);
    times(i) = time;
    plot(times, values)
    drawnow
    i = i+1;
end

你会得到一个不断绘制的正弦波(就像一部蹩脚的电影)。我想要做的是允许用户随时改变波的幅度。那就是程序将继续运行,但如果用户键入20Enter,则可以更改幅度变量,并且正弦波将改变电影中的幅度。关于如何实现这一点的任何指示?

【问题讨论】:

  • 普通人,这个问题措辞很好,并且有一个很好的代码示例。如果您对其进行投票,那么它将获得一些关注并可能会得到答复。
  • 您无法通过在控制台中输入数字来执行此操作,但您可以使用简单的 GUI 来执行此操作。谷歌搜索 Matlab 回调以开始
  • @learnvst 添加它作为答案!
  • 如你所愿。 Matlab 文档中也应该有一个简单的 GUI 教程

标签: matlab input


【解决方案1】:

您无法通过在控制台中输入数字来执行此操作,但您可以使用简单的 GUI 来执行此操作。谷歌搜索 Matlab 回调以查找示例。当 GUI 事件发生时,它会触发一个函数,您可以使用该函数来修改循环中的变量。

【讨论】:

    【解决方案2】:

    最好使用前面提到的 GUI 来完成,但如果您只是想要控制台中的某些内容,我可以提供:

    定期要求用户输入幅度然后以该幅度继续“电影”的脚本。它可以很容易地扩展以允许用户决定何时要求他输入下一个幅度变化。

    clear
    amplitude = 10;
    i=1;
    while(1) 
        time = i/1000;
        values(i) = amplitude*sin(time);
        times(i) = time;
        plot(times, values)
        drawnow
        i = i+1;
        if mod(i,3141) == 0
            keyboard
        end
    end
    

    现在这将运行一段时间,然后要求您输入下一个幅度。请注意,您实际上可以一次发出多个命令。

    amplitude = 20; return
    amplitude = 1; return
    

    这将使下一个幅度为 20,之后的幅度为 1。请注意,向上箭头键在这里是您的朋友。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 2020-01-31
      • 2020-10-03
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      相关资源
      最近更新 更多