Merge branch 'main' into cours
This commit is contained in:
commit
b032bb8610
5 changed files with 114 additions and 60 deletions
|
@ -9,12 +9,12 @@ jobs:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
- name: Initialize virtual environment
|
- name: Initialize virtual environment
|
||||||
run: /usr/bin/python -m venv .env
|
run: /usr/bin/python -m venv .venv
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: ./.env/bin/pip install mystmd jupyter jupyterlab_myst ipykernel altair pandas
|
run: ./.venv/bin/pip install -r requirements.txt
|
||||||
- name: Build static HTML
|
- name: Build static HTML
|
||||||
run: |
|
run: |
|
||||||
. .env/bin/activate
|
. .venv/bin/activate
|
||||||
myst build --execute --html
|
myst build --execute --html
|
||||||
- name: Copy files
|
- name: Copy files
|
||||||
run: |
|
run: |
|
||||||
|
|
|
@ -32,32 +32,26 @@ et un niveau **bas** ("Low").
|
||||||
:label: fig:sig-logique
|
:label: fig:sig-logique
|
||||||
```{code-cell} python
|
```{code-cell} python
|
||||||
:tags: [remove-input]
|
:tags: [remove-input]
|
||||||
import altair as alt
|
import matplotlib.pyplot as plt
|
||||||
|
from matplotlib import ticker
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
|
||||||
|
|
||||||
rng = np.random.default_rng(25)
|
rng = np.random.default_rng(25)
|
||||||
|
|
||||||
n = 16
|
n = 16
|
||||||
t = np.arange(n+1)
|
t = np.arange(n+1)
|
||||||
s = rng.choice([0, 1], n+1)
|
s = rng.choice([0, 1], n)
|
||||||
s[-1] = s[-2]
|
|
||||||
data = pd.DataFrame({
|
fig, ax = plt.subplots()
|
||||||
"t": t,
|
ax.stairs(s, t, lw=3)
|
||||||
"s": s,
|
ax.set(
|
||||||
})
|
xlim=(0, n),
|
||||||
alt.Chart(
|
ylim=(-.5, 1.5),
|
||||||
data
|
xlabel="Temps (s)",
|
||||||
).mark_line(
|
ylabel="Signal logique",
|
||||||
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", values=[0, 1], format=".0f")).scale(domain=(0,1)),
|
|
||||||
).properties(
|
|
||||||
width="container",
|
|
||||||
height=100,
|
|
||||||
)
|
)
|
||||||
|
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
|
||||||
|
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
|
||||||
```
|
```
|
||||||
Exemple de signal logique
|
Exemple de signal logique
|
||||||
````
|
````
|
||||||
|
@ -77,35 +71,38 @@ Un exemple de signal analogique est donné en @fig:sig-analogique.
|
||||||
:label: fig:sig-analogique
|
:label: fig:sig-analogique
|
||||||
```{code-cell} python
|
```{code-cell} python
|
||||||
:tags: [remove-input]
|
:tags: [remove-input]
|
||||||
import altair as alt
|
import matplotlib.pyplot as plt
|
||||||
|
from matplotlib import ticker
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
from scipy.interpolate import CubicSpline
|
||||||
|
from scipy.stats import qmc
|
||||||
|
|
||||||
|
|
||||||
rng = np.random.default_rng(25)
|
rng = np.random.default_rng(25)
|
||||||
|
|
||||||
n = 20
|
n = 20
|
||||||
t_max = 16
|
t_max = 16
|
||||||
|
|
||||||
t = np.linspace(0, t_max, n)
|
t_base = np.linspace(0, t_max, n)
|
||||||
|
lhs = (qmc.LatinHypercube(d=n-2, rng=rng).random(1)[0] - .5) * t_max/n
|
||||||
|
t = t_base + np.concatenate(([0], lhs, [0]))
|
||||||
|
t = t_base
|
||||||
s = 5 * rng.random(n)
|
s = 5 * rng.random(n)
|
||||||
s[-1] = s[-2]
|
s[-1] = s[-2]
|
||||||
data = pd.DataFrame({
|
|
||||||
"t": t,
|
t_interp = np.linspace(0, t_max, 1024)
|
||||||
"s": s,
|
s_interp = np.clip(CubicSpline(t, s)(t_interp), 0, 5)
|
||||||
})
|
|
||||||
alt.Chart(
|
fig, ax = plt.subplots()
|
||||||
data
|
ax.plot(t_interp, s_interp, lw=3)
|
||||||
).mark_line(
|
ax.set(
|
||||||
interpolate="basis",
|
xlim=(0, t_max),
|
||||||
strokeWidth=3,
|
ylim=(-.5, 5.5),
|
||||||
).encode(
|
xlabel="Temps (s)",
|
||||||
alt.X("t:Q").axis(title="Temps (s)").scale(domain=(0,t_max)),
|
ylabel="Signal analogique",
|
||||||
alt.Y("s:Q", axis=alt.Axis(title="Signal analogique")).scale(domain=(0,5)),
|
|
||||||
).properties(
|
|
||||||
width="container",
|
|
||||||
height=200,
|
|
||||||
)
|
)
|
||||||
|
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
|
||||||
|
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
|
||||||
```
|
```
|
||||||
Exemple de signal analogique
|
Exemple de signal analogique
|
||||||
````
|
````
|
||||||
|
@ -119,32 +116,38 @@ Un exemple de signal analogique est donné en @fig:sig-numerique.
|
||||||
:label: fig:sig-numerique
|
:label: fig:sig-numerique
|
||||||
```{code-cell} python
|
```{code-cell} python
|
||||||
:tags: [remove-input]
|
:tags: [remove-input]
|
||||||
import altair as alt
|
import matplotlib.pyplot as plt
|
||||||
|
from matplotlib import ticker
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
|
||||||
|
|
||||||
rng = np.random.default_rng(25)
|
rng = np.random.default_rng(25)
|
||||||
|
|
||||||
n = 16
|
n = 16
|
||||||
t = np.arange(n+1)
|
t = np.arange(n+1)
|
||||||
s = rng.integers(0, 16, n+1)
|
s = rng.integers(0, 16, n)
|
||||||
s[-1] = s[-2]
|
|
||||||
data = pd.DataFrame({
|
fig, ax = plt.subplots()
|
||||||
"t": t,
|
ax.stairs(s, t, lw=3)
|
||||||
"s": s,
|
ax.set(
|
||||||
})
|
xlim=(0, n),
|
||||||
alt.Chart(
|
ylim=(-.5, 16.5),
|
||||||
data
|
xlabel="Temps (s)",
|
||||||
).mark_line(
|
ylabel="Signal numérique",
|
||||||
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,
|
|
||||||
)
|
)
|
||||||
|
ax.yaxis.set_major_locator(ticker.MultipleLocator(1))
|
||||||
|
ax.xaxis.set_major_locator(ticker.MultipleLocator(1))
|
||||||
|
# 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
|
Exemple de signal numérique
|
||||||
````
|
````
|
1
cours/SIN/matplotlibrc
Symbolic link
1
cours/SIN/matplotlibrc
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../../matplotlibrc
|
43
matplotlibrc
Normal file
43
matplotlibrc
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
lines.linewidth: 3
|
||||||
|
|
||||||
|
font.family: Fira Code
|
||||||
|
|
||||||
|
image.cmap: inferno
|
||||||
|
|
||||||
|
axes.linewidth: 1
|
||||||
|
axes.grid: True
|
||||||
|
axes.grid.which: major
|
||||||
|
axes.titlelocation: right
|
||||||
|
axes.titleweight: 700
|
||||||
|
axes.axisbelow: True
|
||||||
|
|
||||||
|
axes.prop_cycle: cycler(color=["#4269d0","#efb118","#ff725c","#6cc5b0","#3ca951","#ff8ab7","#a463f2","#97bbf5","#9c6b4e","#9498a0"])
|
||||||
|
|
||||||
|
axes.formatter.use_locale: True
|
||||||
|
|
||||||
|
grid.color: "#bebebe"
|
||||||
|
grid.linewidth: 1
|
||||||
|
grid.alpha: 1
|
||||||
|
|
||||||
|
hatch.linewidth: 8
|
||||||
|
hatch.color: "#00000013"
|
||||||
|
|
||||||
|
boxplot.showmeans: true
|
||||||
|
boxplot.meanprops.markeredgecolor: "k"
|
||||||
|
boxplot.meanprops.marker: "+"
|
||||||
|
boxplot.flierprops.markerfacecolor: C0
|
||||||
|
boxplot.medianprops.color: C0
|
||||||
|
|
||||||
|
figure.figsize: 8, 4.5
|
||||||
|
figure.dpi: 96
|
||||||
|
figure.constrained_layout.use: True
|
||||||
|
|
||||||
|
xtick.direction: in
|
||||||
|
xtick.major.size: 4
|
||||||
|
xtick.minor.size: 2
|
||||||
|
|
||||||
|
ytick.direction: in
|
||||||
|
ytick.major.size: 4
|
||||||
|
ytick.minor.size: 2
|
||||||
|
|
||||||
|
savefig.format: pdf
|
7
requirements.txt
Normal file
7
requirements.txt
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
mystmd
|
||||||
|
jupyter-server
|
||||||
|
ipykernel
|
||||||
|
matplotlib
|
||||||
|
numpy
|
||||||
|
pandas
|
||||||
|
scipy
|
Loading…
Add table
Reference in a new issue