Pregunta

Tengo 3 eqns y 2 incógnitas HB y HBO2, se ven así:

Bxy = AB * HB + AB * HBO2

Rxy = ar * hb + ar * hbo2

Gxy = AG * HB + AG * HBO2

Ahora he estado tratando de usar un método de matriz para resolver las incógnitas para ellas ecuaciones, lo cual es un dolor en el culo porque cuando lo convierto en forma de matriz obtengo una matriz irregular porque son 2 incógnitas y 3 ecuaciones.

¿Alguien aquí sabe cómo resolver el número de ecuaciones con incógnitas N-1?

EDITAR

Gracias por las respuestas hasta ahora, han sido geniales.

Para ayudar a aclarar esto, lo que estoy tratando de hacer es resolver la concentración de sangre oxigenada y desoxigenada en un píxel dado en una imagen. Entonces las variables anteriores corresponden a las siguientes.

Rxy gxy y bxy, verde rojo o azul absorbido en la posición x, y. (valor entre 0 - 255)

AR, AG, AB es el coeficiente de absorción de la luz para las longitudes de onda roja de Geen y azul para la sangre. (Sin embargo, existe la posibilidad de que tenga que definir diferentes coeficientes de absorción para la sangre oxigenada y desoxigenada (ya que absorben diferentes cantidades de luz)).

Hb y HBO2 es la concentración de sangre oxigenada y desoxigenada. (Estos son desconocidos ya que estoy tratando de asignar los valores de RGB a esto)

Sin embargo, también he notado que los coeficientes para la sangre oxigenada y desoxigenada son diferentes, por lo que esto significa que la ecuación podría ser las siguientes.

Bxy = (abhb * hb) + (abhbo2 * hbo2)

Rxy = (arhb * hb) + (arhbo2 * hbo2)

Gxy = (aghb * hb) + (aghbo2 * hbo2)

La única diferencia en lo anterior es que los coeficientes son diferentes para la sangre oxigenada y desoxigenada.

Todo esto es parte de mi proyecto de último año en UNI para informática, tratando de hacer algunas imágenes funcionales.

@Chris hace la misma aplicación si hay diferentes coeficientes, perdón por la falta de comprensión, las matemáticas no son mi punto más fuerte. Solo trato de programar este algoritmo.

¿Fue útil?

Solución

Lo que probablemente quieras es lo que se llama el Solución de mínimos cuadrados (consulte la sección sobre el problema general). Para resumir, no se le garantiza una solución exacta dependiendo de su A y b Cuando intentas resolver A*x=b aquí.

Sin embargo, mediante la computación xLS = inv(A'*A)*A'*b Obtendrá algo lo más cercano posible para una solución (en el sentido de mínimos cuadrados). Tenga en cuenta que A' significa la transposición de A. También tenga en cuenta que si A'*A no es invertible, entonces su sistema de ecuaciones es deficiente en rango (eso significa que efectivamente tiene menos ecuaciones de lo que piensa).

Si usted tiene:

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

Después:

 A = [ ABhb  ABhbo2 
       ARhb  ARhbo2 
       AGhb  AGhbo2 ];

 x = [HB
      Hbo2];


 b = [Bxy
      Rxy
      Gxy];

Otros consejos

Si tiene n ecuaciones y incógnitas N-1, eso significa que puede eliminar una de las ecuaciones, es irrelevante y depende de las otras dos. Averigüe cuál es más fácil de eliminar, sustituye y luego te queda una matriz (N-1) X (N-1)

Suponiendo que hay una solución para las tres ecuaciones, es decir, se puede encontrar solo resolviendo dos de ellas para obtener las dos incógnitas.

En este caso, parece que todas sus ecuaciones son más o menos iguales, aparte de los coeficientes, por lo que no creo que importe cuál de los tres que elija excluir. Simplemente podría dejar caer la ecuación GXY y terminar con el par 2x2 de:

Bxy = AB * HB + AB * HBO2

Rxy = ar * hb + ar * hbo2

resultando en la matriz

AB AB

Ar ar

La epxresión HB+Hbo2 es lo mismo en las 3 ecuaciones, y puede ser reemplazado por z=HB+Hbo2 Haciendo las tres ecuaciones

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

Para resolver para Z, haga un ajuste de mínimos cuadrados para encontrar

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

y el error para cada componente como

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

Eso es todo lo que puedes hacer. De alguna manera tienes que decidir cómo dividir z dentro HB y Hbo2. No se proporciona información sobre esto en la declaración del problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top