Вопрос

У меня есть 3 уравнения и 2 неизвестных HB и HBO2, они выглядят так:

Bxy = ab * hb + ab * hbo2

Rxy = ar * hb + ar * hbo2

Gxy = ag * hb + ag * hbo2

Теперь я пытался использовать метод матрицы, чтобы решить неизвестные для них уравнения, что является болью в заднице причины, когда я преобразую его в форму матрицы, я получаю нерегулярную матрицу, потому что это 2 неизвестных и 3 уравнения.

Кто-нибудь здесь знает, как решить n количества уравнений с N-1 неизвестными.

РЕДАКТИРОВАТЬ

Спасибо за ответы до сих пор, они были великолепны.

Чтобы сделать это более ясным, я пытаюсь сделать концентрацию кислородочной и дезоксигенированной крови на данном пикселе на изображении. Таким образом, переменные, выше, соответствуют следующему.

RXY GXY и BXY, красный зеленый или синий поглощен в положении x, y. (значение между 0 - 255)

AR, AG, AB - это коэффициент поглощения света для красных и синих длин волн для крови. (Однако есть вероятность, что мне может придется определить различные коэффициенты поглощения для оксигенированной и дезоксигенированной крови (поскольку они поглощают различные количества света)).

HB и HBO2 - концентрация кислородо -гигенированной и дезоксигенированной крови. (Они неизвестны, так как я пытаюсь сопоставить значения RGB с этим)

Однако я также заметил, что коэффициенты для кислорода и дезоксигенированной крови различны, поэтому это означает, что уравнение может быть следующим.

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

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

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

Единственное различие в вышеупомянутом состоит в том, что коэффициенты различны для кислородности и дезоксигенированной крови.

Это все часть моего последнего курса проекта в Uni для компьютерных наук, пытаясь сделать некоторую функциональную визуализацию.

@Chris делает то же самое, что применимо, если есть разные коэффициенты, извините за отсутствие понимания, математика не является моей самой сильной точкой. Просто пытаюсь запрограммировать этот алгоритм.

Это было полезно?

Решение

Что вы, вероятно, хотите, так это то, что называется Решение с наименьшими квадратами (см. Раздел об общей проблеме). Анкет Подводя итог, вам не гарантируется точное решение в зависимости от вашего A а также b Когда вы пытаетесь решить A*x=b здесь.

Однако, вычисляя xLS = inv(A'*A)*A'*b Вы получите что -то как можно ближе к решению (в меньшей степени квадраты). Обратите внимание, что A' означает транспонирование A. Анкет Также обратите внимание, если A'*A не является обратимым, тогда ваша система уравнений недостаточна (это означает, что у вас эффективно меньше уравнений, чем вы думаете.)

Если у вас есть:

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

Затем:

 A = [ ABhb  ABhbo2 
       ARhb  ARhbo2 
       AGhb  AGhbo2 ];

 x = [HB
      Hbo2];


 b = [Bxy
      Rxy
      Gxy];

Другие советы

Если у вас есть n уравнений и N-1 неизвестные, это означает, что вы можете устранить одно из уравнений, оно не имеет значения и зависит от двух других. Выясните, какой из них легче всего устранить, заменить, а затем у вас останется (n-1) x (n-1) матрица

Предполагая, что существует решение для всех трех уравнений, его можно найти, решив только два из них, чтобы получить двух неизвестных.

В этом случае кажется, что все ваши уравнения более или менее равны, помимо коэффициентов, поэтому я не думаю, что это будет иметь значение, какие из трех вы выбрали. Вы можете просто отбросить уравнение GXY и в конечном итоге с парой 2x2:

Bxy = ab * hb + ab * hbo2

Rxy = ar * hb + ar * hbo2

в результате матрицы

Ab ab

Ar ar

Epxression HB+Hbo2 то же самое во всех 3 уравнениях, и это может быть заменено на z=HB+Hbo2 Создание трех уравнений

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

Решить для Z, сделайте наименьшие квадраты, чтобы найти

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

и ошибка для каждого компонента как

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

Это все, что вы можете сделать. Каким -то образом вы должны решить, как разделить z в HB а также Hbo2. Анкет Никакой информации об этом не приведена в Заявлении о проблеме.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top