diff --git a/src/Matrix.js b/src/Matrix.js index e7ef14d..f8b1128 100644 --- a/src/Matrix.js +++ b/src/Matrix.js @@ -831,6 +831,43 @@ window.Vectorization.Matrix = function( config, classConfig={} ){ } } + /** + * Subfatiar esta matriz em varias partes, cada uma com uma CERTA QUANTIDADE FIXA DE AMOSTRAS + * + * Agrupa sequencialmente amostras, de acordo com O TAMANHO DA FATIA , por exemplo, se for uma fatia de 7 amostras, então, ele vai dividir o dataset em subgrupos, cada um tendo 7 amostras cada. + * Ou seja, o dataset seria dividido de 7 em 7 amostras. Ou seja, cada fatia teria 7 amostras. + * + * NOTA: Cada parte vai ser uma nova Vectorization.Matrix, contendo Vectorization.Vector(s) dentro. Ou seja, cada Vectorization.Vector dentro dessa matrix resultado, vai ser uma amostra. + * + * @param {Number} tamanhoFatia - O tamanho das fatias(quantidade de amostras por fatia) + * @param {Number} iniciarEm - O indice que ele vai iniciar o fatiamento + * + * @returns { Array } + */ + context.subfatiar = function( tamanhoFatia, iniciarEm=0 ){ + if(!tamanhoFatia){ + throw 'Voce precisa definir uma quantidade de amostras para as fatias!'; + } + if( tamanhoFatia > context.linhas ){ + console.warn(`O tamanho de fatia ${tamanhoFatia} é maior do que a quantidade de linhas da matrix`); + } + + let fatiasFeitas = []; + let indiceFinalFatia = (tamanhoFatia - iniciarEm); + + for( let indiceAtual = iniciarEm ; indiceAtual < context.linhas ; indiceAtual += tamanhoFatia ){ + + const sliceAtual = context.clonar() + .slice( indiceAtual, indiceFinalFatia ); + + indiceFinalFatia = indiceFinalFatia + tamanhoFatia; + + fatiasFeitas.push( sliceAtual ); + } + + return fatiasFeitas; + } + context.extrairValoresLinha = context.getLinha; context._definirValorLinha = function(indice, indiceAdicionar, vetorDaLinha){ diff --git a/src/Vector.js b/src/Vector.js index 3f56552..a624fa0 100644 --- a/src/Vector.js +++ b/src/Vector.js @@ -2344,6 +2344,43 @@ window.Vectorization.Vector = function( config=[], classConfig={} ){ return vetorResultado; } + /** + * Subfatiar este Vector em varias partes, cada uma com uma CERTA QUANTIDADE FIXA DE ELEMENTOS + * + * Agrupa sequencialmente os números, de acordo com O TAMANHO DA FATIA , por exemplo, se for uma fatia de 7 números, então, ele vai dividir o Vector em subgrupos, cada um tendo 7 números cada. + * Ou seja, o Vector seria dividido de 7 em 7 números. Ou seja, cada fatia teria 7 números. + * + * NOTA: Cada parte vai ser um novo Vectorization.Vector, contendo números dentro. + * + * @param {Number} tamanhoFatia - O tamanho das fatias(quantidade de números por fatia) + * @param {Number} iniciarEm - O indice que ele vai iniciar o fatiamento + * + * @returns { Array } + */ + context.subfatiar = function( tamanhoFatia, iniciarEm=0 ){ + if(!tamanhoFatia){ + throw 'Voce precisa definir uma quantidade de números para as fatias!'; + } + if( tamanhoFatia > context.length ){ + console.warn(`O tamanho de fatia ${tamanhoFatia} é maior do que a quantidade de números deste Vector`); + } + + let fatiasFeitas = []; + let indiceFinalFatia = (tamanhoFatia - iniciarEm);; + + for( let indiceAtual = iniciarEm ; indiceAtual < context.length ; indiceAtual += tamanhoFatia ){ + + const sliceAtual = context.clonar() + .slice( indiceAtual, indiceFinalFatia ); + + indiceFinalFatia = indiceFinalFatia + tamanhoFatia; + + fatiasFeitas.push( sliceAtual ); + } + + return fatiasFeitas; + } + /** * Método que converte este Vectorization.Vector para um Vectorization.Vector avançado, onde cada elemento dentro do mesmo é um Vectorization.Scalar */