2012-08-27 2 views
2

Gnuplot에서 절차 (또는 C와 유사한 기능)를 사용할 수 있습니까? 정말 간단하고 간단한 것을 필요로합니다 :Gnuplot의 절차

function func1() 
{ 
var1 = "string1"; 
var2 = var1."string2"; 

return var2; 
} 

내 gnuplot 스크립트를 조금 더 간결하게 만듭니다.

답변

4

의 gnuplot 지원 인수 (단순) 기능 :

func1(x)=x."string2" 
당신의 gnuplot 4.4 사용하는 경우

더 복잡 "인라인"기능을 생성 할 수 있습니다 :이 양식에서

func1(x)=(var1=x, var2=var1."string2", var1.var2) #returns x.x."string2" 

, 마지막 함수의 일부가 리턴 된 것 (var1.var2)이고 명령문은 왼쪽에서 오른쪽으로 평가됩니다.

더 매개 변수를 허용하지 기능을 가지고 싶다면, 당신은 (자주)를 사용할 수 있습니다 매크로 :

set macro 
funcmacro='"string1"."string2"' 
print @funcmacro 
+0

감사합니다. 네, gnuplot 4.4를 사용하고 있습니다. "인라인"과 매크로를 모두 시험해 보겠습니다. – Avio

2

예. 당신은 첫 번째 줄은 함수 정의입니다

strcat(str1,str2) = sprintf("%s%s",str1,str2) 
str3 = strcat("string1","string2"); print str3 

처럼 뭔가의 gnuplot에서 문자열을 연결할 수 있으며, 두 번째 줄은 사용의 단지 예입니다. gnuplot documentation의 "사용자 정의 변수 및 함수"섹션에서 자세한 내용을 볼 수 있습니다 ("표현식"섹션 아래에 있으며 'fi'로 인해 '사용자 정의'문자열 검색에 어려움이있을 수 있습니다. LaTeX에 의해 생성 된 문자).

+0

나는이 목적을 위해'sprintf'에 대해 생각하지 않았습니다 ... 흥미 롭습니다. 나는 연산자의 검증을 여전히 선호한다고 생각한다 :'strcat (s1, s2) = s1.s2', 그러나 나는 별다른 차이를 만들지 않는다. +1은 gnuplot에 이미 C의 많은 함수가 내장되어 있음을 지적합니다. – mgilson

+0

@andyras : 저는 보통 문자열을 연결하기 위해'.' 점을 사용합니다. 제 질문은 gnuplot 스크립트에서 프로 시저 또는 "비 수학"함수를 만들 수있는 방법이 있는지에 관한 것입니다. – Avio

+0

@mgilson : 나는 또한 '.' 연산자,하지만 나는 그것에 대해 잊어 버렸다! 나를 상기시켜 줘서 고마워. – andyras

1

Pyxplot 플로팅 패키지 http://pyxplot.org.uk을 살펴볼 수 있습니다.이 패키지는 gnuplot과 유사한 구문을 가지고 있지만 스크립팅 언어의 많은 기능을 가지고 있습니다. 서브 루틴이 있습니다. 서브 루틴은 여러분이 요구하는 것과 정확히 일치해야합니다.