2012-04-10 4 views
2

두 개의 파일 file1.datfile2.dat은 크기가 일치하는 행렬 (예 : 각각 F1과 F2)을 포함하고 있습니다 (즉 행렬은 모두 m x n 행렬입니다). gnuplot을 사용하여 (예를 들어 splot "file1.dat" matrix) 그 중 하나를 플롯하는 방법을 알고 있지만 F1-F2를 그릴 때 gnuplot에 어떻게 지시해야합니까?Gnuplot : 두 행렬의 차이점 플로팅

답변

1

불행히도 gnuplot을 사용하여 여러 파일의 정보를 플로팅 할 수있는 방법이 없습니다. 이 솔루션은 입력으로 두 파일을 받아 출력으로 차이를 기록 (좋아하는 언어) 간단한 스크립트를 작성하는 것입니다 ... 그럼 당신은 할 수 :

splot "<myscript file1.dat file2.dat" matrix ... 

나는 확신 충분한 감언 이설로 그 set table과 쉘 매직을 사용하여 원하는 데이터를 출력하기 위해 gnuplot이 여러 개의 데이터 파일을 출력하고, 셸 명령을 사용하여 데이터 파일을 붙여 넣을 수 있습니다.)하지만 결국에는 직접 스크립트를 작성하는 것이 좋습니다. 훨씬 깨끗한 솔루션.

1

다음은 gnuplot에서 awk 비트를 사용하는 작동 예제입니다.

set terminal postscript enhanced colour 
set output 'matrixdiff.eps' 

unset key 
splot "<awk 'NR==FNR{for(i=1;i<=NF;++i)a[FNR,i]=$i;next}{for(i=1;i<=NF;++i)$i=a[FNR,i]-$i;print}' mat1 mat2" matrix 

mat1mat2는 플롯하려는 행렬 파일입니다. awk 스크립트는 here입니다.