Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Matlab中运行时获取用户输入_Matlab_Input - Fatal编程技术网

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

在Matlab中运行时获取用户输入,matlab,input,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 你会得到一个连续绘制的正弦波(就像一部蹩脚的电影)。我想做的是允许用户随时改变波的振幅。也

我有一个功能,我想输入,但只有当用户想。例如,如果我有以下代码:

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
中键入,则可以更改振幅变量,正弦波将更改电影中的振幅。关于如何实现这一点,有什么建议吗?

您无法通过在控制台中键入数字来实现这一点,但您可以通过一个简单的GUI来实现。在google上搜索Matlab回调以查找示例。当GUI事件发生时,它会触发一个函数,您可以使用该函数修改循环中的变量。

可能最好使用前面提到的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。请注意,向上箭头键是您的朋友。

普通人,这个问题措辞得体,并且有一个很好的代码示例。如果你投上一票,那么它会引起一些注意,可能会得到回答。你不能通过在控制台中键入数字来实现这一点,但你可以通过一个简单的GUI来实现。在谷歌上搜索Matlab回调以获取going@learnvst添加它作为一个答案!如你所愿。Matlab文档中也应该有一个简单的GUI教程