#loops #plot #gnuplot #nested-loops
#циклы #построение графика #gnuplot #вложенные циклы
Вопрос:
Я хочу суммировать значения из следующих столбцов, индексы которых (16, 18, 20, 24, 26, 28, 32, 34, 36) с помощью команд gnuplot без явного ввода индексов.
Я знаю, что есть команда для суммирования значений разных столбцов, индексы которых могут быть выражены с помощью функции переменной:
plot 'data' using 1 : (sum [col=8:10] column(col*2))
Проблема в том, что индексы в моем случае могут быть описаны только двумя переменными, поэтому нужны вложенные циклы / суммы. Псевдокод для индекса будет
for i=0:2 {for j=0:2 { index = ( j 8 i*4 ) * 2 } }
Есть ли способ выполнять вложенные суммирования или циклы for в gnuplot?
Ответ №1:
Все итерации в gnuplot выполняются рекурсивно. Для вложения одного в другой не требуется специального синтаксиса. Например.
filename(n,m) = sprintf("NAME_%d_%d.dat",n,m)
plot for [i=1:5] for [j=i:5] filename(i,j)