在Matlab中运行时获取用户输入

时间:2013-02-15 00:06:38

标签: matlab input

我有一个我想要输入的功能,但仅限于用户想要的功能。例如,如果我有这个代码:

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,则可以更改幅度变量,并且正弦波将改变电影中的幅度。有关如何实现这一点的任何指示?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

最好用上面提到的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之后的那个。注意向上箭头键是你的朋友。