Как построить данные с помощью программы c? - программирование
Подтвердить что ты не робот

Как построить данные с помощью программы c?

Я инженер-механик, который имеет ограниченные знания в программировании на С. Я написал код для моделирования, и хочу визуализировать результаты моделирования. На данный момент я использую Dev-C для написания моих кодов. С помощью команд fopen и fprintf я создаю файл .dat, который включает в себя результаты. Затем я открываю программу GNUPLOT и импортирую файл .dat для построения результатов. Это требует времени, и я должен подождать до конца моделирования. Есть ли простой способ подключения моего плоттера с Dev-C, поэтому мой плоттер начинает строить данные во время моделирования? Любая библиотека или т.д.?

4b9b3361

Ответ 1

Поскольку вы уже знаете gnuplot, самым простым делом может быть просто вызвать gnuplot из вашей программы и передать данные на него:

FILE *gnuplot = popen("gnuplot", "w");
fprintf(gnuplot, "plot '-'\n");
for (i = 0; i < count; i++)
    fprintf(gnuplot, "%g %g\n", x[i], y[i]);
fprintf(gnuplot, "e\n");
fflush(gnuplot);

Ответ 2

ОК, одно решение, когда вы пишете файл, должно было просто сделать вызов system() при записи в файл и вызвать gnuplot.

Но это означает, что вы должны каждый раз менять имя файла, но я боюсь, если вы сделаете это, чтобы оно выглядело не так, поскольку вы каждый раз отправляете небольшие объемы данных.

http://www.gnu.org/software/libc/manual/html_node/System-Calls.html

Я никогда не использовал gnuplot, но если вы посмотрите на эту страницу (http://gnuplot-tricks.blogspot.com/), вы можете найти некоторые трюки, которые позволили бы это хорошо работайте.

Но, я думаю, если вы не собираетесь все замышлять сами, и пропустите gnuplot, тогда вам просто нужно подождать, как и вы.

Вы можете обнаружить, что интерфейс C к gnuplot может помочь вам:

http://ndevilla.free.fr/gnuplot/

Ответ 3

Я использовал PLPlot для построения графика из C и нашел его эффективным и легким. Это кросс-платформенный, с открытым исходным кодом и поддерживает богатый набор возможностей графика. Я бы порекомендовал взглянуть на примеры, чтобы начать.

Ответ 4

Я посмотрел вокруг, чтобы узнать, что сделали другие люди в отношении графика в реальном времени в gnuplot, и нашел следующее:

http://users.softlab.ntua.gr/~ttsiod/gnuplotStreaming.html

Там немного Perl script, который может управлять построением графика, и вы просто передаете свою информацию.

Поскольку ваши данные записываются в файл, вы можете захотеть tail -f yourdata.dat и передать это в плоттер в режиме реального времени.

Кроме того, поскольку вы используете вызовы файлов stdio, вам необходимо регулярно обновлять (вызывая fflush)

Очевидно, что ваша симуляция будет работать в фоновом режиме или в другой оболочке. Таким образом, вы можете выйти из графика в любое время, не прерывая симуляцию.

Надеюсь, что некоторые из вас будут полезны.