2014-09-09 4 views
1

텍스트 파일에 3 개의 데이터 열이 있습니다. 첫 번째 열은 시간입니다. 두 번째 및 세 번째 열은 내 변수 매개 변수입니다. 제 의도는 3 열의 현재 데이터 값과 2 열의 이전 데이터 값의 차이를 1 열 현재 값과 비교하여 그려 보는 것입니다.gnuplot의 동일한 데이터 파일에있는 현재 레코드와 두 개의 다른 열의 이전 레코드 간의 차이점을 그릴 방법

+0

데이터의 샘플을 보여 질문을 업데이트하시기 바랍니다. –

답변

2

gnuplot은 대개 현재 행의 값에만 액세스 할 수 있기 때문에 약간 까다 롭습니다. 그러나 using 문 내부의 일부 트릭을 사용하여 제한된 수의 이전 값을 메모리에 유지할 수 있습니다.

0 1 5 
1 12 7 
2 1 6 
3 5 5 

다음 스크립트는 차이을 나타내는 :

은 불행하게도 당신은 그래서 여기에 (시간없이, 당신이 스스로 적응해야합니다) 내 테스트 데이터 파일 test.dat이다, 어떤 예를 들어 데이터를 제공하지 않습니다 3 열에서 현재 값 및 열 2의 이전 값 사이에 : 여기에서 발생하는 것은 기본적으로

back2 = back1 = 0 
shift(x) = (back2 = back1, back1 = x) 
plot 'test.dat' using 0:(shift($2), $0 < 1 ? 1/0 : $3 - back2) w lp pt 7 ps 2 

다음

using 문 안에는 쉼표가있는 할당과 같은 여러 명령문을 구분할 수 있습니다. 한 열의 마지막 표현식 만 실제 데이터 값으로 사용됩니다.

두 번째 열은 변수 back2에 이전 행의 값을 할당 한 다음 변수 back1에 현재 값을 할당합니다. 따라서 shift($2)을 호출하면 이전 행의 2 열의 값이 변수 back2에 저장됩니다. 그런 다음 실제 계산을 $3 - back2으로 수행 할 수 있습니다. 조건 $0 < 1은 이전 값이없는 첫 번째 행을 무시합니다.

결과는 다음과 같습니다

enter image description here

+0

고맙습니다 Christoph – Soumajit