LINUX.ORG.RU

Передача переменных из кода программы на СИ в gnuplot

 ,


2

2

Доброго времени суток. Подскажите, пожалуйста. Никак не могу понять, как мне передать какие-либо переменные из кода программы на СИ в gnuplot. Если делать так, как я привожу, то напротив const и самих переменных выходит ошибка undefined variable. Вариант записать и прочитать их файла не подходит.

«const1 = nupmin\n»//граница слева
«const2 = nupmax[H]\n»//граница справа

«const6 = B\n»//нижняя граница
«const7 = U\n»//верхняя граница

«set xrange [const1:const2]\n»
«set yrange [const6:const7]\n»


gnuplot из терминала используется? Не как либа(если она есть я не в курсе)? Тогда программа на си может через setenv записывать значения переменным,а plot из читать $VAR1 $VAR2

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от anonymous

Так он хочет в готовый формат как я понял значения рассчитанные вставить, а не через пайп | передать форматированную строку с данными (или открыть plot прям в сишном коде через popen). Хотя по идее лучше просто дагенерировать формат, строку и всё готовое педедавать просто через пайп в плот.

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от anonymous

Вот более полный код, но я все равно не понимаю, как это реализовать.

FILE *gp = popen(gnuplot,«w»);
fprintf (gp,
«set terminal…»
«set output…»
«const1 = переменная1»//граница слева
«const2 = переменная2»//граница справа

«const6 = переменная3»//нижняя граница
«const7 = переменная4»//верхняя граница

«set xrange [const1:const2]\n»
«set yrange [const6:const7]\n»
);
pclose(gp);

gnunu
() автор топика
Ответ на: комментарий от gnunu

А может тебе всего-то нужно почитать руководство по функции fprintf() и найти в нем символ процента %?

TeopeTuK ★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Тогда программа на си может через setenv записывать значения переменным,а plot из читать $VAR1 $VAR2

Не может.

akk ★★★★★
()
Ответ на: комментарий от LINUX-ORG-RU

Хочу передать рассчитанные значение через пайп, но не понимаю, что значит дегенерировать формат? Пробовал писать так:
fprintf (gp,

«const1 = %f\n», переменная1

); или прописывать в самом конце, выдает was not declared in this scope

gnunu
() автор топика
Ответ на: комментарий от gnunu

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

#include <stdio.h>
int main(int argc, char *argv[])
{
    printf(
    "set terminal wxt persist\n"
    "set key right nobox\n"
    "set samples 100\n"
    "plot [-pi/2:pi] cos(x),-(sin(x) > sin(x+1) ? sin(x) : sin(x+1))\n");
    return 0;
}

И передавать в gnuplot через пайп терминала данные эти

dron@gnu:~$ gcc plottt.c -o plotgenerator
dron@gnu:~$ ./plotgenerator | gnuplot

А за popen возмись уже попозжа

LINUX-ORG-RU ★★★★★
()
Последнее исправление: LINUX-ORG-RU (всего исправлений: 1)
Ответ на: комментарий от gnunu

Внимание: прочитайте описание разметки Markdown или LORCODE.

"const1 = переменная1"

Вот здесь вместо переменная1 ставьте %g, а в самом конце вызова fprintf после здоровенной строковой константы добавляйте запятую и свою переменную. На каждую переменную добавляйте соответствующий спецификатор с процентом, а саму переменную добавляйте в конец через запятую. Должно работать.

Пожалуйста, изучайте язык программирования, на котором пишете. K&R - отличная книга, достаточно подробная, чтобы во всём разобраться, но не длинная.

anonymous
()

Ман спринтф, что ли?

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.