PymateIO-mapping: Difference between revisions

From pymate.io wiki
Jump to navigation Jump to search
(Created page with "# Abstract The {{fn|map()}} # Bibliothèques maps La bibliothèque [maps.py](lib/maps.py) propose des functions permettant d'implémenter facilement des traitement d'interpolation, de catégorisation et autres. # fonction map() La fonction `map()` est utilisée pour effectuer une interpolation linéaire entre deux valeurs. `maps()` retourne un float qui peut éventuellement être transformé en entier en réalisant un casting avec `int()`. ``` python def map(value, i...")
 
No edit summary
Line 1: Line 1:
# Abstract
# Abstract


The {{fn|map()}}
The {{fname|map()}} is very popular function in Arduino world.


# Bibliothèques maps
{{fname|map()}} is a very useful linear interpolation function also available under MicroPython ([sourced from here](https://github.com/mchobby/esp8266-upy/blob/master/LIBRARIAN/maps_readme.md)).


La bibliothèque [maps.py](lib/maps.py) propose des functions permettant d'implémenter facilement des traitement d'interpolation, de catégorisation et autres.
Pymate includes the {{fname|maps.py}} library regrouping interpolation, categorization and other functions.


# fonction map()
== map() function ==
La fonction `map()` est utilisée pour effectuer une interpolation linéaire entre deux valeurs. `maps()` retourne un float qui peut éventuellement être transformé en entier en réalisant un casting avec `int()`.
La fonction `map()` est utilisée pour effectuer une interpolation linéaire entre deux valeurs. `maps()` retourne un float qui peut éventuellement être transformé en entier en réalisant un casting avec `int()`.
``` python
 
def map(value, istart, istop, ostart, ostop):
<nowiki>def map(value, istart, istop, ostart, ostop):</nowiki>
```


avec:
avec:
Line 25: Line 24:
La fonction retourne la valeur de sortie (float) correspondant à la valeur d'entrée `value`
La fonction retourne la valeur de sortie (float) correspondant à la valeur d'entrée `value`


# fonction ranking()
== ranking() function ==
 
La fonction `ranking()` permet de catégoriser facilement une valeur d'entrée parmi une liste de valeurs précisée dans `ranges`. La fonction permet également de transposer la valeur catégorisée avec une des valeurs de sortie mentionnées dans `transposed` (si celui-ci est défini).
La fonction `ranking()` permet de catégoriser facilement une valeur d'entrée parmi une liste de valeurs précisée dans `ranges`. La fonction permet également de transposer la valeur catégorisée avec une des valeurs de sortie mentionnées dans `transposed` (si celui-ci est défini).


``` python
<nowiki>def ranking( value, ranges, transposed=None ):</nowiki>
def ranking( value, ranges, transposed=None ):
```


avec:
avec:
Line 65: Line 63:
remarks: l'appel pourrait également être écrit `result = ranking( val, [10,20,30,40], "ABCD" )`
remarks: l'appel pourrait également être écrit `result = ranking( val, [10,20,30,40], "ABCD" )`


# fonction slice_by()
== slice_by() function ==
 
La fonction `slice_by()` permet diviser un liste en sous-listes de N éléments.
La fonction `slice_by()` permet diviser un liste en sous-listes de N éléments.


``` python
<nowiki>def slice_by( lst, by_len ):</nowiki>
def slice_by( lst, by_len ):
```


avec:
where:


* __lst__ : la liste source.
* __lst__ : la liste source.

Revision as of 21:45, 11 September 2026

  1. Abstract

The map() is very popular function in Arduino world.

map() is a very useful linear interpolation function also available under MicroPython ([sourced from here](https://github.com/mchobby/esp8266-upy/blob/master/LIBRARIAN/maps_readme.md)).

Pymate includes the maps.py library regrouping interpolation, categorization and other functions.

map() function

La fonction `map()` est utilisée pour effectuer une interpolation linéaire entre deux valeurs. `maps()` retourne un float qui peut éventuellement être transformé en entier en réalisant un casting avec `int()`.

def map(value, istart, istop, ostart, ostop):

avec:

  • __value__ : valeur d'entrée (entier ou float) située entre un minimum `istart` et un maximum `istop`.
  • __istart__ : valeur minimale de la plage d'entrée (entier ou float).
  • __istop__ : valeur maximale de la plage d'entrée (entier ou float).
  • __ostart__ : borne inférieure de la valeur de sortie (entier ou float).
  • __ostop__ : borne supérieur de la valeur de sortie (entier ou float).

retourne:

La fonction retourne la valeur de sortie (float) correspondant à la valeur d'entrée `value`

ranking() function

La fonction `ranking()` permet de catégoriser facilement une valeur d'entrée parmi une liste de valeurs précisée dans `ranges`. La fonction permet également de transposer la valeur catégorisée avec une des valeurs de sortie mentionnées dans `transposed` (si celui-ci est défini).

def ranking( value, ranges, transposed=None ):

avec:

  • __value__ : valeur comparée aux différents intervalles. Lorsqu'une valeur tombe dans un intervalle, la limite inférieure de celui-ci est retourné (ou valeur transposée correspondante). `None` est retourné si `value` est en dessous du premier intervalle.
  • __ranges__ : liste des valeurs croissantes définissant les n intervalles.
  • __transposed__ : (optionnel) liste des valeurs transposées correspondant à aux intervalles. Si définit c'est la valeur transposée qui est retournée n lieu et place de la borne inférieure de l'intervalle.

retourne:

La borne inférieure de l'intervalle dans lequel la valeur `value` tombe ou `None`. Si une liste de valeurs transposée existe alors le résultat (borne inférieure) est extrait de la liste `transposed` avant d'être retourné

Exemple: ``` result = ranking( val, [10,20,30,40] ) ```

  • retourne None si val < 10
  • retourne 10 si val>= 10 et val < 20
  • retourne 20 si val>= 20 et val < 30
  • retourne 30 si val>= 30 et val < 40
  • retourne 40 si val>= 40

``` result = ranking( val, [10,20,30,40], ["A", "B", "C", "D"] ) ```

  • retourne None si val < 10
  • retourne "A" si val>= 10 et val < 20
  • retourne "B" si val>= 20 et val < 30
  • retourne "C" si val>= 30 et val < 40
  • retourne "D" si val>= 40

remarks: l'appel pourrait également être écrit `result = ranking( val, [10,20,30,40], "ABCD" )`

slice_by() function

La fonction `slice_by()` permet diviser un liste en sous-listes de N éléments.

def slice_by( lst, by_len ):

where:

  • __lst__ : la liste source.
  • __by_len__ : le nombre d'élément dans chaque sous-liste.


Exemple: ``` python from maps import slice_by

l = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26] print( "slice by 5", slice_by(l,5) ) ```

ce qui affiche le resultat suivant:

``` slice by 5 [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15], [16, 17, 18, 19, 20], [21, 22, 23, 24, 25], [26]] ```