{ "cells": [ { "cell_type": "markdown", "id": "b525edc4-7021-499f-9737-5ecbba83fdda", "metadata": { "tags": [] }, "source": [ "| [FREQ2](FREQ2_ondes_discretes.ipynb) <= | VEC3 : Deux bases | => [README](README.ipynb) |$\\|$ | [README](README.ipynb)\n", "|---------------------------|------------------|-----------------------------------|---|---: \n", "\n", "---\n", "# VEC3 - Deux bases\n", "\n", " - [A](#A---Coordonn%C3%A9es-fr%C3%A9quentielles-:-TFD-inverse) - Coordonnées en fréquence : TFD inverse \n", " - [B](#B---Filtrage-fr%C3%A9quentiel) - Filtrage fréquentiel\n", " - [C](#C---Projection-:-produit-scalaire) - Produit scalaire\n", " - [D](#D---D%C3%A9composition-dans-la-base-de-fr%C3%A9quencielle-:-TFD) - Décomposition dans la base fréquentielle : TFD\n", " - [E](#E--dualit%C3%A9) - Dualité de la transformée\n", "\n", "---\n" ] }, { "cell_type": "markdown", "id": "a5c60c7e-8f0b-4a8a-8f4a-320ded1fd828", "metadata": { "tags": [] }, "source": [ "Un vecteur de $\\mathbb{R}^N$ peut être vu comme un signal discret :\n", " - de base temporelle $\\left(\\delta[\\bullet-n]\\right)$ une suite discrète infinie bornée : [VEC1-C](../cours/notebooks/VEC1_bases_temporelles.ipynb#C--Prolongement-aux-suites-r%C3%A9elles-%C3%A0-support-born%C3%A9) où $\\delta$ est l'impulsion unité centrée en 0.\n", " - de base temporelle $\\left(I\\!I\\!I_N[\\bullet-n]\\right)$ une suite N-périodique discrète [VEC1-D](../cours/notebooks/VEC1_bases_temporelles.ipynb#D---Prolongement-aux-suites-N-p%C3%A9riodiques) où la lettre cyrillique *sha* $I\\!I\\!I_N$ désigne le peigne d'impulsions unités N périodique.\n", " \n", "Une deuxième base fréquentielle peut être ajoutée à partir d'ondes compelxes :\n", " - la base fréquentielle $\\left(w_f\\right)$ avec $f\\in[0, F_e[$ pour les suites bornées permet d'établir la Transformée de Fourier des Signaux Discret (TFSD)\n", " - la base fréquentielle $\\left(w_n\\right)$ avec $n\\in[\\![0 ; N[\\![$ pour les suites N périodiques permet d'établir la Transformée de Fourier Discret (TFD) d'algorithme rapide Fast Fourier Transform (FFT)." ] }, { "cell_type": "markdown", "id": "c22d3f6d-f147-4330-91ae-3341fecebaf9", "metadata": { "tags": [] }, "source": [ "## A - Coordonnées fréquentielles : TFD inverse\n", "---\n", "\n", "Par exemple le vecteur $v = [1, 2, 3, 4]$ peut indiquer les coordonnées du signal $\\vec{s}$ dans la base fréquentielle $W = \\left(w_n\\right)$ des signaux discrets de période 4 :\n", "> $v$ est alors les valeurs de la Transformée de Fourier Discrète (TFD) du signal $\\vec{s}$ notée $\\hat{S}$ \n", "\n", "Reprenons d'abord le code de [FREQ2-C](FREQ2_ondes_discretes.ipynb#C----Bases-de-fr%C3%A9quences-TFD/FFT) qui génère la matrice W des ondes complexes $w_0$ à $w_3$ (une onde par rangée) :" ] }, { "cell_type": "code", "execution_count": 1, "id": "1f7807d4-e58a-43cd-b53e-3b373f731112", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "N=4;\n", "k = 0:7; % dim (1x8)\n", "n = transpose(0:3); % dim (4x1)\n", "nk = n*k; % dim (4x1).(1x8)=(4x8)\n", "q = exp(i*2*pi/N); % q=i ici\n", "W = q .^ nk; % on vectorise avec . l'opérateur ^\n", "\n", "w_0 = W(1,:); % Première rangée le signal constant w0\n", "w_2 = W(3,:); % 3ème le signal le plus rapide l'ouest w2 : fréquence de Nyquist \n", "stem(k,w_2);\n", "xlabel(\"temps k [1]\");\n", "title(\"Signal w_2 de Nyquist le plus rapide de l'ouest : rangee 3 de W <-> n=2\")" ] }, { "cell_type": "markdown", "id": "92b77fa3-0e42-4ddb-93ef-64c94134322d", "metadata": {}, "source": [ "On peut faire le produit à gauche $v.W$ qui va faire une combinaison des rangées et donc :\n", "$v.W = v[0].\\vec{w_0} + v[1].\\vec{w_1} + v[2].\\vec{w_2} + v[3].\\vec{w_3} = \\vec{s}$.\n", "\n", "On retrouve ainsi le signal temporel $\\vec{s}$ à partir des valeurs $v$ de sa TFD $\\hat{S}$ :\n", "\n", "> la matrice W permet donc de calculer la TFD Inverse (TFD${}^{-1}$)\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "id": "0125d9c1-defe-4b7d-b1b6-bf7168043646", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "v = [1 2 3 4];\n", "s = v*W;\n", "plot(k,real(s),'bo-',k,imag(s),'ro-');hold on;\n", "legend([\"Real\";\"Imag\"])\n" ] }, { "cell_type": "markdown", "id": "0e56aaa3-efe0-4bef-b3bd-458d91b06dca", "metadata": {}, "source": [ "Le signal est imaginaire, car les ondes fréquentielles ont une symétrie de Hilbert (voir [FREQ2-A3](FREQ2_ondes_discretes.ipynb#A3---Fr%C3%A9quences-n%C3%A9gatives)) :\n", " - $w_0$ et $w_2$ sont des ondes réelles (constante et signal de Nyquist)\n", " - $w_1$ est complexe et égal à $w_5$ et $w{-3}$ par périodicité fréquencielle N=4 (voir [FREQ2-A4](FREQ2_ondes_discretes.ipynb#A4---P%C3%A9riodicit%C3%A9-selon-les-fr%C3%A9quences))\n", " - $w{-1}$ est le conjugué de $w_1$ et est égal à $w_3$ par périodicité de 4.\n", "\n", "Donc dans la base $W$, $w_0$ et $w_2$ sont réels ; $w_1$ et $w_3=w_{-1}$ sont conjugués.\n", "\n", "### Exercice\n", "\n", "Modifiez une valeur du vecteur $v$ précédent pour obtenir un signal réel." ] }, { "cell_type": "markdown", "id": "995d5df7-4f66-430b-996e-355a88cf06e4", "metadata": { "tags": [] }, "source": [ "### Le corrigé \n", "\n", "est caché dans la cellule ci-dessous." ] }, { "cell_type": "code", "execution_count": 3, "id": "a9ffd39b-3aa0-4507-9950-dc016ed73fd3", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "% il suffit d'ajouter les conjugués pour avoir du réel\n", "v = [1 2 3 2];\n", "% w0 w1 w2 w3=w-1=/w1\n", "v = [1 4 3 4]; %%marche aussi \n", "\n", "s = v*W;\n", "plot(k,real(s),'bo-',k,imag(s),'ro-');\n", "legend([\"Real\";\"Imag\"])" ] }, { "cell_type": "markdown", "id": "9de85495-b8ee-4be7-9002-c2f7f66e0e6a", "metadata": { "tags": [] }, "source": [ "### Affichage du spectre\n", "\n", "On peut représenter le module et l'argument de $\\hat{S}$ pour avoir le spectre du signal en fonction de la fréquence.\n", "\n", "Pour cela on se rappelle la discrétisation des fréquences ([FREQ2-B](FREQ2_ondes_discretes.ipynb#B---Discr%C3%A9tisation-fr%C3%A9quentielle)) et la relation :\n", "$f\\leftrightarrow n.F_0$ avec $F_0=\\frac{F_e}{N}$ la résolution fréquentielle.\n", "\n", "**Remarquez bien que le signal temporel est de période $T_0$ soit $\\frac{T_0}{T_e}=N$ en discret** \n", "\n", "On construit un vecteur des fréquences `f` associé à `n` pour afficher $\\hat{S}$ en fonction des fréquences discrétisée. On va considérer que $F_e=10$ Hz.\n", "\n", "Comparons avec ce que donne l'algorithme `fft` (Fast Fourier Transform)" ] }, { "cell_type": "code", "execution_count": 4, "id": "0d829fe5-91c8-4cd3-ad12-80d9b2c0e299", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAJMmlDQ1BkZWZhdWx0X3JnYi5pY2MAAEiJlZVnUJNZF8fv8zzphUASQodQQ5EqJYCUEFoo0quoQOidUEVsiLgCK4qINEWQRQEXXJUia0UUC4uCAhZ0gywCyrpxFVFBWXDfGZ33HT+8/5l7z2/+c+bec8/5cAEgiINlwct7YlK6wNvJjhkYFMwE3yiMn5bC8fR0A9/VuxEArcR7ut/P+a4IEZFp/OW4uLxy+SmCdACg7GXWzEpPWeGjy0wPj//CZ1dYsFzgMt9Y4eh/eexLzr8s+pLj681dfhUKABwp+hsO/4b/c++KVDiC9NioyGymT3JUelaYIJKZttIJHpfL9BQkR8UmRH5T8P+V/B2lR2anr0RucsomQWx0TDrzfw41MjA0BF9n8cbrS48hRv9/z2dFX73kegDYcwAg+7564ZUAdO4CQPrRV09tua+UfAA67vAzBJn/eqiVDQ0IgALoQAYoAlWgCXSBETADlsAWOAAX4AF8QRDYAPggBiQCAcgCuWAHKABFYB84CKpALWgATaAVnAad4Dy4Aq6D2+AuGAaPgRBMgpdABN6BBQiCsBAZokEykBKkDulARhAbsoYcIDfIGwqCQqFoKAnKgHKhnVARVApVQXVQE/QLdA66At2EBqGH0Dg0A/0NfYQRmATTYQVYA9aH2TAHdoV94fVwNJwK58D58F64Aq6HT8Id8BX4NjwMC+GX8BwCECLCQJQRXYSNcBEPJBiJQgTIVqQQKUfqkVakG+lD7iFCZBb5gMKgaCgmShdliXJG+aH4qFTUVlQxqgp1AtWB6kXdQ42jRKjPaDJaHq2DtkDz0IHoaHQWugBdjm5Et6OvoYfRk+h3GAyGgWFhzDDOmCBMHGYzphhzGNOGuYwZxExg5rBYrAxWB2uF9cCGYdOxBdhK7EnsJewQdhL7HkfEKeGMcI64YFwSLg9XjmvGXcQN4aZwC3hxvDreAu+Bj8BvwpfgG/Dd+Dv4SfwCQYLAIlgRfAlxhB2ECkIr4RphjPCGSCSqEM2JXsRY4nZiBfEU8QZxnPiBRCVpk7ikEFIGaS/pOOky6SHpDZlM1iDbkoPJ6eS95CbyVfJT8nsxmpieGE8sQmybWLVYh9iQ2CsKnqJO4VA2UHIo5ZQzlDuUWXG8uIY4VzxMfKt4tfg58VHxOQmahKGEh0SiRLFEs8RNiWkqlqpBdaBGUPOpx6hXqRM0hKZK49L4tJ20Bto12iQdQ2fRefQ4ehH9Z/oAXSRJlTSW9JfMlqyWvCApZCAMDQaPkcAoYZxmjDA+SilIcaQipfZItUoNSc1Ly0nbSkdKF0q3SQ9Lf5RhyjjIxMvsl+mUeSKLktWW9ZLNkj0ie012Vo4uZynHlyuUOy33SB6W15b3lt8sf0y+X35OQVHBSSFFoVLhqsKsIkPRVjFOsUzxouKMEk3JWilWqUzpktILpiSTw0xgVjB7mSJleWVn5QzlOuUB5QUVloqfSp5Km8oTVYIqWzVKtUy1R1WkpqTmrpar1qL2SB2vzlaPUT+k3qc+r8HSCNDYrdGpMc2SZvFYOawW1pgmWdNGM1WzXvO+FkaLrRWvdVjrrjasbaIdo12tfUcH1jHVidU5rDO4Cr3KfFXSqvpVo7okXY5upm6L7rgeQ89NL0+vU++Vvpp+sP5+/T79zwYmBgkGDQaPDamGLoZ5ht2GfxtpG/GNqo3uryavdly9bXXX6tfGOsaRxkeMH5jQTNxNdpv0mHwyNTMVmLaazpipmYWa1ZiNsulsT3Yx+4Y52tzOfJv5efMPFqYW6RanLf6y1LWMt2y2nF7DWhO5pmHNhJWKVZhVnZXQmmkdan3UWmijbBNmU2/zzFbVNsK20XaKo8WJ45zkvLIzsBPYtdvNcy24W7iX7RF7J/tC+wEHqoOfQ5XDU0cVx2jHFkeRk4nTZqfLzmhnV+f9zqM8BR6f18QTuZi5bHHpdSW5+rhWuT5z03YTuHW7w+4u7gfcx9aqr01a2+kBPHgeBzyeeLI8Uz1/9cJ4eXpVez33NvTO9e7zofls9Gn2eedr51vi+9hP0y/Dr8ef4h/i3+Q/H2AfUBogDNQP3BJ4O0g2KDaoKxgb7B/cGDy3zmHdwXWTISYhBSEj61nrs9ff3CC7IWHDhY2UjWEbz4SiQwNCm0MXwzzC6sPmwnnhNeEiPpd/iP8ywjaiLGIm0iqyNHIqyiqqNGo62ir6QPRMjE1MecxsLDe2KvZ1nHNcbdx8vEf88filhICEtkRcYmjiuSRqUnxSb7JicnbyYIpOSkGKMNUi9WCqSOAqaEyD0tandaXTlz/F/gzNjF0Z45nWmdWZ77P8s85kS2QnZfdv0t60Z9NUjmPOT5tRm/mbe3KVc3fkjm/hbKnbCm0N39qzTXVb/rbJ7U7bT+wg7Ijf8VueQV5p3tudATu78xXyt+dP7HLa1VIgViAoGN1tubv2B9QPsT8M7Fm9p3LP58KIwltFBkXlRYvF/OJbPxr+WPHj0t6ovQMlpiVH9mH2Je0b2W+z/0SpRGlO6cQB9wMdZcyywrK3BzcevFluXF57iHAo45Cwwq2iq1Ktcl/lYlVM1XC1XXVbjXzNnpr5wxGHh47YHmmtVagtqv14NPbogzqnuo56jfryY5hjmceeN/g39P3E/qmpUbaxqPHT8aTjwhPeJ3qbzJqamuWbS1rgloyWmZMhJ+/+bP9zV6tua10bo63oFDiVcerFL6G/jJx2Pd1zhn2m9az62Zp2WnthB9SxqUPUGdMp7ArqGjzncq6n27K7/Ve9X4+fVz5ffUHyQslFwsX8i0uXci7NXU65PHsl+spEz8aex1cDr97v9eoduOZ67cZ1x+tX+zh9l25Y3Th/0+LmuVvsW523TW939Jv0t/9m8lv7gOlAxx2zO113ze92D64ZvDhkM3Tlnv296/d5928Prx0eHPEbeTAaMip8EPFg+mHCw9ePMh8tPN4+hh4rfCL+pPyp/NP637V+bxOaCi+M24/3P/N59niCP/Hyj7Q/Fifzn5Ofl08pTTVNG02fn3Gcufti3YvJlykvF2YL/pT4s+aV5quzf9n+1S8KFE2+Frxe+rv4jcyb42+N3/bMec49fZf4bmG+8L3M+xMf2B/6PgZ8nFrIWsQuVnzS+tT92fXz2FLi0tI/QiyQvpTNDAsAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAddEVYdFNvZnR3YXJlAEdQTCBHaG9zdHNjcmlwdCA5LjI2WJButwAAHFhJREFUeJzt3TFsItnBwPFHvq3t9RWpPI6ElFAMHdnCuLvDklGqOMKW0sSWzlgpEitS0Lo4oiirk+KwjcvFkdZSmoWVrK3CSaY1bpYmgsJKTGFcRUpYtkvFV7y9OQ5smBlm4M17/59cAAZ75i3w93vDQmwwGAgAABbtB4veAAAAhCBIAABFECQAgBIIEgBACa6C1Gq1ut3u8Nl+vx/aJgEATPRk8rf7/f7+/r5t291u17btQqGwt7dnWVa73f7973+fTqfns5UAAO1NCVK1Wl1fXy8UCkKIL774IplMWpb14sWLbrdbLBYJEgAgKFOCtLW1JU/INbpWq5VMJoUQlmVdX1+HvXEAAHNMOYZkWZZlWY1GY39/P5/Py0vkt9bX10PfOgCAMabMkIQQpVLp/v7+9PTUsqxSqeS8uuGxGVIikQhyAwEAUXNzc+PjVlOCVKlUZI3k2WQy2Wq1hBDyNQ7BbooeYrGY4e/GxAgwAoyA4SPge1oyJUjyBd97e3vy7Pn5+dnZWalUur6+Pjg48PcrAQAY5yfjjUZDHlt68LuJRIIZ0qK3YpEYAUZA1xGIxWKL3gRFjfxz+67A9GNI43i1NwAzuQytrkl+UICd5q2DAmbOvfAxjAAjwAgwAv4QJACAEggSAEAJBAkAoASCBABQAkECACiBIAEAlECQACBksdinr0VoNpvPnz9fyK/2ys9/jAUAuBWLCee/JQ2f9qLZbPZ6vXg8Ho/HO53OyspKs9kUQmQyGXmFXq/XbDZXVlZSqZQQotPpyKulUqlms1mv1+XZXq8nf478mc71HfV6Xf7MXq/X6XRGvhs2ggQAoRkp0GDgo0lv37599epVKpWq1+vydLPZTKVSnU6nWq2Wy+Ver5dKpXK5XKfTicfjh4eHuVwuk8nU6/Xj4+Pb21tZFyHE8+fPU6nUr3/961/84hfO9U9OTpzfVa1We71eLpd7+/bt7e0tQQKAiHCzCjd+ncm3GsvV+/fvU6nUycmJnOUIIeRZeaLX65XL5ePjY/mRdXL2c3x8LHvTbDY3NzebzabsUyqVKpfLJycnw9cfDtLm5ubl5WUul7u8vDw+Pp6+d4HiGBIA+DUYTPkav87UW42RYUilUs+fP5cTHYdcu/vvf//76tWrTCaTyWTi8bhcixNCxOPxXC43cn0hxMj1h6+Qy+Xq9fpC1usEQQKA+fF1DKlerx8eHjabzZ2dnWq1OvwtmY3PPvvs8PCwXq/X6/XNzU25micefznDyPVHvpvJZPL5/OHhodftnB1LdgAQGnnQaGaZTEbOXU5OTi4vL+Vxo06nk8vlVlZW8vl8Lpe7vb2V0crlcvKsvP7Kykqn06nX685PG7n+yO/a2dnZ3Nwsl8uzb7ZXwb9HuuGfhwRAVwv8UAn5qrlUKrWysiInPTIkw6tq9XpdvgzPOSuvL759Qd3I6tzI9X0bH5a5fh4SAGCexssxfoDHeQn4+NkHjwaNXF8FBAkAomQhR3fmgyABQJTMvsimLF5lBwBQAkECACiBIAEAlECQAABKIEgAACUQJACAEggSAEAJBAkAoASCBABQAkECACiBIAEAlECQAABKIEgAACUQJAAwhfygv+ETSiFIABCuWOzT18LlcjnZoVwu980338gPn1UHQQKAEMViYjD49OW7SZ1Op16v1+t1edY50ev1ms2mPFGv1+Vp5/rOWUmejcfjwzdRap7EB/QBQFhkjRyyScOXuNHpdPL5fCqV6nQ6l5eXJycn1Wq11+vlcrm3b9/e3t7G4/FUKiVnP/F4/PDwMJfLZTKZer1+fHycy+Xkz2k2m71eTy7W9Xq9f/zjH/KsOp/4R5AAwCc3M57x60y+1XiuVlZWyuVyPB5/+/btq1evhBCbm5uXl5e5XO7y8vL4+LhcLh8fH+fzefHt58nKDnU6neFJUj6fr1armUxGCFGtVg8ODv7zn//Is4ogSADg09S5zvh8yMcMqdfrPX/+vNfrraysyEtyuZy8pNPppFKp6rfEtytym5ub8rQ6sx83OIYEAHPio0ZCiFevXu3s7NTr9cPDQ+fCTCaTz+flJZ999tnh4aE8yLS5uSkX94QQzWZTtZctTMYMCQDCMssLGRw//elP//znP79//945AhSPx3d2djY3N8vlshAin8/ncrnb29tms7mzs5PL5eTZer1+cnLy2I9dWVmRr31QZ9UuNvDR64kSicTNzU2wPxMAFi4WC/4J0yX5MoRUKtVsNuPxuLN2N6xerw+v0dXr9VQq9eA1Hc1mc2VlZcZlvfFh8V0BggQAriwwSCoLMEgcQwIAKIEgAQCUQJAAAEogSAAAJRAkAIASCBIAQAkECQCgBN6pAQDciqnwoUb6IkgA4Ar/KzZsLNkBAJRAkAAASiBIAAAlECQAgBIIEgBACQQJAKAEggQAUAJBAgAogSABAJRAkAAASiBIAAAlECQAgBIIEgBACQQJAKAEggQAUAJBAgAogSABAJRAkBCkWOzTFwAzyYe/v+cBgoTAxGJiMPj0RZMAA8knASF8Pg8QJATDuSNKNAmAVwQJAaNDgJlG/ioV3v8wJUgIHoeRADONPPbHEzUZQUIw5J9Cw4eRBGUCjOE80j0VaARBQsCcF9oNv8CBLAFaevDx7lzuNU4ECcEYvkc6MyRpOEuUCdDD+IqINPwqO6+eBLZ1MJibP4WcK8gmzTKvB7BA4T2ECRLmzTm8JMgSEClhP2wJEmblY6VYkCUgOgJ5wYIbBAkz8Vcjx3CWBGUCFDPnPxkJEvybsUYODi8BqlnIg5EgQSGs4wGLtdjlCoIEn4KaHo0jS8D8qfCII0jwI7waOTi8BMyHCimSCBI8m0ONHBxeAsKj2sOKICEaWMcDgqLswoOrtw7q9/vdbjfsTUEkzHN6NI43xwNm8dj7/SjC1QypWq1++PChUCgIIZ49e2bbthDCtm15Ccyx2Bo5OLwEeBWJ1YXpQdre3m63219++aUQotvt2rZ9fn4e+nZBPYrUyMHhJcCNCD1Api/ZXVxcyBoJIbrd7vLycrFYLJVK/X4/5G0DXGEdDxg38sEQkeDt4yf6/f7q6mo2m3369OnR0dFjV4sNmXkLoQTVpkfj+JALQFrIgaJAnva9vcoum81ms1khRDqdrtVqj11toPhTFzxSv0YO1vFgsgXe7Yef9hOJhL8f4m2GdHZ21mg0/P0mRFSEajSMdTyYI4qrcw/yNkNaX18/Ojra2tpqt9u7u7shbRMQFP73EvSm2X075mN5rdFoWJZlWdaD300kEjc3NzNvGJQQ0enRg3iZOHSicop8V8DPOzWk02kft0Lk6FQjweEl6ELjOzBvHYSHaVajYazjIYpMmOITJBiKLCEqzLmXEiQ8QOPp0QjehQgqMydFEkHCKHNq5ODwElRj5l2RIOF7DKzRMNbxsFiGT9YJEjCKdTzMH38GCYKEYYZPj0awjof54A7mIEj4hBo9hnU8hIQ71QiCBCGokQtkCUFhNfgxBAnwgMNLmAV/0ExGkMD0yDMOL8Er7ipuECTTUaNZsI6HyZhMe0KQjEaNAkGWMI77gw8EyVzUKFgcXoJEinwjSECQOLxkMv7RZ0SQDMX0KGys45mDaXFQCJKJqNHcsI6nN/7gCBZBMg41mj/W8fTDP2UYCBIwP6zjaYB/vvAQJLMwPVIBWYoi1l3ngCAZhBophcNLUcGfDnNDkExBjdTE4SWV8Y8yZwQJUALreOpg2rooBMkITI+igiwtFiO/WARJf9Qocji8NH+kSAUESXPUKLo4vDQfDK86CBKgOtbxwsAEVEEESWdMj3TCOl5QSLuyCJK2qJGWWMebBYOmOIKkJ2qkPdbxPGGgIoEgARFGliZjhTNaCJKGmB6ZhsNL44h0FBEk3VAjY3F4STJ89yONIGmFGkGYuo7HBFEDBAnQkzlZMmEfDUGQ9MH0COP0PrxEijRDkDRBjTCBfoeXtNkRDCNIOqBGcCnq63i6TvUgESTAOFHMUrS2Fv4QpMhjegR/onJ4iRSZgyBFGzXCjFQ+vKTgJiFUBCnCqBECpM46nvqTNoSEIAH4zmLX8VTIIRaIIEUV0yOEZ/7reKQIgiBFFDXCfIS9jsfqHIYRpOihRpizMLLElAjjCBIAV4I6vESK8BiCFDFMj7BYsxxeIkWYjCBFCTWCOh5cx3PmTw9eyL0XkxGkyKBGUNCEdTw6BK9+sOgNgCvUCCobDL4rk+wQNYIPzJAABMbJ0sjMCXCDGVIEMD1CtHB3hT8ESXXUCFExGHxvSsRdF16xZKc0HtKIluEmcdeFVwQJQJDoEHxjyU5dTI8AGIUgKYoaATANQVIRNQJgIIIEAFACQVIO0yMAZiJIaqFGAIxFkBRCjQCYjCABAJRAkFTB9AiA4QiSEqgRABCkxaNGACAIEgBAEQRpwZgeAYBEkBaJGgGAgyAtDDUCgGEECQCgBIK0GEyPAGAEQVoAagQA4wjSvFEjAHgQQQIAKIEgzRXTIwB4DEGaH2oEABMQpDmhRgAwGUECACiBIM0D0yMAmIoghY4aAYAbBClc1AgAXCJIAAAluApSv9/vdrvO2Var1e/3Q9skfTA9AgD3XAWpWq2+efNGnt7b26tUKvv7+41GI8wNizxqBACeTA/S9vb2y5cv5elarWZZ1osXL05PT8vlcsjbFmHUCAC8mh6ki4uLL7/8Up5utVrJZFIIYVnW9fV1uJsWWdQIAHzw/KIGy7LkifX19aA3BgBgLs9Bcl7dMGGGFBvif9OiiekRAAMF8rTvLUjJZPLu7k4I0e12bdt+7GqDIb63LIqoEQAzBfK0/8TTtbPZ7NnZWalUur6+Pjg48P1btUSNAGAWMR81azQalmU5B5NGJBKJm5ubmTcseggSAIgZKuBthiSl02kft9IbNQKAGfHWQQGgRgAwO4I0K2oEAIEgSAAAJRCkmTA9AoCgECT/qBEABIgg+USNACBYBAkAoASC5AfTIwAIHEHyjBoBQBgIkjfUCABCQpAAAEogSB4wPQKA8BAkt6gRAISKILlCjQAgbAQJAKAEgjQd0yMAmAOCNAU1AoD5IEiTUCMAmBuCBABQAkF6FNMjAJgngvQwagQAc0aQHkCNAGD+CBIAQAkEaRTTIwBYCIL0PdQIABaFIH2HGgHAAhEkAIASCNInTI8AYLEIkhDUCAAUQJCoEQAowfQgUSMAUITpQQIAKMLoIDE9AgB1mBskagQASjE0SNQIAFRjaJAAAKoxMUhMjwBAQcYFiRoBgJrMChI1AgBlmRUkAICyDAoS0yMAUJkpQaJGAKA4I4JEjQBAfUYECQCgPv2DxPQIACJB8yBRIwCICp2DRI0AIEJ0DhIAIEK0DRLTIwCIFj2DRI0AIHI0DBI1AoAo0jBIAIAo0i1ITI8AIKK0ChI1AoDo0idI1AgAIk2fIAEAIk2TIDE9AoCo0yFI1AgANBD5IFEjANBD5IMEANBDtIPE9AgAtBHhIFEjANBJVINEjQBAM5EMEjUCAP1EMkgAAP1EL0hMjwBASxELEjUCAF1FKUjUCAA0FqUgAQA0FpkgMT0CAL1FI0jUCAC0F4EgUSMAMEEEggQAMIHqQWJ6BACGUDpI1AgAzKFukKgRABhF3SABAIyiaJCYHgGAaVQMEjUCAAMpFyRqBABmUi5IAAAzqRUkpkcAYCyFgkSNAMBkqgSJGgGA4VQJEgDAcEoEiekRAOCJ1xs8e/bMtm0hhG3bhUJh9i2gRgAA4TVI3W7Xtu3z8/Ogfj01AgBInoO0vLxcLBaXlpby+fzy8nJImwUAMI23Y0j9fn91dTWbzT59+vTo6Oixq8WGTPhpTI8AQA8un/Yn8zZDymaz2WxWCJFOp2u12mNXG7joDDUCAG0MP+0nEgl/P8TbDOns7KzRaPj7TcOoEQBghLcZ0vr6+tHR0dbWVrvd3t3dDWmbAAAGirlZXhvRaDQsy7Is68HvJhKJm5ubSb+S6REA6GtqBR7j+f8hCSHS6bSPW0nUCADwoLm+UwM1AgA8Rom3DgIAYH5BYnoEAJhgTkGiRgCAyeYRJGoEAJgq9CBRIwCAG7yoAQCghHCDxPQIAOBSiEGiRgAA98IKEjUCAHgSZJBiMSE/CGOGj8NAxMk7gXNXAGAaJwPenwQCC5KcEjErMppzJ5BfNAkwjbM45utJIJQlO7JkIlZpAcPN/CQQTJDGN4O/jw01smTH2h1giAcf8h5LEEyQxn8pfy6bxbkvDi/ZiaFp+2NfAKJiwgN5+JjN8FO/xxL4+Twk4BOnKPI+NxyY4TvihHvkhCbxFw0wfwt9SAZ2DMn5O1gwPdLeyN9Ew+EZ/pYbwzOqkS/mVUBIpk50Hvxyw1ku8/Q88K0gX9Tw4IwN+nisQ8M83Xcno1XALMKrzmTDy/UesWSHaUbW5VTAGiAg6XWHJ0h4hIIdcsNfqybfEFgsvaozAUHC90W0Q25M3iNjHvNQFPdAgoRPNO6QSywDYg64L01EkMxGh9ygVfCEe4VfBMlIdCgotMpY/PuGgCCZhA7NE63SAP9S80WQDECHVEOrlMKYK4MgaWrk/Q0RFbQqDLziPyIIkl6YDGmMVk3GIEQfQdICHTKcOa3SbHfwfQQpyugQpppzqwJZK6Y6piJIEUSHEIjAWzXy7s6T3+yZ6mAMQYoOOoS58f2WgCM/hOrAC4KkPDoEpUxu1XiBuN/CNYKkKjqEKBq5u/IJVfCCICmGDiG65Bqdc9flo6PhEUFSAx2CHoaPG3FnhkcEaaF46EI/3JnhF0FaBDoEAGMI0hzRIQB4HEEKHx0CABcIUmjoEAB4QZCCRocAwBeCFBA6BACzIUizoUMAEBCC5AsdAoCgESQv6BAAhIYguUCHACB8BOlxdAgA5oggjaFDALAIBOlbdAgAFsr4INEhAFCDqUGiQwCgGMOCRIcAQFVmBIkOAYDytA4SHQKA6NAxSHQIACJIoyDRIQCIsugHiQ4BgBYiGyQ6BAB6iVqQ6BAAaCoiQaJDAKA7tYNEhwDAGEoGiQ4BgHmUCZITIUGHAMBEiw4SkyEAgBBiYUGiQwCA7/tBwD9veOXtwe/Kr8Hg0xcAAEKIgGdITo1kcsYvp0AAgEcEN0Ny5j1CiMHgu8kQ8yEAgAsBzZCYEgEAZhP0MSSJ+RAAwKOAgiTX6IaNzJkAAJgo0BnS8IsaAADwIrggyWU6mSKW7AAAHgV9DIkOAQB8CedFDQAAeESQAABKIEgAACUQJACAEggSAEAJBAkAoASCBABQAkECACiBIAEAlOAnSK1Wq9/vB74peogZ/z5+jAAjwAgwAv54DtLe3l6lUtnf3280GmFsEADATN4+oK9Wq1mW9eLFi263WywW0+l0SJsFADCNtxlSq9VKJpNCCMuyrq+vw9kkAICJPC/ZWZYlT6yvrwe9MQAAc8UGXj4wolQqra2t7e7uCiESicTNzc34dRKJRGBbBwCIoAfrMJW3Y0jJZLLVagkhut2ubdsBbgcAwHDeZkhCiO3t7fX19evr64ODg2w2G9JmAQBM4zlIQohGo2FZlnMwCQCA2fkJEgAAgQv4rYPMeROHfr/f7Xads+M7PnKJfiPTarVMHoFGozF5f8cv0WwEhBDdbnfCDk4dEP2YNgLdbtfTk8CDlwz7vz/+8Y9Bbdze3l632z07OzNhQe9vf/vb+/fvNzY2xEM7PnKJZiPT7/d/+ctf/vvf/3737t0///nPjY0No0ZA7v5gMPj6669/+MMf/vjHPxbm3QeEEP1+/2c/+9lvfvMbeXbq/mo2As+ePWs0Gs5DQJg3AsVisdlsvnv37n//+18ymXSzv9NHYBCQv//971999dVgMLi7u/vVr34V1I9V089//vOf/OQnf/nLXwYP7fjIJfqNTLlclvs+GAw+//xz00agXC6Xy+XB4/s7folmIyB99dVXn3/++YcPHwYu9lezERjfC9NG4OrqSu7Ohw8ffvvb37rZXzcj4O1l3xMY9SYOFxcXpVJJnh7f8ZFLbNvWbGS2trbkCTn1Nm0EDg4O5IlWqyX/yjNtBIQQZ2dna2tr3W53eXlZuNhfzZ4f5I4Xi8WlpaV8Pr+8vGzaCFxdXa2trVUqFSHE6elpqVSaur9uRiDIY0jGvonD+I6PXKLZyMjpdqPR2N/fz+fzwrwREEKUSqWXL1/KB5gwbARarVar1XLCLE3dX51GoN/vr66uZrPZp0+fHh0dyQuNGgEhxJs3b4QQd3d3e3t7wt3+Th2BIIPkHN3SoP+ejO/4yCX6jUypVKpUKqenp/JtOwwcgUKhcHFx8fLlS3nWqBE4OztbXV0tlUryTZblrk3dX51GIJvNFgqFdDp9cHDw8eNHeaFRIyCE2Nra2t3dLRQKcgTc7O/UEQgsSMlk8u7uTkx8Ewctje/4yCX6jUylUrm/vz89PZV/75g2AsVisVarCSHkapUwbwQODg42NjY2NjaWl5ez2ezS0tLU/dVsBM7OzkY+f8e0EVhbW3NO9/t9N/vrZgSC/H9IRr2JgzyGVCgUxEM7PnKJZiNTLBbb7fbS0pI8e35+btQItFqto6Ojra2tdru9sbEhV66MGgHH3t7e+fm5PD11f3UageH7QDablesERo2A+HZ3nBFws7/TRyDwl17c3d0F+zMjYXzHRy7RfmSMGoEPHz5M3d/xS3QagQdN3V/NRsDHv7jeI+DjQTGCd2oAACgh4HdqAADAH4IEAFACQQIAKIEgAQCUQJAAAEogSAAAJRAkGCGRSOwNabVai96iUY1G49mzZ86b9iYSieHvjpyVSqXSF198MfKWAUB0BfZu34DinPcUUNbOzo587w+XPF0ZUB9BgqFarVa73a7VarZtr62tlcvljx8/OkkolUrVatWyLPmuMLZt12o1+a1KpeJ8uEClUhm+YavVkm/IX61Wt7a2/vSnPy0vL8sfJT+nYHd3d+Qm7je4UqnI99CT20ONoB+CBFM4q2Fra2u7u7sfP358+fLl6enp0tLSH/7wh4uLCyHE0dGRLEq73a7X60KI7e3tra0ty7La7ba8+d3dnfMxSJVKZfiGlmV98803r1+/fvHixdHRkbyJ86MymcyPfvSjkZvI4E3eYGl3d1deuVgsBj44gAoIEkwhP2daCOG8Laxt2+l0ulQq2bYt42Hb9t3d3f39/e7urnwzb+fTCMfJ2dXwDS3LciZPq6urQoirq6tsNit/1OvXr9+9ezdyEzcbLIT461//Kk+cnZ0JFuugKYIEU6TT6ce+1e12r66u5Om1tbV2u+18tMRkIzccv8L9/b3TlWQyWavV/vWvf02+yYQNbjQatVrt9evXbrYNiBxeZQfTra2tLS8vFwqFQqHw9OnTpaUl27adZjgrdQ7ns8XGbzj+w5PJpPOjtre3nzx5MvUmj2m1WsVi8fT01GUsgchhhgTT7e7u1mq1vb09eaDo9evX6XR6e3v7/v7e+YBLuc5WKpXu7++diozfcLxeOzs7+/v78mNVbdv+3e9+J1937tzE/XbKxTrnAJL6LxoEvOLjJwAhhGi1Wh8/fhxeJWs0GpZlvXnzRghRKBT6/X673bZte2SCMn7DcY1GQ36s6oSbNBqNq6srrweHSqXSxsbG5N8ORAUzJEAIIZxaOEae5ZeXlx983h+/4biRGz52k3a7Pfl1dyMqlYr81FqX1wcUR5CASeb2dG/bdj6f93RUybZt+bq+8LYKmKf/ByG1ITn0F9BGAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n=0:3; %fréquences discrètes\n", "N=4;\n", "Fe=8e3; % pour 8.10^3 notation\n", "F0=Fe/N;\n", "f = n*F0;\n", "plot(f,abs(v),'ro-'); hold on;\n", "xlabel(\"Frequence [Hz]\");\n", "\n", "% on prend les 4 premiers échantillons de s\n", "s=s(1:4);\n", "fft_s = fft(s);\n", "plot(f,abs(fft_s),'bo-');\n", "legend([\"spectre v\";\"avec fft\"])" ] }, { "cell_type": "markdown", "id": "b78938c3-38fd-4679-b380-f5cfb9482117", "metadata": {}, "source": [ "La TFD (et donc son algo rapide FFT) ne normalise pas les signaux : \n", "> pour économiser une division par N de tous les coefficients la FFT amplifie par N les composantes\n", "\n", "À nous de diviser par N...\n", "\n", "De plus on rappelle qu'il y a **périodicité des fréquences** :\n", " - pour $\\vec{w_0}$, $n=0\\quad\\leftrightarrow \\quad f=0.F_0 = 0$kHZ$ \\quad\\equiv 0+F_e = 8$kHz = $\\vec{w_4}$\n", " - pour $\\vec{w_1}$, $n=1\\quad\\leftrightarrow \\quad f=1.F_0 = 2$kHz$ \\quad\\equiv F_0-F_e = -6$kHz = $\\vec{w_{-3}}$ \n", " - pour $\\vec{w_2}$, $n=1\\quad\\leftrightarrow \\quad f=2.F_0 = 4$kHz$ \\quad\\equiv F_0-F_e = -4$kHz = $\\vec{w_{-2}}$ (Nyquist !)\n", " - pour $\\vec{w_3}$, $n=1\\quad\\leftrightarrow \\quad f=3.F_0 = 6$kHz$ \\quad\\equiv F_0-F_e = -2$kHz= $\\vec{w_{-1}}$\n", "\n", "On aimerait afficher non pas :\n", " - $[1, 2, 3, 4]$ de $0$ à $F_e$, mais avec les fréquences négatives \n", " - $[3, 4, 1, 2]$ de $-\\frac{F_e}{2}$ à $\\frac{F_e}{2}-F_0$\n", "\n", "On peut observer la symétrie de Hilbert autour de 0 Hz au lieu de l'observer autour de la fréquence de Nyquist $f_q=\\frac{F_e}{2}$.\n", "\n", "Pour faire ce décalage de $-f_q=\\frac{F_e}{2}$, mais périodique la fonction `fftshift` fait le job ..." ] }, { "cell_type": "code", "execution_count": 5, "id": "b6466b70-2d77-4618-9eb0-b486ae361f64", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n=0:3; %fréquences discrètes\n", "N=4;\n", "Fe=8e3; % pour 8.10^3 notation\n", "F0=Fe/N;\n", "f = n*F0;\n", "Fq = Fe/2;\n", "fshift = f- Fq;\n", "plot(fshift,fftshift(abs(v)),'ro-'); hold on;\n", "xlabel(\"Frequence [Hz]\");\n", "\n", "% on prend les 4 premiers échantillons de s\n", "s=s(1:4);\n", "fft_s = fft(s);\n", "plot(fshift,fftshift(abs(fft_s)/N),'bo+');\n", "legend([\"spectre v\";\"avec fft\"]);" ] }, { "cell_type": "markdown", "id": "d972d393-fd41-480b-bc1c-0507fb07de10", "metadata": {}, "source": [ "Si vous avez pris le vecteur $v=[1, 2, 3, 4]$ vous observez qu'il n'y a pas de symétrie de Hilbert (ni autour de 0, ni autour de $f_q=\\frac{F_e}{2}$) :\n", "> pas symmétrie de Hilbert en fréquence <=> pas réels en temporel \n", "\n", "Si vous avez gardé le vecteur $v=[1, 2, 3, 2]$ vous observez qu'il y a symétrie de Hilbert (et autour de 0, et autour de $f_q=\\frac{F_e}{2}$) :\n", "> symmétrie de Hilbert en fréquence <=> signal réel en temporel \n", "\n" ] }, { "cell_type": "markdown", "id": "ffd18cf9-04c2-4261-ae18-db5f697ac46a", "metadata": {}, "source": [ "### Exercice : USAP\n", "\n", " \n", " \n", "On vous donne le spectre (calculé avec `fft`) d'un signal d'une supportrice de l'USAP.\n", "\n", " - 1 affichez le module de ce spectre et vérifiez qu'il s'agit d'un signal réel en observant s'il y a symétrie de Hilbert. Pour observer la phase utilisez la fonction `angle` pour avoir l'argument du phaseur et la fonction `unwrap` pour éliminer les modulos $2\\pi$ et donner une courbe de phase \"continue\"\n", " - 2 Effectuez une transformée inverse du spectre et écoutez le signal (`help audiowrite`pour voir comment faire un .wav)\n", " - 3 Mesurez à l'œil la fréquence du sifflement parasite en zoomant dans le spectre.\n", " - 4 Calculez la matrice W en adaptant $n$ et en choisissant $k$ 4 fois plus long que le signal (**le calcul peut prendre plusieur secondes et de la RAM**)pour savourer la périodicité de ce signal. **Attention `fft` donne des spectres N fois trop grand par rapport à W** ne pas saturer le son ave cune amplitude trop grande.\n", " \n", "Mieux vaut lancer Octave/matlab et non pas les notebooks pour pouvoir profiter des figures interactives.\n", "\n", "Lancez octave avec la commande `cd ~/signal_discret/tp && octave --force-gui &` dans un terminal (CTRL+ALT+T). \n", "Commencez par recopier ce code dans un fichier `.m` et l'exécuter " ] }, { "cell_type": "code", "execution_count": 6, "id": "b304c6ce-e366-40aa-a95d-4b6c45d41511", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", "\n", " 1 3000\n", "\n", "Fe = 8000\n" ] }, { "data": { "image/png": "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zbySANBEIAUhhACgb78YuwITQBoBwAAIJACACAQSAEAEAgkAIAKBBAAQgUACAIhAIAEARCCQAAAiEEgAABEIJACACAQSAEAEAgkAIAKBBAAQgUACAIhAIAEARCCQAAAiEEgAABEIJACACAQSAEAEAgkAIAKBBAAQgUACAIhAIAEARCCQAAAiEEgAABEIJACACAQSAEAEAgkAIAKBBAAQgUACAIhAIAEARCCQAAAiEEgAABEIJACACAQSAEAEAgnDufvu0dhVACAXgQQAEIFAAgCIQCABAEQgkAAAIhBIAAARCCQAgAgEEgBABAIJACACgQQAEIFAAgCIQCABAEQgkAAAIhBIAAARCCQAgAgEEgBABAIJACACgQQAEIFAAgCIQCABAEQgkAAAIhBIAAARCCQAgAgEEgBABAIJACACgQQAEIFAAgCIQCABAEQgkAAAIhBIAAARCCQAgAgEEgBABAIJACACgQQAEIFAAgCIQCABAEQgkAAAIhBIAAARCCQAgAgEEgBABAIJACACgQQAEIFAAgCIQCABAERIDKTb29v9ft/8zXa7vb29db1E5eDgYOwqjIZzLxPnjnCJgfTjjz++ffu2fnl+fv7u3btnz56t12vzJQAArX6ZsM+TJ092u90333xTvby5uVksFq9fv97v95eXl7e3t82Xp6enWSsMAJinlB7S+/fv6zRSSm2329VqpZRaLBabzUZ7mauiAIB5y7OoYbFYVD+cnJyYLwEAaBU6ZLderz98+HB0dPT06VPzX+sFDpvNZrlcNl+6Cjw+Po6s6hw8ePCgzBNXnDvnXp6Szz1NaCCdnp66ZoNWq9V2u1VK7ff75XKpvbTu8vHjx6TaAgBmK2VRg+bs7Oz6+vrq6mqz2VxcXGgvu5cPACjBwd3dXZaC1uv1YrGoZ4+0lwAA+GULJAAAuhjhq4P2+32Z3+mw3W79X28xb0WdbKXwd7z5l17aiTff93LO3TzT2HP/nz/+8Y+ZK+V1e3v7m9/85ve//3318vz8fL/fX19fz3t87/b29re//e2//vWvn3766W9/+9vDhw9VMedeKepkFe/4l3/pRZ345eXlX//6159++uk///nParUq5NzrD/x33333q1/9qnoUNeXc74b17bffPnr06PPnz3d3d3/+85+//fbbu7u7T58+/e53vxu4JkP64Ycf/vSnP1U/P3r06K6kc78r7GQrhb/jd42/9KJO/MOHD9XJfv78+Q9/+EM55/727dvqA//58+fqTNPOPcMqu3DX19dHR0f7/f7w8FAZX/EwZE0G9vjx4+qH5ghGIeeuCjvZSuHvePMvvagTrx7WfPfunVLq+++/v7q6KuTcl8vlu3fv1uv1brernvZJe9+Hm0Pabrfb7VZbCF7IdzpUPdb1ev3s2bPnz5/Xv6x+mPe5V4o6WVX2O27+pRdy4pXqW6c/ffp0fn6uijn3xWJx7969m5ubm5ubo6Oj+pfVD+Hn3nsPqf6Kh/V6ff/+/aurq+pLV6u/0pDvdJiu5tdbXF1d/eMf//j+++/rN2ne564p6mQrxb7j19fXzb/0g4ODQk688vjx4+rrbJ48eaKKedN/+OGHs7Oz6sR//etfVz8knHvvgVR/xcNyufz3v/+tlNpsNmdnZ/fu3Qv5TodJq8/93bt3VdtU/9Psz72pqJOtlPyOX1xcNP/S//nPf/79739XBZy4Uuro6OjTp0/Vz7e3t+W86aa0cx/hOaTz8/M3b95UPz958uTk5KT+ioeBazKYy8vL3W5379696mV1+oWce6Wok1W840qpxl96USdenexut6t6DIWc+36/Pz8/f/z4cTWH9OrVK5X0vo//YGzJ3+lQ1LkXdbIuxV6Eok682K+tMc809tzHDyQAANQo39QAAICJQAIAiEAgAQBEIJAAACIQSAAAEf4XMR8ctVPiKbIAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clear all; close all; clc ; \n", "load usap/usap.mat\n", "size(S)\n", "plot(S) % Eh oui ! c'est un spectre complexe...\n", "Fe\n" ] }, { "cell_type": "markdown", "id": "d23c40d2-db2b-47ae-8df5-1b44586dc8bc", "metadata": { "tags": [] }, "source": [ "### Corrigé USAP\n", "\n", "Déroulez les cellules cachées ici." ] }, { "cell_type": "code", "execution_count": 7, "id": "fba8178f-269d-4f5f-8ce7-4a12a826d1b9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", "\n", " 1 3000\n", "\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clear all;\n", "load usap/usap.mat\n", "size(S)\n", "N=length(S);\n", "n=0:(N-1); %fréquences discrètes\n", "F0=Fe/N;\n", "f = n*F0;\n", "Fq = Fe/2;\n", "fshift = f- Fq;\n", "subplot(211)\n", "plot(fshift,fftshift(abs(S)/N));\n", "xlabel(\"frequences [Hz]\");\n", "title(\"module du spectre S [V]\");\n", "subplot(212)\n", "plot(fshift,fftshift(unwrap(angle(S)/pi*180)));hold on;\n", "%plot(fshift,fftshift((angle(S))/pi*180));\n", "xlabel(\"frequences [Hz]\");\n", "title(\"phase du spectre S [deg]\");\n", "\n" ] }, { "cell_type": "markdown", "id": "36fbf794-c83c-40f8-b3d4-3ac0fedc97ad", "metadata": {}, "source": [ "On voit que \n", " - le module est pair et en zoomant que \n", " - la phase est impaire\n", " \n", "Il y a symétrie de Hilbert, on ajoute que des ondes conjuguées complexes => un signal réel\n", "\n", "Vérifions en temporel" ] }, { "cell_type": "code", "execution_count": 8, "id": "a9fe5238-5595-4c21-9fc0-85f67cea5659", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans = 32.706\n", "ans = 8.3394e-31\n" ] } ], "source": [ "s = ifft(S);\n", "re = real(s);\n", "im = imag(s);\n", "re*re' % produit scalaire => norme 2 au carré\n", "im*im' % idem : on voit qu'il pèse quasi 0 \n", "%% c'est donc du réel\n", "\n", "%% Faison un fichier audio avec ausio write\n", "audiowrite('./usap/usap.wav',re,Fe);" ] }, { "cell_type": "markdown", "id": "f36ef349-5629-47e8-a37e-90c67262b5af", "metadata": {}, "source": [ "On entend une douce voix et un sifflement bien pur et bien pénible.\n", "\n", "- En zoomant on voit un pic à 440 Hz et -440 Hz : c'est un LA4 (LA de l'octave 4). \n", " Rien aux multiples 440*2 (LA5) 440*3(la quinte du LA=MI) 440*4(LA6).\n", "\n", " - Le paquet étalé autour de 300 Hz avec les harmoniques autour de 600 HZ, 900 Hz correspondent à la voix. C'est un signal pseudo-périodique.\n", "\n", "Calculons la matrice W" ] }, { "cell_type": "code", "execution_count": 9, "id": "223eedbe-07c5-439a-af13-40799923f190", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed time is 5.53393 seconds.\n", "ans =\n", "\n", " 3000 12001\n", "\n", "taille_Moctets = 274.68\n" ] } ], "source": [ "k = 0:4*N; %environ 4 fois plus long\n", "q = exp(i*2*pi/N); %phaseur de rotation \n", "\n", "% il faut fair eun produit (Nx1) pour n . (1x4N) pour k\n", "% on obtient la matrice des produit nm (Nx4N)\n", "% fréquences en rangées et temps en colonnes\n", "tic\n", "W = q.^(transpose(n)*k);\n", "toc\n", "\n", "size(W)\n", "taille_Moctets = size(W)(1)*size(W)(2)*8/1024/1024" ] }, { "cell_type": "markdown", "id": "60aa0a3e-3003-45db-a89e-d59e954d36d9", "metadata": {}, "source": [ "Sur un PC performant le calcul mets environ 10 secondes et la RAM n'explose pas avec W qui pèse quand même environ 300 Mo (un flottant double est codé sur 8 octets).\n", "\n", "Calculons la transofrmée inverse par simple produit." ] }, { "cell_type": "code", "execution_count": 10, "id": "b7d06f24-6c69-4b28-b21e-deee34c15632", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "temps_avec_W = 0.066161\n", "temps_avec_fft = 0.0039210\n" ] } ], "source": [ "tic\n", "sw = S/N*W;\n", "temps_avec_W = toc\n", "\n", "tic\n", "s=ifft(S);\n", "temps_avec_fft=toc\n", "\n", "audiowrite('usap/mon_usap.wav',real(sw),Fe);" ] }, { "cell_type": "markdown", "id": "e8dd8853-594b-48f0-b902-fa4ed24e9a76", "metadata": {}, "source": [ "Oui fft va plus vite et encore plus si N est une puissance de 2...\n", "\n", "\n", "La périodicité USAPUSAPUSAPUSAP peut être mal perçue à Perpignan." ] }, { "cell_type": "markdown", "id": "ea90211b-79d6-406a-944f-b94a978c0be0", "metadata": {}, "source": [ "## B - Filtrage fréquentiel\n", "---\n", "\n", "Filtrer c'est simplement multiplier les coefficients de $\\hat{S}$ pour amplifier ou annuler des fréquences. \n", "\n", "$$ \\hat{Y} = G.\\hat{X} $$ \n", "\n", "### Execice \n", "\n", "Essayons avec un filtre idéal $G$ d'enlever le sifflement à 440 Hz. On veut $G[n]=0$ pour les fréquences proches du LA4 et $1$ sinon.\n", "\n", "Profitez aux maximum des fonction anonymes comme :\n", "\n", "̀`passe_haut = @(f) f>420;`\n", " \n", "N'oubliez pas qu'un **filtre discret réel doit ête périodique et de symétrie Hilbertienne**\n", " " ] }, { "cell_type": "markdown", "id": "e421454b-6dfc-4655-bf73-6f7233648623", "metadata": { "tags": [] }, "source": [ "### Corrigé\n", "\n", "Il a fallu couper aussi quelques harmonique à 440.2 440.3...\n", "\n", "Le reste est caché..." ] }, { "cell_type": "code", "execution_count": 8, "id": "19057213-3c92-4001-a2e7-22feedd8725d", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clear all;\n", "load usap/usap.mat\n", "N=length(S);\n", "n=0:(N-1); \n", "F0=Fe/N;\n", "f = n*F0;\n", "Fq = Fe/2;\n", "\n", "passe_haut = @(f,fc) (f>fc).*(f<(Fe-fc)) ;\n", "passe_bas = @(f,fc) 1 - passe_haut(f,fc) ;\n", "coupe_bande = @(f,fmin,fmax) passe_bas(f,fmin) + passe_haut(f,fmax);\n", "\n", "centre = 440;\n", "ecart = 30;\n", "fmin=centre-ecart;\n", "fmax=centre+ecart;\n", "\n", "G = coupe_bande(f,fmin,fmax); % .* coupe_bande(f,fmin*2,fmax*2).*coupe_bande(f,fmin*3,fmax*3);\n", "Y = G .* S;\n", "n_a_voir = round(400/F0):round(480/F0);\n", "n_a_voir = 1:N;\n", "subplot(311)\n", "plot(f(n_a_voir),20*log10(abs(S(n_a_voir))));\n", "title(\"module du spectre S [V]\");\n", "subplot(312)\n", "plot(f,abs(G),'.-');\n", "title(\"module du spectre S [V]\");\n", "box off;\n", "subplot(313)\n", "plot(f(n_a_voir),20*log10(abs(Y(n_a_voir))));\n", "xlabel(\"frequences [Hz]\");\n", "title(\"module du spectre S [V]\");\n", "\n", "audiowrite(\"usap/usap_filtre.wav\",real(ifft(Y)),Fe)" ] }, { "cell_type": "markdown", "id": "f138c098-2c28-471c-934f-3b5d98fe3545", "metadata": {}, "source": [ "Calculons notre filtre et notre TFD inverse avec un temporel 4 fois plus long pour montrer la N-périodicité temporelle de la représentation TFD N-periodique en fréquence." ] }, { "cell_type": "code", "execution_count": 9, "id": "2bc7ef21-ebaa-4ac9-bbfb-025061ac30eb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tps_calcul_W = 5.5763\n", "tps_calcul_filtre_et_tfd_inverse = 0.055362\n" ] } ], "source": [ "k = 0:(4*N-1); %environ 4 fois plus long\n", "q = exp(i*2*pi/N); %phaseur de rotation \n", "tic\n", "W = q.^(transpose(n)*k);\n", "tps_calcul_W=toc\n", "tic\n", "s_per = (G.*S)*W/N;\n", "tps_calcul_filtre_et_tfd_inverse = toc\n", "\n", "audiowrite(\"usap/mon_usap_filtre.wav\",real(s_per),Fe)" ] }, { "cell_type": "markdown", "id": "9df218c0-c8bb-4fa1-90d4-e80185e8f81f", "metadata": {}, "source": [ "### Phase d'un filtre : le filtre retard\n", "\n", "Il n'y a pas que le module de $G$ qui compte, il y a aussi sa phase, car $G[n]$ est un nombre complexe qui amplifie et **déphase aussi** la composante $\\vec{w_n}$.\n", "\n", "> Le coefficient $G[n]$ du filtre est le phaseur à appliquer à la composante $\\hat{X}[n].\\vec{w_n}$ du signal d'entrée : \n", "> $\\hat{Y}[n].\\vec{w_n} = G[n].\\hat{X}[n].\\vec{w_n}$ \n", "\n", "### Exercice\n", "\n", "Prenez votre signal Y filtré et appliquez un filtre $R$ qui va avancer le signal d'un temps $\\tau=j.T_e$ avec j=612 environ.\n", "\n", "Pour cela prenez l'onde $w_n[k] = e^{i2\\pi.n F_0.k T_e}$ et avancez-la de $j$ échantillons en posant $w_n[k+j]$. Un phaseur complexe doit apparaître devant $w_n[k]$...\n", "\n", "Autre vision : le gain d'un retard est 1. Une onde de fréquence $n.F_0$ avancée d'un temps $\\tau$ est déphasée de $+\\frac{\\tau}{T_0/n}.2\\pi$ : vous avez le module et l'argument du phaseur...\n" ] }, { "cell_type": "markdown", "id": "a24ffedc-b2a6-4f78-8285-ed50ded8a81c", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "### Corrigé\n", "\n", "Caché là" ] }, { "cell_type": "code", "execution_count": 10, "id": "8fa91546-aa28-4d35-8fec-919392b419cf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tau = 0.17500\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Te=1/Fe;\n", "\n", "j=1400;\n", "tau=j*Te\n", "R = exp(i*2*pi*n/N*j);\n", "Z = R .* Y;\n", "n_a_voir = round(10/F0):round(2000/F0);\n", "subplot(311)\n", "plot(f(n_a_voir),20*log10(abs(Y(n_a_voir))));\n", "title(\"module du spectre S [V]\");\n", "subplot(312)\n", "plot(f,unwrap(angle(R))/pi*180);\n", "title(\"module du spectre S [V]\");\n", "box off;\n", "subplot(313)\n", "plot(f(n_a_voir),20*log10(abs(Z(n_a_voir))));\n", "xlabel(\"frequences [Hz]\");\n", "title(\"module du spectre S [V]\");\n", "\n", "audiowrite(\"usap/sapu.wav\",real(ifft(Z)),Fe)\n", "\n", "% en périodique \n", "audiowrite(\"usap/mon_sapu.wav\",real(Z*W/N),Fe)" ] }, { "cell_type": "markdown", "id": "fda3dd91-c728-4226-bddb-ae9156999cb5", "metadata": {}, "source": [ "Oui la fonction de transfert $e^{-\\tau.p}$ pour le retard, devient en discret $e^{-i2\\pi\\frac{n}{N}\\overbrace{\\frac{\\tau}{T_e}}^{j}}$, le retard de $j$ échantillons.\n", "\n", "Une avance n'est pas causale ! \n", "Mais comme **le signal d'une FFT est toujours N périodique** \n", "\n", "> l'avance de usap|usap|usap de 1400 et ben sapu|sapu|sapu \n", "> c'est un retard de N-1400 qui donne la même chose : sapu|sapu\n", "\n", "On aurait eu le meme effet dans les pyrénnées avec aspet|aspet|aspet..." ] }, { "cell_type": "markdown", "id": "e19b661d-2940-4f11-94dd-8e2570f0054c", "metadata": { "tags": [] }, "source": [ "## C - Projection : produit scalaire\n", "---\n", "\n", "Nous savons faire une TFD inverse, mais pas encore la TFD.\n", "Le problème consiste à savoir quelle est l'amplitude $\\hat{S}[n]$ de $\\vec{w_n}$ dans le signal $\\vec{s}$.\n", "\n", "Pour cela on cherche un produit scalaire $<\\vec{u}, \\vec{v}>$ qui ait les bonnes propriétées. De plus si, avec ce produit scalaire, la base $W=\\left(\\vec{w_n}\\right)_{n=0..N-1}$ est orthonormée alors on peut avoir directement les coordonnées avec le théorèle de pythagore :\n", "$\\hat{S}=\\left[\\begin{array}{l} <\\vec{s},\\vec{w_0}>\\\\\\dots\\\\<\\vec{s},\\vec{w_n}>\\\\\\dots\\\\<\\vec{s},\\vec{w_{N-1}}>\\end{array}\\right]_W$ \n", "\n", "La formule de la TFD serait alors $\\hat{S}[n]=<\\vec{s},\\vec{w_n}> ,\\quad \\forall n \\in [\\![0 ; N[\\![$" ] }, { "cell_type": "markdown", "id": "d4c1b08d-1920-41f8-b20e-b38540a2d2c7", "metadata": {}, "source": [ "Reprenons le cas où N=4, et vérifions que la base $(w_n)$ est orthogonale :\n", " - $<\\vec{w_n},\\vec{w_n}>=1$\n", " - $<\\vec{w_i},\\vec{w_j}>=0$ pour $i\\neq j$\n", "\n", "Utilisons le produit scalaire basique définit à partir du produit de vecteur de coordonnées :\n", "$<\\vec{u}, \\vec{v}> = u . {}^T\\!v$ pour des vecteurs en rangées (1xN)\n", "\n", "On peut calculer tout les produits scalaires en faisant le produit $W.{}^T\\!W$\n" ] }, { "cell_type": "code", "execution_count": 14, "id": "510be7cd-bdd5-4b66-8cfe-bf809712cbf6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "norme2_carre_w_0 = 4\n", "norme2_carre_w_1 = 0\n", "tout_les_ps =\n", "\n", " 4 -0 0 0\n", " -0 0 0 4\n", " 0 0 4 -0\n", " 0 4 -0 0\n", "\n", "norme_carre_de_iiii = -4\n" ] } ], "source": [ "clear all; format short;\n", "N=4;\n", "k = 0:(N-1); % inutile d'aller plus loin ! \n", " %c'est N périodique en temps...\n", "n = transpose(k); % inutile d'aller plus loin ! \n", " %c'est N périodique en fréquence... \n", "q = exp(i*2*pi/N); % q=i ici\n", "W = q .^ (n*k); \n", "w_0 = W(1,:); % Première rangée le signal constant w0\n", "w_1 = W(2,:); \n", "\n", "% fonction qui arrondi au centième pour y voir clair\n", "centiemes = @(x) round(x*100)/100 ; \n", "\n", "norme2_carre_w_0 = centiemes(w_0*transpose(w_0))\n", "norme2_carre_w_1 = centiemes(w_1*transpose(w_1))\n", "\n", "tout_les_ps = centiemes(W*transpose(W))\n", "\n", "norme_carre_de_iiii=(w_0*i)*transpose(w_0*i)" ] }, { "cell_type": "markdown", "id": "9754d5d6-34aa-4855-bf9f-059df424b2dc", "metadata": {}, "source": [ "On voit que les signaux réels $w_0$ et $w_2$ sont orthogonaux :\n", "> pour les signaux réels pas de problème\n", "\n", "En revanche les signaux complexes $\\vec{w_1}$ et $\\vec{w_3}$ sont hortogonaux à eux-mêmes sans être nul... \n", "\n", "> Le produit scalaire usuel n'est pas définit pour signaux complexes\n", "\n", "On a même la norme (mesure de longueur **toujours positive**) de $i.\\vec{w_0}=(i, i ,i ,i)$ (le signal constant imaginaire) qui vaut -4 !\n", "\n", "Voilà pourquoi le produit scalaire est modifié en continu en $<\\vec{u},\\vec{v}>=\\int u(t).\\overline{v(t)}.dt$ et pour nous en discret devient :\n", "\n", "$$ <\\vec{u},\\vec{v}> = \\sum\\limits_{k=0}^{k=N-1} u[k].\\overline{v[k]} = u .{}^T\\!\\overline{v} = u . {}^H\\!v$$\n", "\n", "Ce produit scalaire avec le conjugué est appelé produit Hilbertien et noté ${}^H\\!u$.\n", "On l'obtient avec matlab/octave avec `u'`.\n", "\n", "Vérifions :\n" ] }, { "cell_type": "code", "execution_count": 15, "id": "adecd606-301d-4b85-94e1-8b5927ef9756", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "produits_hilbertiens =\n", "\n", " 4 -0 0 0\n", " -0 4 -0 -0\n", " 0 -0 4 -0\n", " 0 -0 -0 4\n", "\n" ] } ], "source": [ "produits_hilbertiens = centiemes(W*W')" ] }, { "cell_type": "markdown", "id": "740f3638-be36-44b6-9f3c-4be76504f8a4", "metadata": {}, "source": [ "### Exercice de décomposition\n", "\n", "Décomposons une onde sinusoïdale $A_n.\\cos(t+\\varphi)$ en phaseurs complexes sous forme $c(1).e^{i.t}+c(-1).e^{-i.t}$.\n", "\n", "Au lieu d'utiliser les phaseurs (revoir [FREQ1_phaseurs](FREQ1_phaseurs.ipynb)) on va bourriner en cherchant les amplitudes $c(1), c(-1)$ par projection. \n", "\n", "Complétez le script avec la formule analytique et le calcul numérique par projection." ] }, { "cell_type": "code", "execution_count": 16, "id": "89921bd8-229c-48b1-89c5-48d1c69ad96c", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Te = 0.050000\n", "norme_carre = 21.000\n", "orthogonal = 9.3773 + 14.6043i\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clear all;\n", "T0=1;\n", "Te=T0/20\n", "t=0:T0/20:T0;\n", "A=3;\n", "phi=pi/6;\n", "s= A*cos(t+phi);\n", "plot(t,s,'r-+'); hold on;\n", "\n", "%% Zut ! j'arrive pas à voir une période entière...\n", "%% ..pour avoir orthogonalité\n", "w1 = exp(i*t);\n", "wm1 = exp(-i*t);\n", "norme_carre = w1*w1'\n", "orthogonal = w1*wm1'\n", "\n", "%% analytique phaseurs ...\n", "c1=A*cos(phi);\n", "cm1=A*sin(phi);\n", "s_phaseur = c1*w1 + cm1*wm1;\n", "plot(t,s_phaseur,'o');\n", "%% Zut ça colle pas.\n" ] }, { "cell_type": "markdown", "id": "e6f614e3-90d9-471d-8481-aaebe627bec4", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "### Corrigé\n", "Caché ici" ] }, { "cell_type": "code", "execution_count": 17, "id": "9d686ca3-1098-426e-a767-28bad396b4e3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Te = 0.31416\n", "norme_carre = 20\n", "orthogonal = -8.8818e-16 - 1.1102e-16i\n", "c1 = 1.29904 + 0.75000i\n", "cm1 = 1.29904 - 0.75000i\n" ] }, { "data": { "image/png": "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hw/H4/Hz58+7PND729/+9s9//vPevXt1L6QGk8nkd7/73X/+858ffvjh3//+dwdfhPwVyLLsL3/5y69+9atf//rXda+oHpPJ5De/+c0f/vCHuhdSg6+//no4HHb2RyCEsL+//69//euHH37473//e+fOnWLfnJXkH//4x3fffZdl2bt3737/+9+X9bTN8tvf/vb27dt//etf615IPZ49ezb9/762tlbvYmrx7NmzZ8+eZd3+Kciy7LvvvltbW/v555/rXsiidfzvPcuy169f50Hw888///GPfyz67aXdfmI0GuVhuLS09ObNm7KetllevnzZ6/XqXkVtHjx4kD/o7KzGViYhhOfPn9+6dWs8Ht+8ebPutSxa/v96f3//xo0b29vbHXwF8k+s5hvLPX36tOi3l3kOafoTePfu3RKflqbIR7XD4fDRo0dd/lRAr9fr9/uFhxWtMBqNRqPRNJi7ZjKZfPXVVxsbG7/85S+fPHlS93Lq8f3334cQ3r179/Dhw6LfW+YN+qZnsTrbkOj1eu/fv3/69Gln+0EIYW9vb3t7+/79+9OdTbrj+fPnX331Va/XG4/H+/v729vbnfqXsLGxke8bsLq62tn7ITx48CD/l7+5uVn0e0trSHfu3Hn37l0IYTwer6yslPW0NMjh4WHH02h/fz8/DHVwVpN7/PjxvXv37t27d/PmzY2NjRs3btS9ooV6/vz5cDisexV1unXr1vTxHKP70hrSxsbG8+fPe73emzdvOlvYOy6/4Hva01+8eFHnaupgK5PpoPLGjRurq6v1Lmbx7t69++TJkwcPHrx9+7aD/TiEsLW1tbm52ev15vsRKPmDscPhsMvXfIOtTHAYnPsVsFMDAEkoeacGAJiPQAIgCQIJgCQIJACSIJAASML/A6zF5uMIe7VIAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clear all;\n", "%% ERREUR 1 : la période est 2*pi !\n", "T0=2*pi;\n", "Te=T0/20\n", "%% ERREUR 2 : un point de trop !\n", "t=0:T0/20:T0-Te; % potaux et intervalles...\n", "% ou bien on fait\n", "N=20;\n", "k=0:(N-1);\n", "t=k*Te;\n", "\n", "A=3;\n", "phi=pi/6;\n", "s= A*cos(t+phi);\n", "plot(t,s,'r+-'); hold on;\n", "\n", "w1 = exp(i*t);\n", "wm1 = exp(-i*t);\n", "norme_carre = w1*w1'\n", "orthogonal = w1*wm1'\n", "\n", "%% analytique phaseurs ...\n", "phaseur = A*exp(i*phi);\n", "c1=phaseur/2\n", "cm1=conj(c1)\n", "s_phaseur = c1*w1 + cm1*wm1;\n", "plot(t,s_phaseur,'o');\n", "\n" ] }, { "cell_type": "markdown", "id": "1e2654f7-149c-420e-bc30-32a083686e7e", "metadata": { "tags": [] }, "source": [ "Attention $\\vec{w_1}$ et $\\vec{w_{-1}}$ sont orthogonaux, mais pas normés !\n", "\n", "Il faut normer le vecteur avec $\\frac{\\vec{w_1}}{\\|\\vec{w_1}\\|}$ puis projeter sur le signal $\\vec{s}$ avec :\n", "\n", "$$ \\alpha = \\left<\\vec{s}, \\frac{\\vec{w_1}}{\\|\\vec{w_1}\\|}\\right>$$\n", "\n", "La composante de $\\vec{s}$ colinéaire à $\\vec{w_1}$ est alors :\n", "\n", "$$ \\alpha .\\frac{\\vec{w_1}}{\\|\\vec{w_1}\\|} = \\left<\\vec{s}, \\frac{\\vec{w_1}}{\\|\\vec{w_1}\\|}\\right> . \\frac{\\vec{w_1}}{\\|\\vec{w_1}\\|} = \\left<\\vec{s}, \\frac{\\vec{w_1}}{\\|\\vec{w_1}\\|^2}\\right>.\\vec{w_1} = \\underbrace{\\frac{<\\vec{s}, \\vec{w_1}>}{<\\vec{w_1}, \\vec{w_1}>}}_{c(1)}.\\vec{w1}$$\n", "\n", "Vérifions " ] }, { "cell_type": "code", "execution_count": 18, "id": "7974ce71-7d64-4b1b-8752-4d00c9aad626", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c1_scal = 1.29904 + 0.75000i\n", "c1 = 1.29904 + 0.75000i\n" ] } ], "source": [ "c1_scal = s*w1'/(w1*w1')\n", "c1" ] }, { "cell_type": "markdown", "id": "aab77767-7877-4d18-9b78-082205ff26d5", "metadata": {}, "source": [ "On retrouve ainsi la formule de la TFD :\n", "\n", "$\\hat{S}[n] = <\\vec{s},\\vec{w_n}> = \\sum\\limits_{n=0}^{N-1}s[k]. \\overline{e^{i.2\\pi.\\frac{n.k}{N}}}$\n", "\n", "Comme la norme carrée $\\|\\vec{w_n}\\|^2=N$ il faudrait diviser les ondes par $\\sqrt{N}$ lors des calculs de TFD et de TFD inverse. \n", "\n", "**La TFD n'est pas normée par frugalité numérique : on divise par N uniquement pour la TFD inverse** " ] }, { "cell_type": "markdown", "id": "e4d198a2-4fb0-4e6a-bdab-8caa96e2e098", "metadata": { "tags": [] }, "source": [ "## D - Décomposition dans la base de fréquencielle : TFD\n", "---" ] }, { "cell_type": "markdown", "id": "19b6b7ce-4ef0-4533-8fe5-f5a993e21f34", "metadata": {}, "source": [ "Il faudrait normer les ondes $\\vec{w_n}$ en $\\frac{\\vec{w_n}}{\\sqrt{N}}$ ce qui couterait trop cher en temps de calcul dans la pratique, pour pas grand-chose...\n", "\n", "> La TFD et son algo. rapide FFT ne sont **pas des isomorphismes pour raison de frugalité des calculs** : la TFD amplifie la norme de $\\sqrt{N}$ car $\\|\\hat{S}\\|^2=N.\\|\\hat{s}\\|^2 $\n", "\n", "$W.{}^H\\!W = N.\\mathrm{Id} \\implies \\underbrace{\\frac{W}{N}}_{TFD^{-1}}. \\underbrace{{}^H\\!W}_{TFD} = \\mathrm{Id}\\quad $non isomorphique mais frugal \n", "\n", "$W.{}^H\\!W = N .\\mathrm{Id} \\implies \\underbrace{\\frac{W}{\\sqrt{N}}}_{TFD^{-1}}. \\underbrace{\\frac{{}^H\\!W}{\\sqrt{N}}}_{TFD} = \\mathrm{Id}\\quad$ isomorphique mais non frugal \n", "\n", "\n", "On peut calculer une TFD frugale par simple produit hilbertien avec la matrice $W$ :\n", "> $s.{}^H\\!W = \\hat{S}$, mais dans ce cas $\\|\\hat{S}\\| = \\sqrt{N}.\\|s\\|$\n", "\n", "Vérifions que l'on est bien équivalent à `fft` :" ] }, { "cell_type": "code", "execution_count": 19, "id": "26700901-d6c0-4064-bcd5-7790b112d2bb", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "erreur_s = 3.3116e-31\n", "norme_s_carre = 7.5000\n", "erreur_S = 8.6898e-31\n", "norme_S_carre = 30\n", "amplification_au_carre = 4\n" ] } ], "source": [ "clear all; format short;\n", "N=4;\n", "k = 0:(N-1); \n", "n = transpose(k);\n", "q = exp(i*2*pi/N);\n", "W = q .^ (n*k); \n", "\n", "S = [1, 2, 3, 4];\n", "TFDI = W/N;\n", "TFD = W';\n", "\n", "s_mat = S * TFDI;\n", "s_fft = ifft(S);\n", "\n", "erreur_s = (s_mat-s_fft)*(s_mat-s_fft)'\n", "norme_s_carre = s_mat*s_mat'\n", "\n", "S_fft = fft(s_fft);\n", "S_mat = s_mat*TFD;\n", "\n", "erreur_S = (S_mat-S_fft)*(S_mat-S_fft)'\n", "norme_S_carre = S_mat*S_mat'\n", "\n", "amplification_au_carre = norme_S_carre/norme_s_carre" ] }, { "cell_type": "markdown", "id": "5029ffbd-103f-4406-8005-70d767436aae", "metadata": {}, "source": [ "## E- dualité\n", "---\n", "\n", "Considérons maintenant que $v=[1, 2, 3, 4]$ n'est plus un spectre $\\vec{\\hat{S}}$ mais un signal temporel $\\vec{s}$.\n", "\n", "Prenons la TFD **isomorphique non frugale** et calculons la TFD de la TFD pour voir !\n", "\n", "$TFD\\left\\{TFD\\left\\{\\vec{s}\\right\\}\\right\\} = \\vec{y} = ?$\n", "\n", "On va noter $\\mathcal{F}$ l'opérateur $TFD$ et noter $\\mathcal{F}^2$ la composition $\\mathcal{F}\\circ\\mathcal{F}$ \n", "\n", "$\\mathcal{F}^2\\left\\{\\vec{x}\\right\\}=\\vec{y}=?$" ] }, { "cell_type": "code", "execution_count": 20, "id": "8500590c-4426-417d-a00f-ae80e1ef7534", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y_reel =\n", "\n", " 1 4 3 2\n", "\n", "y_imag =\n", "\n", " 0 -0 -0 0\n", "\n" ] } ], "source": [ "clear all; format short;\n", "N=4;\n", "k = 0:(N-1); \n", "n = transpose(k);\n", "q = exp(i*2*pi/N);\n", "W = q .^ (n*k); \n", "F = W/sqrt(N);\n", "F_inv = W'/sqrt(N);\n", "\n", "s = [1, 2, 3, 4];\n", "S = s*F ;\n", "y = S*F ;\n", "\n", "centiemes = @(x) round(100*x)/100;\n", "y_reel = centiemes(real(y))\n", "y_imag = centiemes(imag(y))" ] }, { "cell_type": "markdown", "id": "f00be5d0-22c7-4581-ba55-378b817434e0", "metadata": {}, "source": [ "C'est un **signal réel** ! Mais tout embrouillé...\n", "\n", "Regardons ce qu'est l'opérateur $\\mathcal{F}^2$ matriciellement" ] }, { "cell_type": "code", "execution_count": 21, "id": "54ae74a6-3ba8-4c40-aa3f-e3a3b757a612", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "F_2 =\n", "\n", " 1 -0 0 0\n", " -0 0 0 1\n", " 0 0 1 -0\n", " 0 1 -0 0\n", "\n", "s =\n", "\n", " 1 2 3 4\n", "\n", "y =\n", "\n", " 1 4 3 2\n", "\n" ] } ], "source": [ "F_2 = centiemes(F*F)\n", "s\n", "y=s*F_2" ] }, { "cell_type": "markdown", "id": "ab0562b3-6591-4338-b467-eb5a0f67c647", "metadata": { "tags": [] }, "source": [ "### Exercice \n", "\n", "1) Sur papier, représentez-vous les signaux $\\vec{s}$ et $\\vec{y}$ sur plusieurs périodes en marquant bien où est l'instant $0$. \n", " Vous aurez peut-être une idée de ce qu'est cet opérateur $\\mathcal{F}^2$...\n", "2) Confirmez l'intuition en reprenant le signal `usap/mon_usap_filtre.wav` ou un autre. Calculez $\\mathcal{F}^2$ de ce signal en utilisant `fft` (attention aux normes pour ne pas saturer le signal). Vérifiez que le signal est bien réel et écoutez-le : \n", " si vous étiez aux antipodes de comprendre maintenant le rôle de $\\mathcal{F}^2$ dot être clair !\n", "3) Essayez de deviner ce que fait alors $\\mathcal{F}^4$ et vérifiez-le en écoutant le signal...\n", "\n" ] }, { "cell_type": "markdown", "id": "2522db82-ada8-4714-b21b-88b0b2072429", "metadata": { "jp-MarkdownHeadingCollapsed": true, "tags": [] }, "source": [ "### Corrigé\n", "\n", "Caché ici." ] }, { "cell_type": "code", "execution_count": 11, "id": "f68b78a8-d011-4c1a-b057-614a4d4e076a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "N = 12000\n", "Norme_infinie_y = 5993.8\n", "houlala c'est trop grand, normalisons\n", "Norme_infinie_y_normalisee = 0.49948\n", "C'est dans [-1, +1] ça ne sera pas sature\n", "Norme_infinie_imag_y = 8.7847e-17\n", "C'est bien réel\n" ] } ], "source": [ "clear all;\n", "[s, Fe] = audioread(\"usap/mon_usap_filtre.wav\") ;\n", "N = length(s)\n", "y = fft(fft(s));\n", "Norme_infinie_y = max(abs(y)) \n", "disp(\"houlala c'est trop grand, normalisons\");\n", "y = y/N; % sqrt(N).sqrt(N) car deux fft\n", "Norme_infinie_y_normalisee = max(abs(y)) \n", "disp(\"C'est dans [-1, +1] ça ne sera pas sature\")\n", "Norme_infinie_imag_y = max(abs(imag(y)))\n", "disp(\"C'est bien réel\")\n", "\n", "audiowrite(\"usap/pasu.wav\",real(y),Fe);\n", "% Le nom du fichier est un indice !\n" ] }, { "cell_type": "markdown", "id": "dd0ccb5c-c892-4300-8df7-e1d830703ab1", "metadata": {}, "source": [ "Oui le son est joué à l'envers !\n", "\n", "L'opérateur $\\mathcal{F}^2$ est l'opérateur *antipodal* (on joue à l'envers dans le temps, ou on retourne par symétrie de l'axe des abscisses) mais pour des signaux N-périodiques, c'est-à-dire pour $k$ pris modulo N.\n", "\n", "Cela veut dire que :\n", "$$ s[\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} \\hat{S}[\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} s[-\\bullet]$$\n", "\n", "On note $s[-\\bullet]$ la fonction antipodale $s[-\\bullet] : k \\mapsto s[-k]$ (on ne mets pas la flêche en haut pour ne pas alourdir l'écriture)\n", "\n", "Comme $\\hat{S}$ est une fonction discrète de la variable entière $\\mathbb{Z}\\to\\mathbb{C}$ au même titre que $s$ on peut appliquer encore la transormée deux fois à $\\vec{hat{S}}$ pour la retourner dans le temps :\n", "\n", "$$ s[\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} \\hat{S}[\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} s[-\\bullet]\\overset{\\mathcal{F}}{\\longrightarrow} \\hat{S}[-\\bullet]$$\n", "\n", "On peut aussi retourner $s[-\\bullet]$ en appliquant deux fois la transformée et boucler la boucle :\n", "\n", "$$ \\dots \\overset{\\mathcal{F}}{\\longrightarrow}s[\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} \\hat{S}[\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} s[-\\bullet]\\overset{\\mathcal{F}}{\\longrightarrow} \\hat{S}[-\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} s[\\bullet] \\overset{\\mathcal{F}}{\\longrightarrow} \\dots $$\n", "\n", "\n", "Vérifions :" ] }, { "cell_type": "code", "execution_count": 23, "id": "c643febe-9ee8-4c27-8a46-64c3be64792b", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ans =\n", "\n", " 12000 1\n", "\n", "ans =\n", "\n", " 12000 1\n", "\n", "vecteur verticaux !\n", "Norme_2_carre = 3.6024e-29\n", "ce sont les mêmes\n" ] } ], "source": [ "s_orig = fft(fft(y))/N;\n", "size(y)\n", "size(s_orig)\n", "disp(\"vecteur verticaux !\")\n", "erreur = s_orig -s ;\n", "Norme_2_carre = erreur'*erreur\n", "disp(\"ce sont les mêmes\");\n" ] }, { "cell_type": "markdown", "id": "448a585a-a5a8-4ab1-afa7-06bc1ea6ed77", "metadata": {}, "source": [ "## Défi\n", "---\n", "\n", "Vous êtes prête pour tenter le [**défi sur la parité**](../defis/paparite/paparite.ipynb)" ] } ], "metadata": { "kernelspec": { "display_name": "Octave", "language": "octave", "name": "octave" }, "language_info": { "file_extension": ".m", "help_links": [ { "text": "GNU Octave", "url": "https://www.gnu.org/software/octave/support.html" }, { "text": "Octave Kernel", "url": "https://github.com/Calysto/octave_kernel" }, { "text": "MetaKernel Magics", "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" } ], "mimetype": "text/x-octave", "name": "octave", "version": "4.2.2" } }, "nbformat": 4, "nbformat_minor": 5 }