私は gnuplot にまったく慣れておらず、プロットを開始するための基本しか学んだことがありません。DSP を実行し、結果をリアルタイムでプロットする必要がある C プログラムを作成しています。さらに、gnuplot のプロット '-' 機能を組み込むために、次のような方法でプログラムをセットアップしました。親プロセスは常に DSP 計算を実行し、その結果をリアルタイムでパイプを使用して子プロセスに送信します。子は親からシグナルを受け取り、ウェイクアップし、結果をパイプ経由で gnuplot に送信します。
基本的に、データのパスは次のようになります。
親(計算) -> パイプ -> 子 (親からの入力を待つ) -> パイプ -> gnuplot (プロット)
たとえば、子では、条件付き待機で囲まれています
getline(&lineBuffer, lineSize, stdin);
printf("%s", lineBuffer);
fflush(stdout);
wherelineBuffer
は任意の任意char*
の場所で、データを親から gnuplot にリダイレクトします。プロットに必要なすべてのデータがあり、任意の形式でフォーマットできます。ただし、次のことを試しても成功しませんでした。
外観とラベルがまだ定義されていない場合は、
set terminal x11 persist noraise
set xlabel "Frequency"
set ylabel "Decibel"
set xrange [0:2000]
set yrange [-100:100]
set style data lines
最初のプロット コマンドを開始します。
plot '-' using 1:2 smooth unique
データの送信を開始します。各ポイントは新しい行であり、データを次のようにフォーマットしました
Frequency Decibel
たとえば、特定の時間に
1000 -30.00
1001 -31.00
....
送信してデータを終了する
e\n
次に、データを送信するプロセスを再開し、終了します
replot
これは正しいと思いますか?一方、特定の周波数の時系列をプロットすることにも興味があり、何度も検索した後、これを達成するにはバッファまたは一時ファイルが必要なようですが、それも正しいですか?