Я хочу отобразить данные, хранящиеся в кучу файлов, с помощью gnuplot. Если бы файлы были названы с использованием последовательных номеров (например, «1.dat», «2.dat», ...), я бы использовал что-то вроде

plot for [i=1:10] i.'.dat' u 1:2 w lp t 'I='.i;

Однако теперь файлы именуются с использованием степени 2, то есть «2.dat», «4.dat», «8.dat», .... Я пробовал

plot for [i=1:10] (2**i).'.dat' u 1:2 w lp t 'I='.(2**i);

Но я получаю ошибку

STRING operator applied to non-STRING type

Я полагаю, это происходит потому, что gnuplot рассматривает (2**i) как число с плавающей запятой, а не как целое.

Я уверен, что есть способ делать то, что я хочу делать, но поскольку я новичок в использовании управляющих операторов gnuplot, я не могу понять, как это сделать. Может кто-нибудь мне помочь?

3
kMaster 13 Авг 2014 в 14:25

2 ответа

Лучший ответ

Вы можете использовать sprintf для преобразования числа в строку:

plot for [i=1:10] sprintf('%d',2**i).'.dat' u 1:2 w lp t 'I='.(2**i)

Интересно, что объединение (2**i) с 'I=' в заголовке не вызывает проблем.

3
choroba 13 Авг 2014 в 10:32

Попробуйте использовать пустую строку (""), чтобы начать операцию конкатенации строк. Это "".(2**i).".dat" вместо (2**i).".dat".

3
Miguel 13 Авг 2014 в 10:44