From 5e91a0b044912215fd30505bb8006111cac09849 Mon Sep 17 00:00:00 2001 From: William Jardim Date: Wed, 1 Jan 2025 14:49:54 -0300 Subject: [PATCH] =?UTF-8?q?Adicionado=20m=C3=A9todo=20diferencaValores=20p?= =?UTF-8?q?ara=20calcular=20a=20diferen=C3=A7a=20com=20os=20valores=20ante?= =?UTF-8?q?riores=20de=20um=20Vectorization.Vector?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Vector.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/Vector.js b/src/Vector.js index 1e4736b..dbdd508 100644 --- a/src/Vector.js +++ b/src/Vector.js @@ -2291,6 +2291,45 @@ window.Vectorization.Vector = function( config=[], classConfig={} ){ return Vectorization.Math.correlation( Vectorization.Vector(context.raw()), outroVector ); } + /** + * Calcula as diferenças com os valores anteriores: + * + * Para cada número no Vector, vai subtrair ele com um número anterior(ou melhor dizendo com o número cujo índice seja "indiceNumero - quantidadeElementosAtraz", caso exista. Se não existir, ele coloca um valor inválido. + * Voce pode incluir um parâmetro adicional que permite fazer uma subtração acumulada + * + * @param {number} quantidadeElementosAtraz + * @param {string} acumulacao + * + * @returns {Vectorization.Vector} + */ + context.diferencaValores = function( quantidadeElementosAtraz, acumulacao="nenhuma" ){ + if( !quantidadeElementosAtraz ){ + throw 'Voce precisa dizer quantos elementos atraz de cada elemento voce quer usar!'; + } + + let vetorResultado = Vectorization.Vector([]); + + context.forEach(function(indiceAtual, valorAtual, contextoEste){ + + const indiceAnterior = indiceAtual - Number(quantidadeElementosAtraz); + const valorAnterior = context.lerIndice( indiceAnterior ); + + if( valorAnterior != undefined ) { + const subtracaoFeita = valorAtual - valorAnterior; + const subtracaoTratada = context.usarEscalares == true ? Vectorization.Scalar(subtracaoFeita) : subtracaoFeita; + + vetorResultado.adicionarElemento( subtracaoTratada ); + + //Caso não exista + }else{ + vetorResultado.adicionarElemento( context.usarEscalares == true ? Vectorization.Scalar( NaN ) : NaN ); + } + + }); + + return vetorResultado; + } + /** * Método que converte este Vectorization.Vector para um Vectorization.Vector avançado, onde cada elemento dentro do mesmo é um Vectorization.Scalar */