Como dividir dois conjuntos de dados no gnuplot?

0

Estou usando o gnuplot e tenho dois arquivos de dados separados e gostaria de dividir todos os valores do eixo x do conjunto de dados 1 com todos os valores do eixo x com o conjunto de dados 2. O mesmo com o eixo y..Como posso fazer isso ??

Posso fazer isso dentro do gnuplot?

    
por Helen 15.12.2011 / 16:25

1 resposta

0

Você pode fazer isso a partir do gnuplot, embora seja mais fácil pré-projetar seus dados externamente.

Na verdade, isso é bastante semelhante ao pré-processamento de seus dados externamente com algum script que pega seus dados e grava os dados combinados na saída padrão. A sintaxe para usar um pipe no gnuplot é

plot " < program arguments"

Eu geralmente uso o AWK para esses fins. Para resolver seu problema, o script de pré-processamento tem que internamente juntar os dois conjuntos de dados de alguma forma e, em seguida, calcular os valores desejados. No AWK, eu faria algo assim:

{
 if(secondfile)
   print $1, $2, values[$1,$2]/$3 
 else
   values[$1,$2]=$3
}
ENDFILE{secondfile=true}

Os valores do primeiro arquivo são armazenados na matriz de valores (o segundo arquivo é falso). O padrão ENDFILE é executado no final de qualquer arquivo (aqui: primeiro) e alterna o comportamento da regra principal para imprimir as coordenadas x e y e os valores divididos (supondo que você tenha o formato de dados de colunas "xy value"). O gancho ENDFILE é suportado no atual GAWK 4.0.

O comando final da trama pode parecer com

plot "< awk '{if(secondfile) print $1, $2, values[$1,$2]/$3 ; else values[$1,$2]=$3} ENDFILE{secondfile=true}' file1 file2" using 1:2:3

(Eu não entendi como você quer que as quantidades sejam computadas, mas você pode fazer isso de uma maneira similar)

    
por 21.03.2012 / 22:44

Tags