Skip to content
This repository has been archived by the owner on May 19, 2023. It is now read-only.

Commit

Permalink
tirar declaração de inteiro dos laços
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreyCortez committed Feb 2, 2022
1 parent 85dd2ce commit 2a72bda
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 21 deletions.
36 changes: 21 additions & 15 deletions Filtros/Filtros.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,18 @@ namespace Filtros
std::vector<float> medial_movel_simples(std::vector<float> 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<float> 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;
Expand All @@ -24,22 +26,24 @@ namespace Filtros
return vetor_retorno;
}

std::vector<float> media_movel_ponderada(std::vector<float> dados, std::vector<float>pesos)
std::vector<float> media_movel_ponderada(std::vector<float> dados, std::vector<float> 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<float> 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;
Expand All @@ -50,23 +54,25 @@ namespace Filtros
}

std::vector<float> media_movel_exponencial(std::vector<float> 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<float> 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);
}

Expand Down
7 changes: 4 additions & 3 deletions Filtros/Filtros.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@
#include <array>
#include <vector>
#include <math.h>
#include <stdint.h>

namespace Filtros
{
// Media movel simples
std::vector<float> MMS(std::vector<float> vetor_dados, int tamanho_da_amostra);
std::vector<float> medial_movel_simples(std::vector<float> 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<float> MMP(std::vector<float> vetor_dados, std::vector<float> vetor_pesos);
std::vector<float> medial_movel_ponderada(std::vector<float> vetor_dados, std::vector<float> vetor_pesos);

// Media movel exponencial, um tipo de media onde os dados mais recentes
// possuem um peso maior
std::vector<float> MME(std::vector<float> vetor_dados, int tamanho_da_amostra);
std::vector<float> medial_movel_exponencial(std::vector<float> vetor_dados, int tamanho_da_amostra);
}
6 changes: 3 additions & 3 deletions Filtros/Teste.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ int main()
std::vector<float> vetor_teste{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::vector<float> vetor_pesos{0.2, 0.3, 0.5};

std::vector<float> vetor_resultado_mms = Filtros::MMS(vetor_teste, 3);
std::vector<float> vetor_resultado_mmp = Filtros::MMP(vetor_teste, vetor_pesos);
std::vector<float> vetor_resultado_mme = Filtros::MME(vetor_teste, 3);
std::vector<float> vetor_resultado_mms = Filtros::medial_movel_simples(vetor_teste, 3);
std::vector<float> vetor_resultado_mmp = Filtros::medial_movel_ponderada(vetor_teste, vetor_pesos);
std::vector<float> vetor_resultado_mme = Filtros::medial_movel_exponencial(vetor_teste, 3);

print_vetor(vetor_teste);
print_vetor(vetor_resultado_mms);
Expand Down

0 comments on commit 2a72bda

Please sign in to comment.