Два неизвестных 3 уравнения - PullRequest
0 голосов
/ 19 октября 2011

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

Bxy = AB * HB + AB * Hbo2

Rxy = AR * HB + AR * Hbo2

Gxy = AG * HB + AG * Hbo2

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

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

EDIT

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

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

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)

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

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

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

Ответы [ 3 ]

2 голосов
/ 19 октября 2011

Что вам, вероятно, нужно, так это то, что называется решением наименьших квадратов (см. Раздел об общей проблеме) .Подводя итог, вам не гарантируется точное решение в зависимости от ваших 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];
1 голос
/ 20 октября 2011

Выражение 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. Информация об этом не указана в постановке задачи.

1 голос
/ 19 октября 2011

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

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

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

Bxy = AB * HB + AB * Hbo2

Rxy = AR * HB + AR * Hbo2

, что приводит к матрице

[AB AB]

[AR AR]

...