Ovsem pozor, funkce map nefunguje tak uplne "spravne" jak by o dni clovek cekal, autori to kdysi zvorali a ted uz to opravovat nebudou, protoze by se to pak chovalo spravne a skripty, ktere spolehaji na spatne chovani (jsou vubec nejake, kde by na tom zalezelo ) by se najednou chovaly jinak - to je oficialni vyjadreni autoru.
Stejne jako ta nesmyslna dira na UNO pinech vznikla omylem, kdyz byli ve chvatu a museli vymyslet nazev Arduino - opet to nasledne menit nebudou, protoze uz to tak jednou je a navic to Arduinu dodava lidsky rozmer, protoze ma chybu - opet oficialni vyjadreni autoru
Detailni rozbor map treba tady:
http://robodoupe.cz/2020/arduino-potouc ... unkce-map/
Matematický výpočet
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Matematický výpočet
díky za ten opravený map
to mi vytrhlo trn z paty
to mi vytrhlo trn z paty
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
-
- Příspěvky: 39
- Registrován: 31 srp 2017, 22:29
- Reputation: 0
Re: Matematický výpočet
Já bych úplně nesouhlasil s tvrzením, že funkce MAP nefunguje tak úplně správně. Z matematického hlediska funguje naprosto správně.
příklad "vystup = map( vstup, 1, 10, 1, 5);"
1--- 1
2--- 1,090909091
3--- 1,636363636
4--- 2,181818182
5--- 2,727272727
6--- 3,272727273
7--- 3,818181818
8--- 4,363636364
9--- 4,909090909
10-- 5
Toto jsou zhruba výsledky této funkce (ne 100% přesné, na to bych potřeboval lepší vzdělání), program je však vypisuje bez desetinných míst.
příklad "vystup = map( vstup, 1, 10, 1, 5);"
1--- 1
2--- 1,090909091
3--- 1,636363636
4--- 2,181818182
5--- 2,727272727
6--- 3,272727273
7--- 3,818181818
8--- 4,363636364
9--- 4,909090909
10-- 5
Toto jsou zhruba výsledky této funkce (ne 100% přesné, na to bych potřeboval lepší vzdělání), program je však vypisuje bez desetinných míst.
Re: Matematický výpočet
No jo, jenže vrací long, takže k uvedeným výsledkům se člověk nikdy nedostane. A to je to, co je matoucí. Ačkoliv to v dokumentaci zmiňují, já jsem si toho také nikdy nevšiml, dokud na to gilhad neupozornil.
Ale je pravda, že jsem snad nikdy nepoužil variantu "z většího na menší".
Ale je pravda, že jsem snad nikdy nepoužil variantu "z většího na menší".
Re: Matematický výpočet
Zajicjarda: map se chova podle zadani, dokonce to pocita dle uvedeneho vzorecku. Akorat to neni to, co by clovek ocekaval.
Samozrejme doslovne to sedi - mapuje krajni bodu na krajni body a body mezi tim "nejak" mezi to.
Problem je v tom, ze normalne by clovek ocekaval, ze to mapovani bude v ramci moznosti linearni a rovnomerne, co tady rozhodne neni. A dokumentace to ani neslibuje.
Kdyby mapovala karjni body na krajni body a hodnoty mezi tim na hodnoty mezitim (coz slibuje dokumentace), ale naprosto nahodne a napreskacku, tak by - z hlediska dokumentace - to bylo v poradku, ale z hlediska bezneho pouziti naprosta kravina.
Takovehle veci, ktere formalne splnuji zadani, ale zaroven fakticky delaji neco zcela jineho, nez pro co by je clovek normalne potrebovat pouzit jsou proste chybne na jine urovni, nez ciste formalisticke. Funkce, ktera dle dokumentace "precte radek vstupu a vrati retezec" a fakticky precte radek vstupu, zahodi ho a vrati vzdy stejny retezes "houby s octem" je sice formalne spravna, ale fakticky je spatne a k nicemu.
Funkce, ktera mapuje vstupni rozsah na vystupni a vstupni rozsah 0..100 namapuje na vystupni rozsah 0-1 tak, ze 100->1 a 0..99 -> 0 je dejme tomu "formalne spravna" ale jinak nepouzitelna - protoze pricetna funkce by to namapovala 0..50->0 a 51..100->1 a tohle je to, co by od toho clovek cekal, ze bude delat, aby mu usnadnila praci. Zvlaste, pokud mluvime v kontextu Arduina, ktere miri na zacatecniky, kteri maji problem vubec precist dokumentaci, natoz se vyznat v tom, jak jsou jednotlive funkce interne implementovany a jak se to odrazi na tom, co davaji za vysledky. Pak se vozit na slovickach, kdyz to intuitivne dava naproste kraviny je proste podraz na uzivatele. (zvlaste kdyz spravna implementace neni o moc slozitejsi nez oficialni a dela to, co by clovek od funkce jmenem map ocekaval - ze to namapuje nejak v ramci moznosti pricetne a rovnomerne.
Samozrejme doslovne to sedi - mapuje krajni bodu na krajni body a body mezi tim "nejak" mezi to.
Problem je v tom, ze normalne by clovek ocekaval, ze to mapovani bude v ramci moznosti linearni a rovnomerne, co tady rozhodne neni. A dokumentace to ani neslibuje.
Kdyby mapovala karjni body na krajni body a hodnoty mezi tim na hodnoty mezitim (coz slibuje dokumentace), ale naprosto nahodne a napreskacku, tak by - z hlediska dokumentace - to bylo v poradku, ale z hlediska bezneho pouziti naprosta kravina.
Takovehle veci, ktere formalne splnuji zadani, ale zaroven fakticky delaji neco zcela jineho, nez pro co by je clovek normalne potrebovat pouzit jsou proste chybne na jine urovni, nez ciste formalisticke. Funkce, ktera dle dokumentace "precte radek vstupu a vrati retezec" a fakticky precte radek vstupu, zahodi ho a vrati vzdy stejny retezes "houby s octem" je sice formalne spravna, ale fakticky je spatne a k nicemu.
Funkce, ktera mapuje vstupni rozsah na vystupni a vstupni rozsah 0..100 namapuje na vystupni rozsah 0-1 tak, ze 100->1 a 0..99 -> 0 je dejme tomu "formalne spravna" ale jinak nepouzitelna - protoze pricetna funkce by to namapovala 0..50->0 a 51..100->1 a tohle je to, co by od toho clovek cekal, ze bude delat, aby mu usnadnila praci. Zvlaste, pokud mluvime v kontextu Arduina, ktere miri na zacatecniky, kteri maji problem vubec precist dokumentaci, natoz se vyznat v tom, jak jsou jednotlive funkce interne implementovany a jak se to odrazi na tom, co davaji za vysledky. Pak se vozit na slovickach, kdyz to intuitivne dava naproste kraviny je proste podraz na uzivatele. (zvlaste kdyz spravna implementace neni o moc slozitejsi nez oficialni a dela to, co by clovek od funkce jmenem map ocekaval - ze to namapuje nejak v ramci moznosti pricetne a rovnomerne.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů