From 2a72bda051c17e6d58b58af5b1257df75e01a985 Mon Sep 17 00:00:00 2001 From: oldesken <70648908+AndreyCortez@users.noreply.github.com> Date: Wed, 2 Feb 2022 13:42:07 -0300 Subject: [PATCH] =?UTF-8?q?tirar=20declara=C3=A7=C3=A3o=20de=20inteiro=20d?= =?UTF-8?q?os=20la=C3=A7os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Filtros/Filtros.cpp | 36 +++++++++++++++++++++--------------- Filtros/Filtros.hpp | 7 ++++--- Filtros/Teste.cpp | 6 +++--- 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/Filtros/Filtros.cpp b/Filtros/Filtros.cpp index 7922453..c16e18f 100644 --- a/Filtros/Filtros.cpp +++ b/Filtros/Filtros.cpp @@ -5,16 +5,18 @@ namespace Filtros std::vector medial_movel_simples(std::vector dados, int tamanho_da_amostra) /*Media movel simples para atenuar variações bruscas da amostragem*/ { - int tamanho_vetor_dados = vetor_dados.size(); + int tamanho_vetor_dados = dados.size(); std::vector vetor_retorno; + float acc; + for (int i = 0; i <= tamanho_vetor_dados - tamanho_da_amostra; i++) { - float acc = 0; + acc = 0; for (int j = 0; j < tamanho_da_amostra; j++) { - acc += vetor_dados[i + j]; + acc += dados[i + j]; } acc /= tamanho_da_amostra; @@ -24,22 +26,24 @@ namespace Filtros return vetor_retorno; } - std::vector media_movel_ponderada(std::vector dados, std::vectorpesos) + std::vector media_movel_ponderada(std::vector dados, std::vector pesos) /*Media movel ponderada, onde pode-se escolher o quanto cada elemento*/ { - int tamanho_vetor_dados = vetor_dados.size(); - int tamanho_vetor_pesos = vetor_pesos.size(); + int tamanho_vetor_dados = dados.size(); + int tamanho_vetor_pesos = pesos.size(); std::vector vetor_retorno; + float acc1, acc2; + for (int i = 0; i <= tamanho_vetor_dados - tamanho_vetor_pesos; i++) { - float acc1 = 0; - float acc2 = 0; + acc1 = 0; + acc2 = 0; for (int j = 0; j < tamanho_vetor_pesos; j++) { - acc1 += vetor_dados[i + j] * vetor_pesos[j]; - acc2 += vetor_pesos[j]; + acc1 += dados[i + j] * pesos[j]; + acc2 += pesos[j]; } acc1 /= acc2; @@ -50,23 +54,25 @@ namespace Filtros } std::vector media_movel_exponencial(std::vector dados, int tamanho_da_amostra) - /* + /* Media movel exponencial, um tipo de media onde os dados mais recentes possuem um peso maior */ { - int tamanho_vetor_dados = vetor_dados.size(); + int tamanho_vetor_dados = dados.size(); float alpha = 2 / ((float)tamanho_da_amostra + 1); std::vector vetor_retorno; + float acc1, acc2; + for (int i = 0; i <= tamanho_vetor_dados - tamanho_da_amostra; i++) { - float acc1 = 0; - float acc2 = 0; + acc1 = 0; + acc2 = 0; for (int j = 0; j < tamanho_da_amostra; j++) { - acc1 += vetor_dados[i + j] * pow(1 - alpha, tamanho_da_amostra - j - 1); + acc1 += dados[i + j] * pow(1 - alpha, tamanho_da_amostra - j - 1); acc2 += pow(1 - alpha, tamanho_da_amostra - j - 1); } diff --git a/Filtros/Filtros.hpp b/Filtros/Filtros.hpp index 0217ef6..2887dc0 100644 --- a/Filtros/Filtros.hpp +++ b/Filtros/Filtros.hpp @@ -2,17 +2,18 @@ #include #include #include +#include namespace Filtros { // Media movel simples - std::vector MMS(std::vector vetor_dados, int tamanho_da_amostra); + std::vector medial_movel_simples(std::vector vetor_dados, int tamanho_da_amostra); // Media movel ponderada, onde pode se escolher o quanto cada elemento // do vetor influencia no resultado da media - std::vector MMP(std::vector vetor_dados, std::vector vetor_pesos); + std::vector medial_movel_ponderada(std::vector vetor_dados, std::vector vetor_pesos); // Media movel exponencial, um tipo de media onde os dados mais recentes // possuem um peso maior - std::vector MME(std::vector vetor_dados, int tamanho_da_amostra); + std::vector medial_movel_exponencial(std::vector vetor_dados, int tamanho_da_amostra); } diff --git a/Filtros/Teste.cpp b/Filtros/Teste.cpp index 8b23e3f..35d2fa0 100644 --- a/Filtros/Teste.cpp +++ b/Filtros/Teste.cpp @@ -17,9 +17,9 @@ int main() std::vector vetor_teste{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; std::vector vetor_pesos{0.2, 0.3, 0.5}; - std::vector vetor_resultado_mms = Filtros::MMS(vetor_teste, 3); - std::vector vetor_resultado_mmp = Filtros::MMP(vetor_teste, vetor_pesos); - std::vector vetor_resultado_mme = Filtros::MME(vetor_teste, 3); + std::vector vetor_resultado_mms = Filtros::medial_movel_simples(vetor_teste, 3); + std::vector vetor_resultado_mmp = Filtros::medial_movel_ponderada(vetor_teste, vetor_pesos); + std::vector vetor_resultado_mme = Filtros::medial_movel_exponencial(vetor_teste, 3); print_vetor(vetor_teste); print_vetor(vetor_resultado_mms);