Salut, je me demande comment je peut calculer le logarithme népérien d'une matrice sous matlab, j'ai essayé l'instruction "logm" mais j'ai eu bcp des erreurs...
merci d'avance
Salut, je me demande comment je peut calculer le logarithme népérien d'une matrice sous matlab, j'ai essayé l'instruction "logm" mais j'ai eu bcp des erreurs...
merci d'avance
Bonjour,
Peux-tu nous montrer ton code ainsi que le message d'erreur complet obtenu?
voila le code où la matrice c'est une image dicom:
les erreurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 I1=dicomread('chemin de l'image 1'); I2=dicomread('chemin de l'image 2'); A=double(I1); A2=double(I2); ln=logm(A1./A2)./100;
alors où se trouve le problème je pense que l’erreur est dans la division par zéro car j'ai essayé ln(A/B)=ln(A)-ln(B) ça marche mais je veux appliquer la division.??? Error using==> schur Input to SCHUR not contain NaN or Inf Error in ==> funm at 157 [U,T]=Schur (A,'complex') Error in ==> logm at 27 L=funm(A,@log); Error in ==> mon code at 5 ln=logm(A1./A2)./100;
comment je peut régler ce problème ?
Je vois pas bien ce que tu veux que l'on te dise avec si peu d'information : ce n'est pas un problème de programmation (du moins pas encore) mais mais de méthodologie : comment se fait-il que tu te retrouves avec des divisions par 0?
la division par zéro
bon j'ai dit que les matrices ce sont des images dicom, il existe des valeurs d’intensité de pixel égale à zéro, quand j'applique logm (A1./A2) il y aura des division par zéro.
Sur un plan purement mathématique, le log de 0 comme celui de l'infini n'existe pas. Il faut adopter une convention, dépendante du domaine d'application, pour lever l’ambiguïté. Par exemple:
- remplacer les zéros par une valeur seuil (plus petite intensité détectable par exemple).
- les enlever des matrices (mais comme on parle de log matriciel, c'est pas gagné)
...
j'ai résolu le problème des divisions par zéro par l'ajout d'une constante epsilon dont la valeur est très inférieure aux valeurs attendues et n'est pas significative dans le résultat.
merci pour votre aide.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager