Compare commits
9 commits
8e88580d2b
...
d3c9023ed9
Author | SHA1 | Date | |
---|---|---|---|
d3c9023ed9 | |||
dd017fe510 | |||
1e808ae6b8 | |||
f0d6ac3800 | |||
1a992a8174 | |||
a31ab300c2 | |||
cb665904ee | |||
ec450c6092 | |||
8414448855 |
2 changed files with 93 additions and 17 deletions
|
@ -11,9 +11,11 @@ jobs:
|
|||
- name: Initialize virtual environment
|
||||
run: /usr/bin/python -m venv .env
|
||||
- name: Install dependencies
|
||||
run: ./.env/bin/pip install mystmd jupyterlab_myst ipykernel altair pandas
|
||||
run: ./.env/bin/pip install mystmd jupyter jupyterlab_myst ipykernel altair pandas
|
||||
- name: Build static HTML
|
||||
run: ./.env/bin/myst build --html
|
||||
run: |
|
||||
. .env/bin/activate
|
||||
myst build --execute --html
|
||||
- name: Copy files
|
||||
run: |
|
||||
rm -rf /data/srv/forgejo-runner/cours4.0
|
||||
|
|
|
@ -33,18 +33,15 @@ et un niveau **bas** ("Low").
|
|||
```{code-cell} python
|
||||
:tags: [remove-input]
|
||||
import altair as alt
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import random
|
||||
from scipy.interpolate import CubicSpline
|
||||
import pandas as pd
|
||||
|
||||
random.seed(25)
|
||||
rng = np.random.default_rng(25)
|
||||
|
||||
n = 16
|
||||
t = range(n+1)
|
||||
s = random.choices([0, 1], k=n)
|
||||
s += s[-1:]
|
||||
t = np.arange(n+1)
|
||||
s = rng.choice([0, 1], n+1)
|
||||
s[-1] = s[-2]
|
||||
data = pd.DataFrame({
|
||||
"t": t,
|
||||
"s": s,
|
||||
|
@ -52,24 +49,101 @@ data = pd.DataFrame({
|
|||
alt.Chart(
|
||||
data
|
||||
).mark_line(
|
||||
interpolate="step-after"
|
||||
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 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(
|
||||
width="container",
|
||||
height=100,
|
||||
)
|
||||
|
||||
```
|
||||
Exemple de signal logique
|
||||
````
|
||||
|
||||
Le signal logique en @logique est par exemple à l'état haut entre 1 s et 3 s,
|
||||
et à l'état bas entre 8 s et 11 s.
|
||||
Lorsque le signal passe de l'état bas à l'état haut (comme à 1 s),
|
||||
Le signal logique en @logique est par exemple à l'état haut entre 2 s et 3 s,
|
||||
et à l'état bas entre 3 s et 6 s.
|
||||
Lorsque le signal passe de l'état bas à l'état haut (comme à 2 s),
|
||||
on parle de **front montant**.
|
||||
Dans le cas contraire (comme à 3 s), on parle de **front descendant**.
|
||||
|
||||
## 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).
|
||||
|
||||
````{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
Reference in a new issue