Question

J'ai 3 eqns et 2 inconnues Hb et HBO2, ils ressemblent à ceci:

Bxy = AB * HB + AB * HBO2

Rxy = AR + AR * HB * HbO2

Gxy = AG * HB + AG * HBO2

Maintenant, j'ai essayé d'utiliser une méthode de matrice afin de résoudre les inconnues pour les équations eux, ce qui est une douleur dans la cause de cul quand je le convertir en forme matricielle je reçois une matrice irrégulière car il est de 2 inconnues et 3 équations.

Est-ce que quelqu'un ici sait comment résoudre n nombre d'équations à n inconnues-1.

EDIT

Merci pour les réponses à ce jour, ils ont été super.

Pour aider à rendre cela plus clair, ce que je suis en train de faire est de travailler la concentration du sang oxygénée et désoxygénée à un pixel donné dans une image. de sorte que les variables ci-dessus correspondent à ce qui suit.

Rxy Gxy et Bxy, rouge vert ou bleu absorbé à x position, y. (Valeur entre 0 - 255)

AR, AG, AB est le coefficient d'absorption de la lumière rouge pour geen et des longueurs d'onde bleues de sang. (Cependant, il y a une possibilité que je pourrais avoir à définir différents coefficients d'absorption pour le sang et désoxygéné oxygéné (car ils absorbent différentes quantités de lumière)).

Hb et HbO2 est la concentration du sang oxygénée et désoxygénée. (Ceux-ci ne sont pas connus comme je suis en train de cartographier les valeurs RVB à ce sujet)

Cependant, j'ai aussi remarqué que les coefficients pour le sang oxygéné et désoxygéné sont différents si cela signifie que l'équation pourrait être le suivant.

Bxy = (ABHB * HB) + (ABhbo2 * HBO2)

Rxy = (ARhb * HB) + (ARhbo2 * HBO2)

Gxy = (AGhb * HB) + (AGhbo2 * HBO2)

La seule différence dans ce qui précède est que les coefficients sont différents pour le sang oxygéné et désoxygéné.

Cela fait partie de mon projet final Année à uni pour la science informatique, en essayant de faire une imagerie fonctionnelle.

@ Chris-il de même s'il y a des coefficients différents, désolé pour le manque de compréhension, les mathématiques n'est pas mon point fort. Juste essayer de programmer cet algorithme.

Était-ce utile?

La solution

Qu'est-ce que vous voulez sans doute est ce qu'on appelle la solution carrés moins (voir la section sur le général problème) . Pour résumer, vous n'êtes pas garanti une solution exacte en fonction de votre A et b lorsque vous essayez de résoudre A*x=b ici.

Cependant, en calculant xLS = inv(A'*A)*A'*b vous obtenez quelque chose qui est le plus près possible d'une solution (dans le sens des moindres carrés). Notez que les moyens de A' la transposition de A. Note également, si A'*A n'est pas inversible alors votre système d'équations est déficient de rang (qui signifie que vous avez effectivement moins d'équations que vous pensez.)

Si vous avez:

 Bxy = (ABhb * HB) + (ABhbo2 * Hbo2)
 Rxy = (ARhb * HB) + (ARhbo2 * Hbo2)
 Gxy = (AGhb * HB) + (AGhbo2 * Hbo2)

Alors:

 A = [ ABhb  ABhbo2 
       ARhb  ARhbo2 
       AGhb  AGhbo2 ];

 x = [HB
      Hbo2];


 b = [Bxy
      Rxy
      Gxy];

Autres conseils

Si vous avez n équations et n-1 inconnues, cela signifie que vous pouvez éliminer l'une des équations, il est hors de propos et dépendant des deux autres. Savoir laquelle est la plus facile à éliminer, remplacer, et vous vous retrouvez avec une matrice (n-1) x (n-1)

en supposant qu'il existe une solution pour les trois équations qui est, il se trouve que par la résolution de deux d'entre eux pour obtenir les deux inconnues.

Dans ce cas, il semble tous vos équations sont plus ou moins égales, à part les coefficients, donc je ne pense pas qu'il importe lequel des trois vous avez choisi d'exclure. Vous pouvez simplement laisser tomber l'équation Gxy et finissent avec la paire 2x2 de:

Bxy = AB * HB + AB * HBO2

Rxy = AR + AR * HB * HbO2

résultant dans la matrice

[AB AB]

[AR AR]

Le HB+Hbo2 de epxression est le même dans toutes les 3 équations, et il peut être remplacé par z=HB+Hbo2 faisant les trois équations

B = AB*z
R = AR*z
G = AG*z

Pour résoudre pour z faire une des moindres carrés pour trouver

z = HB + Hbo2 = (AB*B+AG*G+AR*R)/(AB*AB+AG*AG+AR*AR)

et l'erreur pour chaque composant tel

dB = B - AB*z
dR = R - AR*z
dG = G - AG*z

C'est tout ce que vous pouvez faire. D'une certaine façon, vous devez décider comment diviser z en HB et Hbo2. Aucune information à ce sujet est donnée dans l'énoncé du problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top