Monday 13 November 2017

Moving Average Gnuplot


Eu sou muito novo neste fórum. Tenho um problema com um script gnuplot. Eu quero que o programa seja lido a partir de um arquivo e tome a média dos dados em uma coluna, mas apenas duas linhas subseqüentes. Este é um exemplo do meu arquivo de dados: por exemplo, focando na 4ª coluna, quero realizar a média da 1ª linha com o 2º, o 3º com o 4º e assim por diante. Existe alguma função embutida no gnuplot ou tenho que escrever meu próprio Agradecemos muito. Algumas operações simples em linhas ajacent são possíveis com gnuplot: você deve salvar o valor de uma linha usando uma atribuição na instrução de uso e a trama apenas a cada segundo ponto: A instrução de uso funciona da seguinte forma, primeiro você atribui o valor do anterior Linha (que está nesse ponto ainda em curr) para a variável anterior. Então você atribui o valor da linha atual ao curr e, finalmente, faz a média se você estiver em um número de linha ímpar (as linhas começam em 0) ou dão um ponto inválido com 10. O resultado com a versão 5.0 é Como você vê, você obtém apenas pontos, embora eu especifique pontos de linha. O inválido 10 faz o gnuplot interromper as linhas aqui, então nenhuma linha é plotada. Com o gnuplot 5.0 você pode salvar o resultado da filtragem para um arquivo temporário (ou também para uma estrutura heredoc, o avg) e traçar os dados processados ​​com uma segunda chamada: Observe que isso não funcionaria com a versão 4.6, uma vez que esta versão tem Um tratamento diferente da análise de arquivos de dados com NaN dentro, como o gerado pelo gnuplot. Finalmente, você também pode usar uma ferramenta externa como awk para fazer o processamento para você, como a média de rolagem do PLn no gnuplot Depois de ler este exemplo, que forneceu uma média balanceada fixa de 5 amostras, junte isso, que proporcionará uma média balanceada de tamanho variável e que Pode ser reutilizado para traços múltiplos. O sprintf cujo padrão está condicional (int (0) 0) redefinirá o avgdata quando um novo argumento for iniciado. Suponho que isso dependa do enredo que começa na primeira fila - talvez uma melhor técnica possa ser encontrada. Min (a, b) a gt b. B. Uma amostra (n) min (int (0), n) avgdata sumn (dados, n) (n lt 0. 0. palavra (dados, palavras (dados) - n) sumn (dados, n - 1)) avg ( X, n) (avgdata sprintf (sf, (int (0) 0): avgdata, x), sumn (avgdata, amostras (n)) amostras (n)) Então, um enredo pode ser feito como esse que traçaria um Média móvel dos valores anteriores 5: plot 0: file. dat usando 0: (avg (coluna (3), 5)) 1 comentário: Olá. Seu script é maravilhoso, mas a saída é deslocada de uma posição em relação à solução original. Como isso pode ser corrigido? Obrigado

No comments:

Post a Comment