libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
Функции построения графиков.

Функции

void gnuplot_close (void *h)
 Закрыть хэндл GNUPLOT. Подробнее...
 
void gnuplot_cmd (void *h, char *cmd)
 Функция посылает команду cmd пакету GNUPLOT, для построения или оформления графика, соответсвующего хэндлу h. Подробнее...
 
int gnuplot_create (int argc, char *argv[], int w, int h, char *fn_png, void **hplot)
 Создать график GNUPLOT. Подробнее...
 
int gnuplot_open (void **hplot)
 Открыть пакет GNUPLOT. Подробнее...
 

Подробное описание

Функции

◆ gnuplot_close()

void gnuplot_close ( void *  h)

Закрыть хэндл GNUPLOT.


Данная функция закрывает открытый ранее хэндл GNUPLOT после передачи всех команд построения графиков.

Заметки
С точки зрения системы, h является указателем на открытый файл, в который можно записывать команды для исполнения пакетом GNUPLOT. Данная функция закрывает этот файл.
Важно отметить, что закрытие хэндла не означает закрытия окна графика. После закрытия хэндла пакета, пользователь не может посылать команды построения графика, но окно графика остается открытым, так как обрабатывается пакетом GNUPLOT независимо.
Аргументы
[in]hХэндл графика GNUPLOT, который будет закрыт.

Автор
Бахурин Сергей www.dsplib.org

См. определение в файле gnuplot_close.c строка 80

◆ gnuplot_cmd()

void gnuplot_cmd ( void *  h,
char *  cmd 
)

Функция посылает команду cmd пакету GNUPLOT, для построения или оформления графика, соответсвующего хэндлу h.


Данная функция закрывает открытый ранее хэндл GNUPLOT после передачи всех команд построения графиков.

Заметки
С точки зрения системы, h является указателем на открытый файл, в который можно записывать команды для исполнения пакетом GNUPLOT. Данная функция записывает в данный файл строку cmd.

С точки зрения пользователя, вызов функции gnuplot_cmd равносильно выполнению одной строки скрипта GNUPLOT.

Исчерпывающее описание возможностей построения графиков пакетом GNUPLOT, с примерами команд можно найти на сайте проекта GNUPLOT.
Аргументы
[in]hХэндл графика GNUPLOT.

[in]cmdТектовая строка команды построения или оформления графика.

Автор
Бахурин Сергей www.dsplib.org

См. определение в файле gnuplot_cmd.c строка 82

Используется в gnuplot_create().

◆ gnuplot_create()

int gnuplot_create ( int  argc,
char *  argv[],
int  w,
int  h,
char *  fn_png,
void **  hplot 
)

Создать график GNUPLOT.


Данная функция открывает пакет GNUPLOT в зависимости от передаваемых в программу параметров argv. После вызова данной функции по адресу hplot будет записан handle графика и появляется возможность посылать GNUPLOT команды для отображения графиков.

Заметки
С точки зрения системы, hplot является указателем на открытый файл, в который можно записывать команды для исполнения пакетом GNUPLOT.
Аргументы
[in]argcКоличество аргументов вызова программы.
(количество переменных argv).
Данное значение не должно быть меньше единицы, потому что argv[0] хранит имя исполняемого файла программы.

[in]argvУказатель на массив строк параметров исполняемого файла.
Размер массива argc строк.
argv[0] хранит имя исполняемого файла программы.
argv[1] задает формат отображения графика:
--plotwin   отображать график в отдельном окне
            (данный параметр используется по умолчанию);

--plotpng   сохранить график в png-файл, заданный именем fn_png; 

--noplot    график не создавать, игнорировать все команды GNUPLOT.

[in]wШирина окна графика или png-файла в пикселях.

[in]hВысота окна графика или png-файла в пикселях.

[in]fn_pngИмя png-файла, в который будет сохранен график.
Путь сохранения графика совпадает с путем исполняемого файла программы.
[in,out]hplotУказатель на адрес хэндла пакета GNUPLOT.
По данному адресу будет записан указатель на текщий график. Данный указатель необходим для посылки команд GNUPLOT для построения графика.

Возвращает
RES_OK — функция выполнена успешно.
В противном случае код ошибки.
При возникновении ошибки по адресу hplot будет записан NULL.
Заметки
Если в argv[1] задан параметр --noplot, то функция вернет RES_OK, но по адресу hplot также будет записан NULL.
После построения графиков необходимо закрыть хэндл GNUPLOT функцией gnuplot_close.
Пример построения графиков синуса и косинуса привден в следующем листинге:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "dspl.h"
#define N 100
int main(int argc, char* argv[])
{
void* hdspl; /* DSPL handle */
void* hplot[3]; /* GNUPLOT handles */
hdspl = dspl_load(); /* Load DSPL function */
double x[N];
double s[N]; /* s(x) = sin(x) */
double c[N]; /* c(x) = cos(x) */
int n;
int err;
/* x vector from -4*pi to 4*pi */
linspace(-4.0 * M_PI, 4 * M_PI, N , DSPL_SYMMETRIC, x);
for(n = 0; n < N; n++)
{
s[n] = sin(x[n]); /* s(x) = sin(x) */
c[n] = cos(x[n]); /* c(x) = cos(x) */
}
/* Save to files "dat/sine.txt" and "dat/cosine.txt" */
writetxt(x, s, N, "dat/sine.txt");
writetxt(x, c, N, "dat/cosine.txt");
/* plotting by GNUPLOT */
/* Create window 0 */
err = gnuplot_create(argc, argv, 560, 280, "img/gnuplot_script_sin.png",
hplot);
printf("GNUPLOT err = %d\n", err);
gnuplot_cmd(hplot[0], "set grid");
gnuplot_cmd(hplot[0], "set xlabel 'x'");
gnuplot_cmd(hplot[0], "set ylabel 'sin(x)'");
gnuplot_cmd(hplot[0], "plot 'dat/sine.txt' with lines title 'sin(x)'");
gnuplot_close(hplot[0]);
/* Create window 1 */
err = gnuplot_create(argc, argv, 560, 280, "img/gnuplot_script_cos.png",
hplot+1);
printf("GNUPLOT err = %d\n", err);
gnuplot_cmd(hplot[1], "set grid");
gnuplot_cmd(hplot[1], "set xlabel 'x'");
gnuplot_cmd(hplot[1], "set ylabel 'cos(x)'");
gnuplot_cmd(hplot[1], "plot 'dat/cosine.txt' with lines title 'cos(x)'");
gnuplot_close(hplot[1]);
/* Create window 2 */
err = gnuplot_create(argc, argv, 560, 280, "img/gnuplot_script_sincos.png",
hplot+2);
printf("GNUPLOT err = %d\n", err);
gnuplot_cmd(hplot[2], "set grid");
gnuplot_cmd(hplot[2], "set xlabel 'x'");
gnuplot_cmd(hplot[2], "set ylabel 'sin(x), cos(x)'");
gnuplot_cmd(hplot[2], "plot 'dat/sine.txt' with lines title 'sin(x)', \\");
gnuplot_cmd(hplot[2], " 'dat/cosine.txt' with lines title 'cos(x)");
gnuplot_close(hplot[2]);
dspl_free(hdspl); /* free dspl handle */
return 0;
}

Данная программа рассчитвает значения функций синуса и косинуса, а также сохрянет текстовые файлы dat/cosine.txt и dat/sine.txt.
Сохраненные данные отображаются на трех графиках (с данными синуса, косинуса и обоими данными):

Автор
Бахурин Сергей www.dsplib.org

См. определение в файле gnuplot_create.c строка 200

◆ gnuplot_open()

int gnuplot_open ( void **  hplot)

Открыть пакет GNUPLOT.


Данная функция открывает пакет GNUPLOT. После вызова данной функции по адресу hplot будет записан handle GNUPLOT и появляется возможность посылать GNUPLOT команды.

Заметки
С точки зрения системы, hplot является указателем на открытый файл, в который можно записывать команды для исполнения пакетом GNUPLOT.
Аргументы
[in,out]hplotУказатель на адрес хэндла пакета GNUPLOT.
По данному адресу будет записан указатель на текщий график. Данный указатель необходим для посылки команд GNUPLOT для построения графика.

Возвращает
RES_OK — функция выполнена успешно.
В противном случае код ошибки.
При возникновении ошибки по адресу hplot будет записан NULL.
После построения графиков необходимо закрыть хэндл GNUPLOT функцией gnuplot_close.
Заметки
Отличие функции gnuplot_open от gnuplot_create заключается в том, что gnuplot_create обрабатывает параметры выполнения программы и создает терминал GNUPLOT.
Функция gnuplot_open открывает GNUPLOT хэндл для возможности посылки команд, вне зависимости от параметров выполнения программы, но не создает терминалов.
Автор
Бахурин Сергей www.dsplib.org

См. определение в файле gnuplot_open.c строка 103

void gnuplot_close(void *h)
Закрыть хэндл GNUPLOT.
Definition: gnuplot_close.c:80
void * dspl_load()
Произвести динамическую линковку и загрузить функции libdspl-2.0.
void gnuplot_cmd(void *h, char *cmd)
Функция посылает команду cmd пакету GNUPLOT, для построения или оформления графика,...
Definition: gnuplot_cmd.c:82
int writetxt(double *x, double *y, int n, char *fn)
Сохранить вещественные данные в текстовый файл
Definition: writetxt.c:122
void dspl_free(void *handle)
Очищает связанную ранее динамическую библиотеку DSPL-2.0.
int linspace(double x0, double x1, int n, int type, double *x)
Функция заполняет массив линейно-нарастающими, равноотстоящими значениями от x0 до x1
Definition: linspace.c:169
int gnuplot_create(int argc, char *argv[], int w, int h, char *fn_png, void **hplot)
Создать график GNUPLOT.