В C++
В настоящее время я использую этот бит кода для отображения некоторых данных, используя gnuplot
.Команда Gnuplot
fit
, однако, производит много нежелательного вывода в консоли командной строки (которую я использую для вывода некоторых других вещей, в остальной части моей программы).
Поскольку этот вывод загромождает вывод моей консоли, я бы хотел его отключить.Для этого должно быть 2 способа:
- Скрыть вывод, созданный внешними программами, используя
pipe
в C++
- Говоря
gnuplot
, чтобы он молчал и не выводил столько
FILE *pipe = popen("gnuplot -persist", "w");//open up a pipe to gnuplot
fprintf(pipe, "set terminal x11 enhanced\n"); //set appropriate output terminal for the plot
fprintf(pipe, "set xlabel 'N'\n");//set xlabel
fprintf(pipe, "set ylabel 'error'\n");//set ylabel
fprintf(pipe, "set yrange [0:0.0001]\n");//set the y range
fprintf(pipe, "plot 'dataSimp.dat' ti 'Simpson method'\n");//plot the Simp error
fprintf(pipe, "replot 'dataTrap.dat' ti 'Trapezium method' \n");//plot the Trap error
fprintf(pipe, "replot 1/(x**2) ti '1/{x^2}'\n");//plot y=1/(x^2) function for comparison
fprintf(pipe, "replot 1/(x**4) ti '1/{x^4}'\n");//plot y=1/(x^4) function for comparison
//fit curve to dataSimp
fprintf(pipe, "set output 'rommel.txt'");
fprintf(pipe, "fSimp(x)=aSimp/(x**4) \n");
fprintf(pipe, "fit fSimp(x) 'dataSimp.dat' via aSimp\n");
fprintf(pipe, "replot aSimp/(x**4) ti 'fitted aSimp/{x^4}'\n");
//fit curve to dataSimp
fprintf(pipe, "fTrap(x)=aTrap/(x**2) \n");
fprintf(pipe, "fit fTrap(x) 'dataTrap.dat' via aTrap \n");
fprintf(pipe, "replot aTrap/(x**2) ti 'fitted aTrap/{x^2}'\n");
pclose(pipe);//close gnuplot pipe