Bonjour à tous !
MatLab m'a sorti aujourd'hui un truc assez étrange devant lequel je suis resté fort perplexe. Je fais appel à vous en espérant que quelqu'un sache m'expliquer ce qu'il se passe dans les entrailles des algorithmes de calcul de MatLab...
Je ne vais pas expliquer ici tout mon code, juste que ce qui est important pour la suite:
J'ai une matrice R de taille [2400,1], un vecteur colonne donc, qui contient un signal. Ce signal n'est pas très intéressant en soi, il a des valeurs un peu aléatoire majoritairement comprises entre 0 et 2, avec quelques pics aïgus entre 5 et 12 (12 étant mon pic principal). Je simplifie bêtement mais vous comprendrez plus bas pourquoi je vous dis ça...
J'ai voulu récupérer un nouveau vecteur contenant les mêmes valeurs que R, mais inversées. J'aurais donc dû écrire ceci:
Mais, petit étourdi que je suis, j'ai oublié le point devant le slash ! J'ai donc inversé la matrice plutôt que ses valeurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 R2 = 1./R ; % ce que j'aurais dû taper R2 = 1/R ; % ce que j'ai tapé
Plus loin dans mon code, j'ai ensuite tranquillement lancé mon petit plot(t,R2). Je me suis rendu compte de mon ânerie très rapidement, mais je suis resté perplexe / ébahi devant le résultat.
Il m'a renvoyé un signal nul sur toute la base de temps, sauf en 1 point où il valait 0,083, c'est à dire à peu près 1/12... Vous l'aurez deviné, ce point non nul correspond à l'échantillon du pic principal de mon signal de base, qui valait à peu près 12...
Donc OK, MatLab m'a bien crée une matrice telle que le produit de R et R2 est égal à 1... Mais comment m'a-t-il sorti cette matrice ? En effet je lui ai demandé un truc impossible, inverser une matrice absolument pas carrée, et il me sort 1 seule valeur. Mais pas sur n'importe quel échantillon, sur celui qui correspondait au max de mon signal de base.
J'espère que j'ai réussi à me faire comprendre...
Maintenant pourquoi je pose cette question ? Parce que le résultat qu'il m'a filé est juste génial pour mon application (que je ne développerais pas ici, j'en aurais pour une plombe...) ! Donc j'ai envie de l'utiliser, mais j'aimerais bien savoir ce qu'il s'est exactement passé pour arriver à ça, sinon je ne suis pas franchement crédible .
J'ai essayé de chercher moi même la réponse comme un grand, mais impossible de savoir exactement ce que fais MatLab quand on lui demande de calculer l'inverse d'une matrice non carrée...
Partager