Создание кода на C для автоматического построения графика

t = [False, False, False, False, True, True, True, False, False,
     True, True, True, True, False, False, False, False, False,
     False, False, True, True, True, False]

indexes = []

counter = 0
for i in range(0, len(t)):
    el = t[i]
    if counter == 0:
        if el:
            indexes.append(i)
            counter = i
    else:
        if (el == True) and (i - counter == 1):
            indexes.append(i)
            counter = i
        else:
            break
print(indexes)
16
задан Svante 19 August 2010 в 11:33
поделиться

2 ответа

Я адаптировал принятый ответ для построения массива с плавающей точкой, избегая использования временного файла. В нем float* data_ это массив, а size_t size_ его размер. Надеюсь, это кому-нибудь пригодится!

Приветствия,
Андрес

void plot(const char* name="FloatSignal"){
  // open persistent gnuplot window
  FILE* gnuplot_pipe = popen ("gnuplot -persistent", "w");
  // basic settings
  fprintf(gnuplot_pipe, "set title '%s'\n", name);
  // fill it with data
  fprintf(gnuplot_pipe, "plot '-'\n");
  for(size_t i=0; i<size_; ++i){
    fprintf(gnuplot_pipe, "%zu %f\n", i, data_[i]);
  }
  fprintf(gnuplot_pipe, "e\n");
  // refresh can probably be omitted
  fprintf(gnuplot_pipe, "refresh\n");
}
0
ответ дан 30 November 2019 в 16:00
поделиться

Вы можете создать сценарий gnuplot и запустить процесс, выполняющий gnuplot, для построения этого сценария из командной строки, или вы можете использовать один из предоставленных интерфейсов. Для C существует конвейерный интерфейс POSIX от Николаса Девилларда, доступный здесь: http://ndevilla.free.fr/gnuplot/ ... а версия C ++ на основе iostream доступна через git (см .: http://www.stahlke.org/dan/gnuplot-iostream/ )

Самый переносимый и, вероятно, самый простой way все равно будет вызывать gnuplot для построения сценария. Как упоминалось в sje397, проверьте свою документацию на наличие вызова system () в stdlib.h.

Кстати, есть также GNU plotutils, которая предлагает libplot, библиотеку для построения наборов данных, которую вы можете использовать в своем приложении. См .: http://www.gnu.org/software/plotutils/

5
ответ дан 30 November 2019 в 16:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: