diff --git a/.forgejo/workflows/serve.yaml b/.forgejo/workflows/serve.yaml index 8f8b4ba..247f473 100644 --- a/.forgejo/workflows/serve.yaml +++ b/.forgejo/workflows/serve.yaml @@ -3,7 +3,7 @@ on: branches: - "main" jobs: - test: + serve: runs-on: self-hosted steps: - name: Checkout repository diff --git a/README.md b/README.md index 0b581c5..cda87c9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ # Cours 4.0 -[](https://myst.tools) \ No newline at end of file +<https://cours.edgarpierre.fr> + +[](https://myst.tools) +[](https://git.edgarpierre.fr/edpibu/cours4.0/actions?workflow=serve.yaml) \ No newline at end of file diff --git a/cours/SIN/02-signaux.md b/cours/SIN/02-signaux.md index 899f7cd..919c48e 100644 --- a/cours/SIN/02-signaux.md +++ b/cours/SIN/02-signaux.md @@ -33,15 +33,15 @@ et un niveau **bas** ("Low"). ```{code-cell} python :tags: [remove-input] import altair as alt +import numpy as np import pandas as pd -import random -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, @@ -49,24 +49,102 @@ 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. \ No newline at end of file +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 +```` \ No newline at end of file