legkisebb-legnagyobb érték figyelmen kívül hagyása
legkisebb-legnagyobb érték figyelmen kívül hagyása
Üdv!
Az lenne a gondom, hogy ha megmérem az analóg láb értékét többször, túlmintavételezéssel, hogy tudom azokból az 5 legkisebb és az 5 legnagyobb értéket figyelmen kívül hagyni.
Pl.:
for (int x = 0; x < 64; x++){int ertek=analogRead(3); ertek2=ertek1+ertek2;}
A 64 mérésből az 5 legnagyobbat és az 5 legkisebbet nem venné figyelembe.
Az lenne a gondom, hogy ha megmérem az analóg láb értékét többször, túlmintavételezéssel, hogy tudom azokból az 5 legkisebb és az 5 legnagyobb értéket figyelmen kívül hagyni.
Pl.:
for (int x = 0; x < 64; x++){int ertek=analogRead(3); ertek2=ertek1+ertek2;}
A 64 mérésből az 5 legnagyobbat és az 5 legkisebbet nem venné figyelembe.
Re: legkisebb-legnagyobb érték figyelmen kívül hagyása
1. Csinálsz egy sorbarendezést
2. 6. .... 59. Elemet átlagolod
Ja és ehhez a mérési eredményt mented. Mind a 64et.
2. 6. .... 59. Elemet átlagolod
Ja és ehhez a mérési eredményt mented. Mind a 64et.
http://www.tavir.hu - a gazda 
Re: legkisebb-legnagyobb érték figyelmen kívül hagyása
Szerintem a leg egyszerűbb megvalósítani:
11. Buborékrendezés (bubble sort)
https://infoc.eet.bme.hu/ea07/
A "start következő folyamatos" gombok használatával könyen megérthető a müködése.
bubble helyet használj uint16_t
11. Buborékrendezés (bubble sort)
https://infoc.eet.bme.hu/ea07/
A "start következő folyamatos" gombok használatával könyen megérthető a müködése.
bubble helyet használj uint16_t
Kód: Egész kijelölése
// paraméter:
// *t pointer a tömbre
// db tömb elemek száma
void buborek(uint16_t *t, int db) {
uint8_t i, j;
/* egyre rövidebb tömbrészletek ciklusa */
for (i = db-1; i > 0; --i)
/* egymás utáni párok ciklusa */
for (j = 0; j < i; ++j)
if (t[j+1] < t[j]) { /* összehasonlítás */
uint16_t temp = t[j];
t[j] = t[j+1]; /* csere */
t[j+1] = temp;
}
}
Re: legkisebb-legnagyobb érték figyelmen kívül hagyása
Köszönöm!
Ez még nekem elég "magas". Talán később,
Ez még nekem elég "magas". Talán később,
Re: legkisebb-legnagyobb érték figyelmen kívül hagyása
Nem szabad feladni!
Próbálkozz, aztán majd segítünk!
Itt 1 példa:
Próbálkozz, aztán majd segítünk!
Itt 1 példa:
Kód: Egész kijelölése
// atlagolo.ino
// paraméter:
// *t pointer a tömbre
// db tömb elemek száma
void buborek(uint16_t *t, uint8_t db) {
uint8_t i, j;
uint16_t temp;
/* egyre rövidebb tömbrészletek ciklusa */
for (i = db-1; i > 0; --i)
/* egymás utáni párok ciklusa */
for (j = 0; j < i; ++j)
if (t[j+1] < t[j]) { /* összehasonlítás */
temp = t[j];
t[j] = t[j+1]; /* csere */
t[j+1] = temp;
}
}
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
uint16_t ertek[64], *pt; // tömb a mérési eredmények számára
uint16_t ertek2 = 0;
// mérünk 64 szer és eltároljuk a tömbe
for (int x = 0; x < 64; x++){ ertek[x]=analogRead(3);}
pt = ertek; // pointert a tömbre állítjuk
buborek(pt, 64); // A tömböt sorbarendezzük nagyság szerint
// elvégezzük az összeadást
for (int x = 5; x < (64 - 5); x++){ ertek2 += ertek[x];}
ertek2 /= 54; // átlagot számolunk
// ....
}
Re: legkisebb-legnagyobb érték figyelmen kívül hagyása
Kösz ezt is!
Fogok próbálkozni.
Fogok próbálkozni.
