4

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

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

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

4

2 回答 2

4

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

于 2013-02-15T00:58:16.930 回答
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。请注意,向上箭头键是您的朋友。

于 2013-02-15T12:34:25.250 回答