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

あなたは継続的にプロットする正弦波を得るでしょう(ラメ映画のように)。私がやりたいのは、ユーザーがいつでも波の振幅を変更できるようにすることです。つまり、プログラムは引き続き実行されますが、ユーザーが入力する20Enter、振幅変数を変更でき、映画の正弦波の振幅が変化します。これを達成する方法についての指針はありますか?

4

2 に答える 2

4

コンソールに数字を入力してこれを行うことはできませんが、単純な GUI で行うことができます。例を見つけるには、Matlab コールバックを Google 検索してください。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 に答える