Boa tarde Pessoal,

Alguém me pode ajudar a perceber como posso calcular o desvio padrão de um array no arduino?

Exibições: 4871

Responder esta

Respostas a este tópico

Boa tarde DE,

Exite um biblioteca do arduino que é para ser usada com fins estatísticos.

E a Statistic.h, e mais informação sobre ela em: https://playground.arduino.cc/Main/Statistics.

Acho que a função que calcula o desvio padrão ( standard deviation) é a seguinte : pop_stdev().

Neste link tem um exemplo de uso com vários resultados estatísticos.

RV

existe alguma forma de fazer o Desvio padrão por código sem utilizar essa biblioteca?

e que eu queria aprender a fazê-lo.

Mineirin eu estava a pensar em:

float acc[10] = {1.0,0.5,0.5,0.0,0.0,-0.5,-1.0,-1.0,-0.5,0.0};
int N = sizeof(acc)/sizeof(float);
float sum = 0;
float despad;
float minimo = 0;
float maximo = 0;
float media;

//==================================
void setup()
{

Serial.begin(9600);
desPad;

}
//======================================
void loop()
{

}
//=========================================
void desPad(float arr[])
{

float soma = 0;

for ( int i = 0; i < N; i++) {
soma = soma + acc[i];
}
media = soma / N;

//=============================

for (int i = 0; i < N; i++) {
if (acc[i] > maximo) {
maximo = acc[i];
}
}

//=============================

for (int i = 0; i < N; i++) {
if (acc[i] < minimo) {
minimo = acc[i];
}
}

//===============================

float x[10];
float sum = 0;
for (int i = 0; i < N; i++) {
x[i] = (acc[i] - media) * (acc[i] - media);
sum = sum + x[i];
}
despad = sqrt(sum / N);

}

Mas nao esta a dar Minerim.

Se não entender meu skect AUTO-EXPLICATIVO e que gera automaticamente SEM USO DE BIBLIOTECAS vai ser difícil você entender!

Fiquei um tempão pra deixar esse Sketch"bonitinho" rsrs!

Bônus adicionais como gerar a sequencia Fibonacci para criar o array!

Anexos

Mário Muito obrigado esta excelente, voce fez isso e muito mais  :P perfeito!!!!.

Amigo, corrigi alguns erros, se baseie nesse!

Anexos

Obrigado Mario 5 estrelas..

Isso ficou excelente! Muito obrigado! 

Não há de que!

Cara, no final o algoritmo fica assim:

int vetor[] = {13,8,34,1,5,3,1,0,21,2};
int tamanho = sizeof(vetor)/sizeof(int);
float soma=0, media_=0, variancia_=0, desviopadrao_=0, somadosquadrados=0;

for (short i=0; i < tamanho; ++i){
soma += vetor[i];
}
media_= soma/tamanho;

for (short i=0; i < tamanho; ++i){
somadosquadrados += sq (vetor[i]-media_);
}
variancia_ = somadosquadrados / (tamanho-1);
desviopadrao_ = sqrt (variancia_);

Uiii assim ainda ficou melhor.

mais pequeno e limpo.:P

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço