Skocz do zawartości

[Konkurs] GŁOSOWANIE - Proxxon FBS 240/E - #4 - Uniwersalna funkcja


Wybieram funkcje użytkowników:  

26 użytkowników zagłosowało

  1. 1. Wybieram funkcje użytkowników:

    • aixI
      2
    • Hudyvolt
      7
    • kampo
      2
    • corsair
      5
    • OldSkull
      4
    • klonyyy
      4
    • Wojtasso
      2

Ankieta jest już zamknięta!


Pomocna odpowiedź

Napisano

Rozpoczynamy głosowanie w IV edycji konkursu organizowanego razem, ze SwiatNarzedzi.pl, w którym do wygrania są narzędzia Proxxona FBS 240/E. Moja recenzja nagród dostępna jest na blogu w artykule: Zestaw dla robotyka – Proxxon + statyw wiertarski + imadło.

Zadaniem konkursowym było przedstawienie uniwersalnej funkcji. Więcej na ten temat można znaleźć w osobnym artykule na blogu, a wszystkie zgłoszenia dostępne są w tym temacie na forum.

W celu wyłonienia zwycięzcy uruchomiona została ankieta (dostępna powyżej). Każdy zalogowanych użytkownik może oddać maksymalnie 3 głosy (ankieta wielokrotnego wyboru). Dozwolone są głosy na siebie. Głosowanie trwa do 08.07 (włącznie). Zastrzegam prawo do weryfikacji głosów i usunięcia tych, które zostaną zdobyte w podejrzany sposób.

  • 2 tygodnie później...

Wyniki są dostępne od wczoraj w miejscu ankiety. Gratulacje dla Hudegovolta, który wygrał nowiutkiego Proxxona!

Gratulacje dla zwycięzcy 🙂

Mam przy okazji takie pytanie. Z ciekawości przeczytałem kod zwycięskiej funkcji i znalazłem coś takiego:

wagi[i] = 2^((czujniki/2)-i); 

Co ten kod ma niby robić? Moim zdaniem ta funkcja nie działa jak powinna...

Gratulacje dla zwycięzcy 🙂

Mam przy okazji takie pytanie. Z ciekawości przeczytałem kod zwycięskiej funkcji i znalazłem coś takiego:

wagi[i] = 2^((czujniki/2)-i); 

Co ten kod ma niby robić? Moim zdaniem ta funkcja nie działa jak powinna...

No to mamy hamowanie z ABS'em 😉))

Co ten kod ma niby robić? Moim zdaniem ta funkcja nie działa jak powinna...

pierwsze wywołanie funkcji wyliczenia wagi dla poszczególnych czujników.

zmienna czujniki zawiera liczbę czujników,

2: {2, -2}

3: {2, 0, -2}

4: {4, 2, -2, -4}

5: {4, 2, 0, -2, -4}

6: {8, 4, 2, -2, -4, -8}

itd.

błąd jest liczony jako średnia ważona stanów czujników z wagami wyliczonymi jak powyżej.

Domyślam się, że tak to miało działać. Sprawdź, czy na pewno tak jest. Ja obstawiam, że wyniki będą niestety inne (podpowiedź: ^ w języku C to nie potęgowanie, ale XOR).

Wynik:

2:{3,-3}

3:{3,0,-3}

4:{0,3,-3,0}

5:{0,3,0,-3,0}

6:{1,0,3,-3,0,-1}

Teraz dużo lepiej, powinno działać bez problemu. Co prawda można to zrobić trochę prościej i bez rekurencji, wykorzystując operator << (przesunięcie bitowe w lewo). Wtedy patch wyglądałby tak:

		wagi[i] = 1 << ((czujniki / 2) - i);

Na to nie wpadłem. Faktycznie dużo prostsze rozwiązanie.

Pozwolisz, że zamieszczę tę linijkę w swoim poście jako propozycję lepszego rozwiązania?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...