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