Compare commits
6 commits
1e808ae6b8
...
6cc2200683
Author | SHA1 | Date | |
---|---|---|---|
6cc2200683 | |||
51fe7460bf | |||
5691023d0c | |||
dd017fe510 | |||
8e88580d2b | |||
32ba3e7eaf |
3 changed files with 95 additions and 14 deletions
|
@ -3,7 +3,7 @@ on:
|
||||||
branches:
|
branches:
|
||||||
- "main"
|
- "main"
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
serve:
|
||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
# Cours 4.0
|
# Cours 4.0
|
||||||
|
|
||||||
[](https://myst.tools)
|
<https://cours.edgarpierre.fr>
|
||||||
|
|
||||||
|
[](https://myst.tools)
|
||||||
|
[](https://git.edgarpierre.fr/edpibu/cours4.0/actions?workflow=serve.yaml)
|
|
@ -33,15 +33,15 @@ et un niveau **bas** ("Low").
|
||||||
```{code-cell} python
|
```{code-cell} python
|
||||||
:tags: [remove-input]
|
:tags: [remove-input]
|
||||||
import altair as alt
|
import altair as alt
|
||||||
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import random
|
|
||||||
|
|
||||||
random.seed(25)
|
rng = np.random.default_rng(25)
|
||||||
|
|
||||||
n = 16
|
n = 16
|
||||||
t = range(n+1)
|
t = np.arange(n+1)
|
||||||
s = random.choices([0, 1], k=n)
|
s = rng.choice([0, 1], n+1)
|
||||||
s += s[-1:]
|
s[-1] = s[-2]
|
||||||
data = pd.DataFrame({
|
data = pd.DataFrame({
|
||||||
"t": t,
|
"t": t,
|
||||||
"s": s,
|
"s": s,
|
||||||
|
@ -49,24 +49,102 @@ data = pd.DataFrame({
|
||||||
alt.Chart(
|
alt.Chart(
|
||||||
data
|
data
|
||||||
).mark_line(
|
).mark_line(
|
||||||
interpolate="step-after"
|
interpolate="step-after",
|
||||||
|
strokeWidth=3,
|
||||||
).encode(
|
).encode(
|
||||||
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,n)),
|
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,n)),
|
||||||
alt.Y("s:Q", axis=alt.Axis(title="Signal logique", tickMinStep=1.0)).scale(domain=(0,1)),
|
alt.Y("s:Q", axis=alt.Axis(title="Signal logique", values=[0, 1], format=".0f")).scale(domain=(0,1)),
|
||||||
).properties(
|
).properties(
|
||||||
width="container",
|
width="container",
|
||||||
|
height=100,
|
||||||
)
|
)
|
||||||
|
|
||||||
```
|
```
|
||||||
Exemple de signal logique
|
Exemple de signal logique
|
||||||
````
|
````
|
||||||
|
|
||||||
Le signal logique en @logique est par exemple à l'état haut entre 1 s et 3 s,
|
Le signal logique en @logique est par exemple à l'état haut entre 2 s et 3 s,
|
||||||
et à l'état bas entre 8 s et 11 s.
|
et à l'état bas entre 3 s et 6 s.
|
||||||
Lorsque le signal passe de l'état bas à l'état haut (comme à 1 s),
|
Lorsque le signal passe de l'état bas à l'état haut (comme à 2 s),
|
||||||
on parle de **front montant**.
|
on parle de **front montant**.
|
||||||
Dans le cas contraire (comme à 3 s), on parle de **front descendant**.
|
Dans le cas contraire (comme à 3 s), on parle de **front descendant**.
|
||||||
|
|
||||||
## Les signaux analogiques
|
## Les signaux analogiques
|
||||||
|
|
||||||
Un signal analogique est un signal qui peut prendre un ensemble continu de valeurs.
|
Un signal analogique est un signal qui peut prendre un ensemble continu de valeurs.
|
||||||
|
Un exemple de signal analogique est donné en @analogique.
|
||||||
|
|
||||||
|
````{figure}
|
||||||
|
:label: analogique
|
||||||
|
```{code-cell} python
|
||||||
|
:tags: [remove-input]
|
||||||
|
import altair as alt
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
rng = np.random.default_rng(25)
|
||||||
|
|
||||||
|
n = 20
|
||||||
|
t_max = 16
|
||||||
|
|
||||||
|
t = np.linspace(0, t_max, n)
|
||||||
|
|
||||||
|
s = 5 * rng.random(n)
|
||||||
|
s[-1] = s[-2]
|
||||||
|
data = pd.DataFrame({
|
||||||
|
"t": t,
|
||||||
|
"s": s,
|
||||||
|
})
|
||||||
|
alt.Chart(
|
||||||
|
data
|
||||||
|
).mark_line(
|
||||||
|
interpolate="basis",
|
||||||
|
strokeWidth=3,
|
||||||
|
).encode(
|
||||||
|
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,t_max)),
|
||||||
|
alt.Y("s:Q", axis=alt.Axis(title="Signal analogique")).scale(domain=(0,5)),
|
||||||
|
).properties(
|
||||||
|
width="container",
|
||||||
|
height=200,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
Exemple de signal analogique
|
||||||
|
````
|
||||||
|
|
||||||
|
## Les signaux numériques
|
||||||
|
Un signal numérique est un signal qui peut prendre un ensemble discret de valeur,
|
||||||
|
c'est-à-dire un ensemble précis de valeurs distinctes (généralement des nombres entiers).
|
||||||
|
Un exemple de signal analogique est donné en @numerique.
|
||||||
|
|
||||||
|
````{figure}
|
||||||
|
:label: numerique
|
||||||
|
```{code-cell} python
|
||||||
|
:tags: [remove-input]
|
||||||
|
import altair as alt
|
||||||
|
import numpy as np
|
||||||
|
import pandas as pd
|
||||||
|
|
||||||
|
rng = np.random.default_rng(25)
|
||||||
|
|
||||||
|
n = 16
|
||||||
|
t = np.arange(n+1)
|
||||||
|
s = rng.integers(0, 16, n+1)
|
||||||
|
s[-1] = s[-2]
|
||||||
|
data = pd.DataFrame({
|
||||||
|
"t": t,
|
||||||
|
"s": s,
|
||||||
|
})
|
||||||
|
alt.Chart(
|
||||||
|
data
|
||||||
|
).mark_line(
|
||||||
|
interpolate="step-after",
|
||||||
|
strokeWidth=3,
|
||||||
|
).encode(
|
||||||
|
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,n)),
|
||||||
|
alt.Y("s:Q", axis=alt.Axis(title="Signal numérique", values=np.arange(0, 16))).scale(domain=(0,15)),
|
||||||
|
).properties(
|
||||||
|
width="container",
|
||||||
|
height=200,
|
||||||
|
)
|
||||||
|
```
|
||||||
|
Exemple de signal numérique
|
||||||
|
````
|
Loading…
Add table
Add a link
Reference in a new issue