{
"cells": [
{
"cell_type": "markdown",
"id": "5c278ed1-43b4-4a64-b3e2-0ecfeeaeb79d",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"# Quizz\n",
"$\\mbox{ }$\n",
"\n",
":::{admonition} **Que faut-il savoir?**\n",
":class: note\n",
"- **Reconnaître** si un signal est à énergie finie, à puissance finie périodique ou aléatoire.\n",
"\n",
"- Qu'est ce qu'un signal aléatoire **stationnaire** ?\n",
"\n",
"- Les différentes définitions d'une **fonction d'autocorrélation** $R_x(\\tau)$\n",
"\n",
"- La définition **unifiée**d'une **densité spectrale** : $s_x(f)$ = ?\n",
"\n",
"- Ce qu'est un **bruit blanc**\n",
"\n",
"- Ce qu'est un **bruit gaussien**\n",
"\n",
"- Propriétés de $R_x(\\tau)$\n",
"\n",
"- Propriétés de $s_x(f)$\n",
"\n",
":::\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "24cd8153-47a7-4dcc-bf10-7aa18133cd6a",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"remove-cell"
]
},
"outputs": [],
"source": [
"from jupytercards import display_flashcards"
]
},
{
"cell_type": "markdown",
"id": "892320ac-5fe5-44a0-910f-a013392a3683",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": []
},
"source": [
"## Types de signaux\n",
"\n",
"### Signaux déterministes à énergie finie\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "b805e944-54c3-4a38-b203-8e1c1ee6914b",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"remove_input"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"/*!\n",
" * swiped-events.js - v1.1.4\n",
" * Pure JavaScript swipe events\n",
" * https://github.com/john-doherty/swiped-events\n",
" * @inspiration https://stackoverflow.com/questions/16348031/disable-scrolling-when-touch-moving-certain-element\n",
" * @author John Doherty \n",
" * @license MIT\n",
" */\n",
"!function(t,e){\"use strict\";\"function\"!=typeof t.CustomEvent&&(t.CustomEvent=function(t,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),a},t.CustomEvent.prototype=t.Event.prototype),e.addEventListener(\"touchstart\",function(t){if(\"true\"===t.target.getAttribute(\"data-swipe-ignore\"))return;s=t.target,r=Date.now(),n=t.touches[0].clientX,a=t.touches[0].clientY,u=0,i=0},!1),e.addEventListener(\"touchmove\",function(t){if(!n||!a)return;var e=t.touches[0].clientX,r=t.touches[0].clientY;u=n-e,i=a-r},!1),e.addEventListener(\"touchend\",function(t){if(s!==t.target)return;var e=parseInt(l(s,\"data-swipe-threshold\",\"20\"),10),o=parseInt(l(s,\"data-swipe-timeout\",\"500\"),10),c=Date.now()-r,d=\"\",p=t.changedTouches||t.touches||[];Math.abs(u)>Math.abs(i)?Math.abs(u)>e&&c0?\"swiped-left\":\"swiped-right\"):Math.abs(i)>e&&c0?\"swiped-up\":\"swiped-down\");if(\"\"!==d){var b={dir:d.replace(/swiped-/,\"\"),xStart:parseInt(n,10),xEnd:parseInt((p[0]||{}).clientX||-1,10),yStart:parseInt(a,10),yEnd:parseInt((p[0]||{}).clientY||-1,10)};s.dispatchEvent(new CustomEvent(\"swiped\",{bubbles:!0,cancelable:!0,detail:b})),s.dispatchEvent(new CustomEvent(d,{bubbles:!0,cancelable:!0,detail:b}))}n=null,a=null,r=null},!1);var n=null,a=null,u=null,i=null,r=null,s=null;function l(t,n,a){for(;t&&t!==e.documentElement;){var u=t.getAttribute(n);if(u)return u;t=t.parentNode}return a}}(window,document);\n",
"\n",
"function jaxify(string) {\n",
" var mystring = string;\n",
" //console.log(mystring);\n",
"\n",
" var count = 0;\n",
" var loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
"\n",
" var count2 = 0;\n",
" var loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
"\n",
" //console.log(loc);\n",
"\n",
" while ((loc >= 0) || (loc2 >= 0)) {\n",
"\n",
" /* Have to replace all the double $$ first with current implementation */\n",
" if (loc2 >= 0) {\n",
" if (count2 % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\[\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\]\");\n",
" }\n",
" count2++;\n",
" } else {\n",
" if (count % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\(\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\)\");\n",
" }\n",
" count++;\n",
" }\n",
" loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
" loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
" //console.log(mystring,\", loc:\",loc,\", loc2:\",loc2);\n",
" }\n",
"\n",
" //console.log(mystring);\n",
" return mystring;\n",
"}\n",
"\n",
"window.flipCard = function flipCard(ths) {\n",
" //console.log(ths);\n",
" //console.log(ths.id);\n",
" ths.classList.toggle(\"flip\"); \n",
" ths.focus();\n",
" var next=document.getElementById(ths.id+'-next');\n",
" next.style.pointerEvents='none';\n",
" /* ths.blur(); */\n",
" next.classList.add('flipped');\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([ths]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" setTimeout(reenableNext, 600, ths, next);\n",
"}\n",
"\n",
"window.checkKey = function checkKey(container, event) {\n",
" event.stopPropagation();\n",
" /*\n",
" console.log(container);\n",
" console.log(event.key);\n",
" console.log(event.code);\n",
" */\n",
" /* JMS: Working here*/\n",
" var next=document.getElementById(container.id+'-next');\n",
" /* Only react if not already sliding */\n",
" if (! next.classList.contains(\"hide\")) {\n",
" if ((event.key == \"j\") || (event.key == \"Enter\") || (event.key == \"ArrowRight\")) {\n",
" window.checkFlip(container.id);\n",
" }\n",
" if (event.key == \" \") {\n",
" window.flipCard(container);\n",
" }\n",
" }\n",
" event.preventDefault();\n",
"}\n",
"\n",
"\n",
"function reenableNext(ths, next) {\n",
" next.style.pointerEvents='auto';\n",
" /* ths.tabIndex= 0;*/\n",
" /* ths.focus(); */\n",
"}\n",
"\n",
"\n",
"\n",
"function slide2(containerId) {\n",
" var container = document.getElementById(containerId);\n",
" var next=document.getElementById(containerId+'-next');\n",
" var frontcard = container.children[0];\n",
" var backcard = container.children[1];\n",
" container.style.pointerEvents='none';\n",
" /* container.removeAttribute(\"tabindex\");*/\n",
" /* container.blur(); */\n",
" //backcard.style.pointerEvents='none';\n",
" next.style.pointerEvents='none';\n",
" next.classList.remove('flipped');\n",
" next.classList.add('hide');\n",
"\n",
" //container.classList.add(\"prepare\");\n",
" \n",
" container.className=\"flip-container slide\";\n",
" backcard.parentElement.removeChild(frontcard);\n",
" backcard.parentElement.appendChild(frontcard);\n",
" setTimeout(slideback, 600, container, frontcard, backcard, next);\n",
" \n",
"}\n",
"\n",
"\n",
"window.checkFlip = function checkFlip(containerId) {\n",
" var container = document.getElementById(containerId);\n",
"\n",
"\n",
" if (container.classList.contains('flip')) {\n",
" container.classList.remove('flip');\n",
" setTimeout(slide2, 600, containerId);\n",
" } \n",
" else {\n",
" slide2(containerId);\n",
" }\n",
"}\n",
"\n",
"\n",
"function slideback(container, frontcard, backcard, next) {\n",
" container.className=\"flip-container slideback\";\n",
" setTimeout(cleanup, 550, container, frontcard, backcard, next);\n",
"}\n",
"\n",
"function cleanup(container, frontcard, backcard, next) {\n",
" container.removeChild(frontcard);\n",
" backcard.className=\"flipper frontcard\";\n",
" container.className=\"flip-container\";\n",
"\n",
" var cardnum=parseInt(container.dataset.cardnum);\n",
" var cards=eval('cards'+container.id);\n",
" var flipper=createOneCard(container, false, cards, cardnum);\n",
" container.append(flipper);\n",
" cardnum= (cardnum+1) % parseInt(container.dataset.numCards);\n",
" container.dataset.cardnum=cardnum;\n",
" if (cardnum != 1){\n",
" next.innerHTML=\"Next >\";\n",
" } else {\n",
" //next.innerHTML=\"Reload \\\\(\\\\circlearrowleft\\\\) \";\n",
" next.innerHTML='Reload '\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([next]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" }\n",
"\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset();\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" next.style.pointerEvents='auto';\n",
" container.style.pointerEvents='auto';\n",
" /* container.tabIndex= 0; */\n",
" /* container.focus(); */\n",
" next.classList.remove('hide');\n",
" container.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(container.id);\n",
" }, {once: true });\n",
"\n",
"\n",
"}\n",
"\n",
"\n",
"function createOneCard (mydiv, frontCard, cards, cardnum) {\n",
" var colors=eval('frontColors'+mydiv.id);\n",
" var backColors=eval('backColors'+mydiv.id);\n",
" var textColors=eval('textColors'+mydiv.id);\n",
" //console.log(backColors)\n",
"\n",
" var flipper = document.createElement('div');\n",
" if (frontCard){\n",
" flipper.className=\"flipper frontcard\"; \n",
" }\n",
" else {\n",
" flipper.className=\"flipper backcard\"; \n",
" }\n",
"\n",
" var front = document.createElement('div');\n",
" front.className='front flashcard';\n",
"\n",
" var frontSpan= document.createElement('span');\n",
" frontSpan.className='flashcardtext';\n",
" frontSpan.innerHTML=jaxify(cards[cardnum]['front']);\n",
" frontSpan.style.color=textColors[cardnum % textColors.length];\n",
" //frontSpan.textContent=jaxify(cards[cardnum]['front']);\n",
" //front.style.background='var(' + colors[cardnum % colors.length] + ')';\n",
" front.style.background=colors[cardnum % colors.length];\n",
"\n",
" front.append(frontSpan);\n",
" flipper.append(front);\n",
"\n",
" var back = document.createElement('div');\n",
" back.className='back flashcard';\n",
" back.style.background=backColors[cardnum % backColors.length];\n",
"\n",
" var backSpan= document.createElement('span');\n",
" backSpan.className='flashcardtext';\n",
" backSpan.innerHTML=jaxify(cards[cardnum]['back']);\n",
" backSpan.style.color=textColors[cardnum % textColors.length];\n",
" back.append(backSpan);\n",
"\n",
" flipper.append(back);\n",
"\n",
" return flipper;\n",
"\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"function createCards(id, keyControl, grabFocus) {\n",
" console.log(id);\n",
"\n",
" var mydiv=document.getElementById(id);\n",
" /*mydiv.onclick = window.flipCard(mydiv);*/\n",
" /*\n",
" mydiv.addEventListener('click', function(){window.flipCard(mydiv);}, false);\n",
" mydiv.addEventListener('keydown', function(event){window.checkKey(mydiv,event);}, true);\n",
" */\n",
" mydiv.onclick = function(){window.flipCard(mydiv);};\n",
" //console.log(keyControl);\n",
" if (keyControl == \"True\"){\n",
" mydiv.onkeydown = function(event){window.checkKey(mydiv,event);};\n",
" }\n",
" /* mydiv.addEventListener('keydown', function(event){event.stopPropagation(); console.log(event); event.preventDefault();}, true); */\n",
" /*mydiv.onkeypress = function(event){console.log(event); event.preventDefault();};*/\n",
"\n",
" //console.log(mydiv);\n",
"\n",
" var cards=eval('cards'+id);\n",
" mydiv.dataset.cardnum=0;\n",
" mydiv.dataset.numCards=cards.length;\n",
" mydiv.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(id);\n",
" }, {once: true});\n",
"\n",
" var cardnum=0;\n",
" \n",
" for (var i=0; i<2; i++) {\n",
" \n",
" var flipper;\n",
" if (i==0){\n",
" flipper=createOneCard(mydiv, true, cards, cardnum);\n",
" }\n",
" else {\n",
" flipper=createOneCard(mydiv, false, cards, cardnum);\n",
" }\n",
"\n",
" mydiv.append(flipper);\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" if (typeof version == 'undefined') {\n",
" setTimeout(function(){\n",
" var version = MathJax.version;\n",
" console.log('After sleep, MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }, 500);\n",
" } else{\n",
" console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }\n",
" } else {\n",
" console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" cardnum = (cardnum + 1) % mydiv.dataset.numCards;\n",
" }\n",
" mydiv.dataset.cardnum = cardnum;\n",
"\n",
" var next=document.getElementById(id+'-next');\n",
" if (cards.length==1) {\n",
" // Don't show next if no other cards!\n",
" next.style.pointerEvents='none';\n",
" next.classList.add('hide');\n",
" } else {\n",
" next.innerHTML=\"Next >\";\n",
" }\n",
"\n",
" if (grabFocus == \"True\" )\n",
" mydiv.focus();\n",
"\n",
" return flipper;\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" function try_create() {\n",
" if(document.getElementById(\"NondIgKPRtFq\")) {\n",
" createCards(\"NondIgKPRtFq\", \"True\", \"False\");\n",
" } else {\n",
" setTimeout(try_create, 200);\n",
" }\n",
" };\n",
" \n",
"var cardsNondIgKPRtFq=[\n",
" {\n",
" \"front\": \"Signal est à énergie finie\",\n",
" \"back\": \" $E_x= \\\\int_{- \\\\infty}^{+ \\\\infty} |x(t)|^2dt < \\\\infty.$ \"\n",
" },\n",
" {\n",
" \"front\": \"Fonction d'autocorrélation\",\n",
" \"back\": \" $R_x(\\\\tau) = \\\\langle x(t), x(t-\\\\tau) \\\\rangle = \\\\int_{\\\\mathbb{R}} x(t)x^*(t-\\\\tau) dt$ \"\n",
" },\n",
" {\n",
" \"front\": \"Densité spectrale d'énergie (DSE)\",\n",
" \"back\": \" $s_x(f) = \\\\textrm{TF}[R_x(\\\\tau)] = \\\\int_{\\\\mathbb{R}} R_x(\\\\tau) \\\\exp \\\\left(-j 2 \\\\pi f \\\\tau \\\\right) d\\\\tau$ \"\n",
" },\n",
" {\n",
" \"front\": \"Fonction d'intercorrélation\",\n",
" \"back\": \" $R_{xy}(\\\\tau) = \\\\langle x(t), y(t-\\\\tau) \\\\rangle = \\\\int_{\\\\mathbb{R}} x(t) y^*(t-\\\\tau) dt$ \"\n",
" },\n",
" {\n",
" \"front\": \"Lien entre DSE et Transformée de Fourier d'un Signal $x(t)$\",\n",
" \"back\": \"$s_x(f)= \\\\left| X(f) \\\\right|^2$\"\n",
" }\n",
" \n",
"];\n",
"var frontColorsNondIgKPRtFq= [\"var(--asparagus)\", \"var(--terra-cotta)\", \"var(--cyan-process)\" ];\n",
"var backColorsNondIgKPRtFq= [\"var(--dark-blue-gray)\" ];\n",
"var textColorsNondIgKPRtFq= [\"var(--snow)\" ];\n",
"try_create(); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display_flashcards('./flashcards/'+'Chap2sec1.json')"
]
},
{
"cell_type": "markdown",
"id": "273a3124-4c68-44cd-8908-c7c7443aa489",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"remove_input"
]
},
"source": [
"### Signaux déterministes à puissance finie"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f5d55ef9-6e40-4c9a-b91c-fbf8e01b3c81",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"remove-input"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"/*!\n",
" * swiped-events.js - v1.1.4\n",
" * Pure JavaScript swipe events\n",
" * https://github.com/john-doherty/swiped-events\n",
" * @inspiration https://stackoverflow.com/questions/16348031/disable-scrolling-when-touch-moving-certain-element\n",
" * @author John Doherty \n",
" * @license MIT\n",
" */\n",
"!function(t,e){\"use strict\";\"function\"!=typeof t.CustomEvent&&(t.CustomEvent=function(t,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),a},t.CustomEvent.prototype=t.Event.prototype),e.addEventListener(\"touchstart\",function(t){if(\"true\"===t.target.getAttribute(\"data-swipe-ignore\"))return;s=t.target,r=Date.now(),n=t.touches[0].clientX,a=t.touches[0].clientY,u=0,i=0},!1),e.addEventListener(\"touchmove\",function(t){if(!n||!a)return;var e=t.touches[0].clientX,r=t.touches[0].clientY;u=n-e,i=a-r},!1),e.addEventListener(\"touchend\",function(t){if(s!==t.target)return;var e=parseInt(l(s,\"data-swipe-threshold\",\"20\"),10),o=parseInt(l(s,\"data-swipe-timeout\",\"500\"),10),c=Date.now()-r,d=\"\",p=t.changedTouches||t.touches||[];Math.abs(u)>Math.abs(i)?Math.abs(u)>e&&c0?\"swiped-left\":\"swiped-right\"):Math.abs(i)>e&&c0?\"swiped-up\":\"swiped-down\");if(\"\"!==d){var b={dir:d.replace(/swiped-/,\"\"),xStart:parseInt(n,10),xEnd:parseInt((p[0]||{}).clientX||-1,10),yStart:parseInt(a,10),yEnd:parseInt((p[0]||{}).clientY||-1,10)};s.dispatchEvent(new CustomEvent(\"swiped\",{bubbles:!0,cancelable:!0,detail:b})),s.dispatchEvent(new CustomEvent(d,{bubbles:!0,cancelable:!0,detail:b}))}n=null,a=null,r=null},!1);var n=null,a=null,u=null,i=null,r=null,s=null;function l(t,n,a){for(;t&&t!==e.documentElement;){var u=t.getAttribute(n);if(u)return u;t=t.parentNode}return a}}(window,document);\n",
"\n",
"function jaxify(string) {\n",
" var mystring = string;\n",
" //console.log(mystring);\n",
"\n",
" var count = 0;\n",
" var loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
"\n",
" var count2 = 0;\n",
" var loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
"\n",
" //console.log(loc);\n",
"\n",
" while ((loc >= 0) || (loc2 >= 0)) {\n",
"\n",
" /* Have to replace all the double $$ first with current implementation */\n",
" if (loc2 >= 0) {\n",
" if (count2 % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\[\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\]\");\n",
" }\n",
" count2++;\n",
" } else {\n",
" if (count % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\(\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\)\");\n",
" }\n",
" count++;\n",
" }\n",
" loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
" loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
" //console.log(mystring,\", loc:\",loc,\", loc2:\",loc2);\n",
" }\n",
"\n",
" //console.log(mystring);\n",
" return mystring;\n",
"}\n",
"\n",
"window.flipCard = function flipCard(ths) {\n",
" //console.log(ths);\n",
" //console.log(ths.id);\n",
" ths.classList.toggle(\"flip\"); \n",
" ths.focus();\n",
" var next=document.getElementById(ths.id+'-next');\n",
" next.style.pointerEvents='none';\n",
" /* ths.blur(); */\n",
" next.classList.add('flipped');\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([ths]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" setTimeout(reenableNext, 600, ths, next);\n",
"}\n",
"\n",
"window.checkKey = function checkKey(container, event) {\n",
" event.stopPropagation();\n",
" /*\n",
" console.log(container);\n",
" console.log(event.key);\n",
" console.log(event.code);\n",
" */\n",
" /* JMS: Working here*/\n",
" var next=document.getElementById(container.id+'-next');\n",
" /* Only react if not already sliding */\n",
" if (! next.classList.contains(\"hide\")) {\n",
" if ((event.key == \"j\") || (event.key == \"Enter\") || (event.key == \"ArrowRight\")) {\n",
" window.checkFlip(container.id);\n",
" }\n",
" if (event.key == \" \") {\n",
" window.flipCard(container);\n",
" }\n",
" }\n",
" event.preventDefault();\n",
"}\n",
"\n",
"\n",
"function reenableNext(ths, next) {\n",
" next.style.pointerEvents='auto';\n",
" /* ths.tabIndex= 0;*/\n",
" /* ths.focus(); */\n",
"}\n",
"\n",
"\n",
"\n",
"function slide2(containerId) {\n",
" var container = document.getElementById(containerId);\n",
" var next=document.getElementById(containerId+'-next');\n",
" var frontcard = container.children[0];\n",
" var backcard = container.children[1];\n",
" container.style.pointerEvents='none';\n",
" /* container.removeAttribute(\"tabindex\");*/\n",
" /* container.blur(); */\n",
" //backcard.style.pointerEvents='none';\n",
" next.style.pointerEvents='none';\n",
" next.classList.remove('flipped');\n",
" next.classList.add('hide');\n",
"\n",
" //container.classList.add(\"prepare\");\n",
" \n",
" container.className=\"flip-container slide\";\n",
" backcard.parentElement.removeChild(frontcard);\n",
" backcard.parentElement.appendChild(frontcard);\n",
" setTimeout(slideback, 600, container, frontcard, backcard, next);\n",
" \n",
"}\n",
"\n",
"\n",
"window.checkFlip = function checkFlip(containerId) {\n",
" var container = document.getElementById(containerId);\n",
"\n",
"\n",
" if (container.classList.contains('flip')) {\n",
" container.classList.remove('flip');\n",
" setTimeout(slide2, 600, containerId);\n",
" } \n",
" else {\n",
" slide2(containerId);\n",
" }\n",
"}\n",
"\n",
"\n",
"function slideback(container, frontcard, backcard, next) {\n",
" container.className=\"flip-container slideback\";\n",
" setTimeout(cleanup, 550, container, frontcard, backcard, next);\n",
"}\n",
"\n",
"function cleanup(container, frontcard, backcard, next) {\n",
" container.removeChild(frontcard);\n",
" backcard.className=\"flipper frontcard\";\n",
" container.className=\"flip-container\";\n",
"\n",
" var cardnum=parseInt(container.dataset.cardnum);\n",
" var cards=eval('cards'+container.id);\n",
" var flipper=createOneCard(container, false, cards, cardnum);\n",
" container.append(flipper);\n",
" cardnum= (cardnum+1) % parseInt(container.dataset.numCards);\n",
" container.dataset.cardnum=cardnum;\n",
" if (cardnum != 1){\n",
" next.innerHTML=\"Next >\";\n",
" } else {\n",
" //next.innerHTML=\"Reload \\\\(\\\\circlearrowleft\\\\) \";\n",
" next.innerHTML='Reload '\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([next]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" }\n",
"\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset();\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" next.style.pointerEvents='auto';\n",
" container.style.pointerEvents='auto';\n",
" /* container.tabIndex= 0; */\n",
" /* container.focus(); */\n",
" next.classList.remove('hide');\n",
" container.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(container.id);\n",
" }, {once: true });\n",
"\n",
"\n",
"}\n",
"\n",
"\n",
"function createOneCard (mydiv, frontCard, cards, cardnum) {\n",
" var colors=eval('frontColors'+mydiv.id);\n",
" var backColors=eval('backColors'+mydiv.id);\n",
" var textColors=eval('textColors'+mydiv.id);\n",
" //console.log(backColors)\n",
"\n",
" var flipper = document.createElement('div');\n",
" if (frontCard){\n",
" flipper.className=\"flipper frontcard\"; \n",
" }\n",
" else {\n",
" flipper.className=\"flipper backcard\"; \n",
" }\n",
"\n",
" var front = document.createElement('div');\n",
" front.className='front flashcard';\n",
"\n",
" var frontSpan= document.createElement('span');\n",
" frontSpan.className='flashcardtext';\n",
" frontSpan.innerHTML=jaxify(cards[cardnum]['front']);\n",
" frontSpan.style.color=textColors[cardnum % textColors.length];\n",
" //frontSpan.textContent=jaxify(cards[cardnum]['front']);\n",
" //front.style.background='var(' + colors[cardnum % colors.length] + ')';\n",
" front.style.background=colors[cardnum % colors.length];\n",
"\n",
" front.append(frontSpan);\n",
" flipper.append(front);\n",
"\n",
" var back = document.createElement('div');\n",
" back.className='back flashcard';\n",
" back.style.background=backColors[cardnum % backColors.length];\n",
"\n",
" var backSpan= document.createElement('span');\n",
" backSpan.className='flashcardtext';\n",
" backSpan.innerHTML=jaxify(cards[cardnum]['back']);\n",
" backSpan.style.color=textColors[cardnum % textColors.length];\n",
" back.append(backSpan);\n",
"\n",
" flipper.append(back);\n",
"\n",
" return flipper;\n",
"\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"function createCards(id, keyControl, grabFocus) {\n",
" console.log(id);\n",
"\n",
" var mydiv=document.getElementById(id);\n",
" /*mydiv.onclick = window.flipCard(mydiv);*/\n",
" /*\n",
" mydiv.addEventListener('click', function(){window.flipCard(mydiv);}, false);\n",
" mydiv.addEventListener('keydown', function(event){window.checkKey(mydiv,event);}, true);\n",
" */\n",
" mydiv.onclick = function(){window.flipCard(mydiv);};\n",
" //console.log(keyControl);\n",
" if (keyControl == \"True\"){\n",
" mydiv.onkeydown = function(event){window.checkKey(mydiv,event);};\n",
" }\n",
" /* mydiv.addEventListener('keydown', function(event){event.stopPropagation(); console.log(event); event.preventDefault();}, true); */\n",
" /*mydiv.onkeypress = function(event){console.log(event); event.preventDefault();};*/\n",
"\n",
" //console.log(mydiv);\n",
"\n",
" var cards=eval('cards'+id);\n",
" mydiv.dataset.cardnum=0;\n",
" mydiv.dataset.numCards=cards.length;\n",
" mydiv.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(id);\n",
" }, {once: true});\n",
"\n",
" var cardnum=0;\n",
" \n",
" for (var i=0; i<2; i++) {\n",
" \n",
" var flipper;\n",
" if (i==0){\n",
" flipper=createOneCard(mydiv, true, cards, cardnum);\n",
" }\n",
" else {\n",
" flipper=createOneCard(mydiv, false, cards, cardnum);\n",
" }\n",
"\n",
" mydiv.append(flipper);\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" if (typeof version == 'undefined') {\n",
" setTimeout(function(){\n",
" var version = MathJax.version;\n",
" console.log('After sleep, MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }, 500);\n",
" } else{\n",
" console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }\n",
" } else {\n",
" console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" cardnum = (cardnum + 1) % mydiv.dataset.numCards;\n",
" }\n",
" mydiv.dataset.cardnum = cardnum;\n",
"\n",
" var next=document.getElementById(id+'-next');\n",
" if (cards.length==1) {\n",
" // Don't show next if no other cards!\n",
" next.style.pointerEvents='none';\n",
" next.classList.add('hide');\n",
" } else {\n",
" next.innerHTML=\"Next >\";\n",
" }\n",
"\n",
" if (grabFocus == \"True\" )\n",
" mydiv.focus();\n",
"\n",
" return flipper;\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" function try_create() {\n",
" if(document.getElementById(\"PoDcBtjJsxvw\")) {\n",
" createCards(\"PoDcBtjJsxvw\", \"True\", \"False\");\n",
" } else {\n",
" setTimeout(try_create, 200);\n",
" }\n",
" };\n",
" \n",
"var cardsPoDcBtjJsxvw=[\n",
" {\n",
" \"front\": \"Signal à puissance finie péridodique\",\n",
" \"back\": \"Un signal à temps continu $x(t)$ est à puissance finie péridodique de période $T_0$ si $$(1) \\\\; x(t+T_0)=x(t), \\\\forall t$$ et si $$(2) \\\\; P=\\\\frac{1}{T_0} \\\\int_{- \\\\frac{T_0}{2}}^{ \\\\frac{T_0}{2}}{|x(t)|^2dt} < \\\\infty$$\"\n",
" },\n",
" {\n",
" \"front\": \"Fonction d'autocorrélation\",\n",
" \"back\": \" $R_x(\\\\tau)=\\\\langle x(t), x(t-\\\\tau) \\\\rangle = \\\\frac{1}{T_0} \\\\int_{- \\\\frac{T_0}{2}}^{ \\\\frac{T_0}{2}} x(t)x^*(t-\\\\tau) dt$ \"\n",
" },\n",
" {\n",
" \"front\": \"Densité spectrale de puissance (DSP)\",\n",
" \"back\": \"$s_x(f) = \\\\textrm{TF}[R_x(\\\\tau)] = \\\\int_{\\\\mathbb{R}} R_x(\\\\tau) \\\\exp \\\\left(-j 2 \\\\pi f \\\\tau \\\\right) d\\\\tau.$\"\n",
" },\n",
" {\n",
" \"front\": \"Fonction d'intercorrélation\",\n",
" \"back\": \"$R_{xy}(\\\\tau) = \\\\langle x(t), y(t-\\\\tau) \\\\rangle = \\\\frac{1}{T_0} \\\\int_{- \\\\frac{T_0}{2}}^{ \\\\frac{T_0}{2}} x(t) y^*(t-\\\\tau)dt$\"\n",
" },\n",
" {\n",
" \"front\": \"lien entre DSP et Série de Fourier\",\n",
" \"back\": \"$$x(t)=\\\\sum_{k \\\\in \\\\mathbb{Z}} c_k \\\\exp(j 2 \\\\pi k f_0 t)$$ $$s_x(f)= \\\\sum_{k \\\\in \\\\mathbb{Z}} |c_k|^2 \\\\delta(f-kf_0)$$\"\n",
" }\n",
" \n",
"];\n",
"var frontColorsPoDcBtjJsxvw= [\"var(--asparagus)\", \"var(--terra-cotta)\", \"var(--cyan-process)\" ];\n",
"var backColorsPoDcBtjJsxvw= [\"var(--dark-blue-gray)\" ];\n",
"var textColorsPoDcBtjJsxvw= [\"var(--snow)\" ];\n",
"try_create(); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display_flashcards('./flashcards/'+'Chap2sec2.json')"
]
},
{
"cell_type": "markdown",
"id": "a93bbc88-67fa-4700-bc0f-7fa20908a1e1",
"metadata": {
"editable": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"remove-ouput"
]
},
"source": [
"### Signaux déterministes non périodiques à puissance finie"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "b4f295c6-acdc-4d65-8758-9b2285a2d4c1",
"metadata": {
"editable": true,
"scrolled": true,
"slideshow": {
"slide_type": ""
},
"tags": [
"remove-input"
]
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n"
]
},
{
"data": {
"text/html": [
""
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"application/javascript": [
"/*!\n",
" * swiped-events.js - v1.1.4\n",
" * Pure JavaScript swipe events\n",
" * https://github.com/john-doherty/swiped-events\n",
" * @inspiration https://stackoverflow.com/questions/16348031/disable-scrolling-when-touch-moving-certain-element\n",
" * @author John Doherty \n",
" * @license MIT\n",
" */\n",
"!function(t,e){\"use strict\";\"function\"!=typeof t.CustomEvent&&(t.CustomEvent=function(t,n){n=n||{bubbles:!1,cancelable:!1,detail:void 0};var a=e.createEvent(\"CustomEvent\");return a.initCustomEvent(t,n.bubbles,n.cancelable,n.detail),a},t.CustomEvent.prototype=t.Event.prototype),e.addEventListener(\"touchstart\",function(t){if(\"true\"===t.target.getAttribute(\"data-swipe-ignore\"))return;s=t.target,r=Date.now(),n=t.touches[0].clientX,a=t.touches[0].clientY,u=0,i=0},!1),e.addEventListener(\"touchmove\",function(t){if(!n||!a)return;var e=t.touches[0].clientX,r=t.touches[0].clientY;u=n-e,i=a-r},!1),e.addEventListener(\"touchend\",function(t){if(s!==t.target)return;var e=parseInt(l(s,\"data-swipe-threshold\",\"20\"),10),o=parseInt(l(s,\"data-swipe-timeout\",\"500\"),10),c=Date.now()-r,d=\"\",p=t.changedTouches||t.touches||[];Math.abs(u)>Math.abs(i)?Math.abs(u)>e&&c0?\"swiped-left\":\"swiped-right\"):Math.abs(i)>e&&c0?\"swiped-up\":\"swiped-down\");if(\"\"!==d){var b={dir:d.replace(/swiped-/,\"\"),xStart:parseInt(n,10),xEnd:parseInt((p[0]||{}).clientX||-1,10),yStart:parseInt(a,10),yEnd:parseInt((p[0]||{}).clientY||-1,10)};s.dispatchEvent(new CustomEvent(\"swiped\",{bubbles:!0,cancelable:!0,detail:b})),s.dispatchEvent(new CustomEvent(d,{bubbles:!0,cancelable:!0,detail:b}))}n=null,a=null,r=null},!1);var n=null,a=null,u=null,i=null,r=null,s=null;function l(t,n,a){for(;t&&t!==e.documentElement;){var u=t.getAttribute(n);if(u)return u;t=t.parentNode}return a}}(window,document);\n",
"\n",
"function jaxify(string) {\n",
" var mystring = string;\n",
" //console.log(mystring);\n",
"\n",
" var count = 0;\n",
" var loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
"\n",
" var count2 = 0;\n",
" var loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
"\n",
" //console.log(loc);\n",
"\n",
" while ((loc >= 0) || (loc2 >= 0)) {\n",
"\n",
" /* Have to replace all the double $$ first with current implementation */\n",
" if (loc2 >= 0) {\n",
" if (count2 % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\[\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$\\$)/, \"$1\\\\]\");\n",
" }\n",
" count2++;\n",
" } else {\n",
" if (count % 2 == 0) {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\(\");\n",
" } else {\n",
" mystring = mystring.replace(/([^\\\\]|^)(\\$)/, \"$1\\\\)\");\n",
" }\n",
" count++;\n",
" }\n",
" loc = mystring.search(/([^\\\\]|^)(\\$)/);\n",
" loc2 = mystring.search(/([^\\\\]|^)(\\$\\$)/);\n",
" //console.log(mystring,\", loc:\",loc,\", loc2:\",loc2);\n",
" }\n",
"\n",
" //console.log(mystring);\n",
" return mystring;\n",
"}\n",
"\n",
"window.flipCard = function flipCard(ths) {\n",
" //console.log(ths);\n",
" //console.log(ths.id);\n",
" ths.classList.toggle(\"flip\"); \n",
" ths.focus();\n",
" var next=document.getElementById(ths.id+'-next');\n",
" next.style.pointerEvents='none';\n",
" /* ths.blur(); */\n",
" next.classList.add('flipped');\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([ths]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" setTimeout(reenableNext, 600, ths, next);\n",
"}\n",
"\n",
"window.checkKey = function checkKey(container, event) {\n",
" event.stopPropagation();\n",
" /*\n",
" console.log(container);\n",
" console.log(event.key);\n",
" console.log(event.code);\n",
" */\n",
" /* JMS: Working here*/\n",
" var next=document.getElementById(container.id+'-next');\n",
" /* Only react if not already sliding */\n",
" if (! next.classList.contains(\"hide\")) {\n",
" if ((event.key == \"j\") || (event.key == \"Enter\") || (event.key == \"ArrowRight\")) {\n",
" window.checkFlip(container.id);\n",
" }\n",
" if (event.key == \" \") {\n",
" window.flipCard(container);\n",
" }\n",
" }\n",
" event.preventDefault();\n",
"}\n",
"\n",
"\n",
"function reenableNext(ths, next) {\n",
" next.style.pointerEvents='auto';\n",
" /* ths.tabIndex= 0;*/\n",
" /* ths.focus(); */\n",
"}\n",
"\n",
"\n",
"\n",
"function slide2(containerId) {\n",
" var container = document.getElementById(containerId);\n",
" var next=document.getElementById(containerId+'-next');\n",
" var frontcard = container.children[0];\n",
" var backcard = container.children[1];\n",
" container.style.pointerEvents='none';\n",
" /* container.removeAttribute(\"tabindex\");*/\n",
" /* container.blur(); */\n",
" //backcard.style.pointerEvents='none';\n",
" next.style.pointerEvents='none';\n",
" next.classList.remove('flipped');\n",
" next.classList.add('hide');\n",
"\n",
" //container.classList.add(\"prepare\");\n",
" \n",
" container.className=\"flip-container slide\";\n",
" backcard.parentElement.removeChild(frontcard);\n",
" backcard.parentElement.appendChild(frontcard);\n",
" setTimeout(slideback, 600, container, frontcard, backcard, next);\n",
" \n",
"}\n",
"\n",
"\n",
"window.checkFlip = function checkFlip(containerId) {\n",
" var container = document.getElementById(containerId);\n",
"\n",
"\n",
" if (container.classList.contains('flip')) {\n",
" container.classList.remove('flip');\n",
" setTimeout(slide2, 600, containerId);\n",
" } \n",
" else {\n",
" slide2(containerId);\n",
" }\n",
"}\n",
"\n",
"\n",
"function slideback(container, frontcard, backcard, next) {\n",
" container.className=\"flip-container slideback\";\n",
" setTimeout(cleanup, 550, container, frontcard, backcard, next);\n",
"}\n",
"\n",
"function cleanup(container, frontcard, backcard, next) {\n",
" container.removeChild(frontcard);\n",
" backcard.className=\"flipper frontcard\";\n",
" container.className=\"flip-container\";\n",
"\n",
" var cardnum=parseInt(container.dataset.cardnum);\n",
" var cards=eval('cards'+container.id);\n",
" var flipper=createOneCard(container, false, cards, cardnum);\n",
" container.append(flipper);\n",
" cardnum= (cardnum+1) % parseInt(container.dataset.numCards);\n",
" container.dataset.cardnum=cardnum;\n",
" if (cardnum != 1){\n",
" next.innerHTML=\"Next >\";\n",
" } else {\n",
" //next.innerHTML=\"Reload \\\\(\\\\circlearrowleft\\\\) \";\n",
" next.innerHTML='Reload '\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([next]);\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" }\n",
"\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" //console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset();\n",
" }\n",
" } else {\n",
" //console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" next.style.pointerEvents='auto';\n",
" container.style.pointerEvents='auto';\n",
" /* container.tabIndex= 0; */\n",
" /* container.focus(); */\n",
" next.classList.remove('hide');\n",
" container.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(container.id);\n",
" }, {once: true });\n",
"\n",
"\n",
"}\n",
"\n",
"\n",
"function createOneCard (mydiv, frontCard, cards, cardnum) {\n",
" var colors=eval('frontColors'+mydiv.id);\n",
" var backColors=eval('backColors'+mydiv.id);\n",
" var textColors=eval('textColors'+mydiv.id);\n",
" //console.log(backColors)\n",
"\n",
" var flipper = document.createElement('div');\n",
" if (frontCard){\n",
" flipper.className=\"flipper frontcard\"; \n",
" }\n",
" else {\n",
" flipper.className=\"flipper backcard\"; \n",
" }\n",
"\n",
" var front = document.createElement('div');\n",
" front.className='front flashcard';\n",
"\n",
" var frontSpan= document.createElement('span');\n",
" frontSpan.className='flashcardtext';\n",
" frontSpan.innerHTML=jaxify(cards[cardnum]['front']);\n",
" frontSpan.style.color=textColors[cardnum % textColors.length];\n",
" //frontSpan.textContent=jaxify(cards[cardnum]['front']);\n",
" //front.style.background='var(' + colors[cardnum % colors.length] + ')';\n",
" front.style.background=colors[cardnum % colors.length];\n",
"\n",
" front.append(frontSpan);\n",
" flipper.append(front);\n",
"\n",
" var back = document.createElement('div');\n",
" back.className='back flashcard';\n",
" back.style.background=backColors[cardnum % backColors.length];\n",
"\n",
" var backSpan= document.createElement('span');\n",
" backSpan.className='flashcardtext';\n",
" backSpan.innerHTML=jaxify(cards[cardnum]['back']);\n",
" backSpan.style.color=textColors[cardnum % textColors.length];\n",
" back.append(backSpan);\n",
"\n",
" flipper.append(back);\n",
"\n",
" return flipper;\n",
"\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"function createCards(id, keyControl, grabFocus) {\n",
" console.log(id);\n",
"\n",
" var mydiv=document.getElementById(id);\n",
" /*mydiv.onclick = window.flipCard(mydiv);*/\n",
" /*\n",
" mydiv.addEventListener('click', function(){window.flipCard(mydiv);}, false);\n",
" mydiv.addEventListener('keydown', function(event){window.checkKey(mydiv,event);}, true);\n",
" */\n",
" mydiv.onclick = function(){window.flipCard(mydiv);};\n",
" //console.log(keyControl);\n",
" if (keyControl == \"True\"){\n",
" mydiv.onkeydown = function(event){window.checkKey(mydiv,event);};\n",
" }\n",
" /* mydiv.addEventListener('keydown', function(event){event.stopPropagation(); console.log(event); event.preventDefault();}, true); */\n",
" /*mydiv.onkeypress = function(event){console.log(event); event.preventDefault();};*/\n",
"\n",
" //console.log(mydiv);\n",
"\n",
" var cards=eval('cards'+id);\n",
" mydiv.dataset.cardnum=0;\n",
" mydiv.dataset.numCards=cards.length;\n",
" mydiv.addEventListener('swiped-left', function(e) {\n",
" /*\n",
" console.log(e.detail);\n",
" console.log(id);\n",
" */\n",
" checkFlip(id);\n",
" }, {once: true});\n",
"\n",
" var cardnum=0;\n",
" \n",
" for (var i=0; i<2; i++) {\n",
" \n",
" var flipper;\n",
" if (i==0){\n",
" flipper=createOneCard(mydiv, true, cards, cardnum);\n",
" }\n",
" else {\n",
" flipper=createOneCard(mydiv, false, cards, cardnum);\n",
" }\n",
"\n",
" mydiv.append(flipper);\n",
" if (typeof MathJax != 'undefined') {\n",
" var version = MathJax.version;\n",
" if (typeof version == 'undefined') {\n",
" setTimeout(function(){\n",
" var version = MathJax.version;\n",
" console.log('After sleep, MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }, 500);\n",
" } else{\n",
" console.log('MathJax version', version);\n",
" if (version[0] == \"2\") {\n",
" MathJax.Hub.Queue([\"Typeset\", MathJax.Hub]);\n",
" } else if (version[0] == \"3\") {\n",
" MathJax.typeset([flipper]);\n",
" }\n",
" }\n",
" } else {\n",
" console.log('MathJax not detected');\n",
" }\n",
"\n",
"\n",
" cardnum = (cardnum + 1) % mydiv.dataset.numCards;\n",
" }\n",
" mydiv.dataset.cardnum = cardnum;\n",
"\n",
" var next=document.getElementById(id+'-next');\n",
" if (cards.length==1) {\n",
" // Don't show next if no other cards!\n",
" next.style.pointerEvents='none';\n",
" next.classList.add('hide');\n",
" } else {\n",
" next.innerHTML=\"Next >\";\n",
" }\n",
"\n",
" if (grabFocus == \"True\" )\n",
" mydiv.focus();\n",
"\n",
" return flipper;\n",
"}\n",
"\n",
"\n",
"\n",
"\n",
"\n",
" function try_create() {\n",
" if(document.getElementById(\"VjuizMLzzIon\")) {\n",
" createCards(\"VjuizMLzzIon\", \"True\", \"False\");\n",
" } else {\n",
" setTimeout(try_create, 200);\n",
" }\n",
" };\n",
" \n",
"var cardsVjuizMLzzIon=[\n",
" {\n",
" \"front\": \"Signal déterministes à puissance finie non péridodique\",\n",
" \"back\": \"$P=\\\\lim \\\\limits_{T \\\\to +\\\\infty} \\\\frac{1}{T} \\\\int_{- \\\\frac{T}{2}}^{\\\\frac{T}{2}} |x(t)|^2dt < \\\\infty$\"\n",
" },\n",
" {\n",
" \"front\": \"Fonction d'autocorrélation\",\n",
" \"back\": \" $R_x(\\\\tau)= \\\\lim \\\\limits_{T \\\\to +\\\\infty} \\\\frac{1}{T} \\\\int_{- \\\\frac{T}{2}}^{ \\\\frac{T}{2}} x(t)x^*(t-\\\\tau) dt$ \"\n",
" },\n",
" {\n",
" \"front\": \"Densité spectrale de puissance (DSP)\",\n",
" \"back\": \"$s_x(f) = \\\\textrm{TF}[R_x(\\\\tau)] = \\\\int_{\\\\mathbb{R}} R_x(\\\\tau) \\\\exp \\\\left(-j 2 \\\\pi f \\\\tau \\\\right) d\\\\tau$\"\n",
" },\n",
" {\n",
" \"front\": \"Fonction d'intercorrélation\",\n",
" \"back\": \"$R_{xy}(\\\\tau) = \\\\lim \\\\limits_{T \\\\to +\\\\infty} \\\\frac{1}{T} \\\\int_{- \\\\frac{T}{2}}^{ \\\\frac{T}{2}} x(t) y^*(t-\\\\tau) dt$\"\n",
" },\n",
" {\n",
" \"front\": \"lien entre DSP et Transformée de Fourier\",\n",
" \"back\": \"$$s_x(f)= {\\\\underset{T \\\\rightarrow \\\\infty }{\\\\lim }} \\\\frac{1}{T} \\\\left|X_T(f) \\\\right|^2$$ avec $$X_T(f)= \\\\int_{-T/2}^{T/2} x(t) \\\\exp(-j 2 \\\\pi f t)dt$$\"\n",
" }\n",
" \n",
"];\n",
"var frontColorsVjuizMLzzIon= [\"var(--asparagus)\", \"var(--terra-cotta)\", \"var(--cyan-process)\" ];\n",
"var backColorsVjuizMLzzIon= [\"var(--dark-blue-gray)\" ];\n",
"var textColorsVjuizMLzzIon= [\"var(--snow)\" ];\n",
"try_create(); "
],
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"display_flashcards('./flashcards/'+'Chap2sec3.json')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}