Привет,

Я пытаюсь написать программу для линейного спектрального разделения с известными концами. У меня есть спектр флуоресценции и субспектры конечных членов (все отдельно измеренные). Что я хочу сделать, так это численно оценить интенсивность субспектров. В соответствии с приближением наименьших квадратов с моделью линейного спектрального разделения (S = A*S1 + B*S2 + C*S3….). У меня есть 9 endmembers в спектре. Поскольку я никогда не проводил числового анализа, может ли кто-нибудь указать мне правильное направление для начала?

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по назначению MatLab, Помощь по финансовым заданиям для студентов, инженеров и исследователей в нескольких отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech, ME, M.Tech, Ph.D. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

Позвольте мне пробраться сюда. Из вашего вопроса у вас есть измеренный совокупный спектр, а также измеренные компоненты, из которых, как вы предполагаете, состоит совокупность. Поскольку они измерены, они НЕ являются гауссовскими компонентами, что часто является лишь плохим приближением к форме этих компонентов. (Гауссианы симметричны и имеют очень специфическую форму.) И, поскольку вы их измерили, в любом случае нет причин аппроксимировать их гауссианами.

Таким образом, задана «функция» F, выбранная из набора дискретных наборов длин волн. Таким образом, у вас есть измеренный спектр на наборе n длин волн. На тех же длинах волн у вас есть 9 отдельных компонентов, я назову их S_i. На самом деле, F является дискретно дискретной функцией длины волны, лямбда, как и компоненты.

Теперь вы создаете модель смеси для F,

F = a_1*S_1 + a_2*S_2 + a_3*S_3 + ... + a_9*S_9

Таким образом, на любой длине волны предполагается, что измеренный спектр является некоторой (неизвестной) линейной комбинацией подспектров измеренных компонентов. Вы хотите оценить доли компонентов, возможно, как вектор

A = [a_1; a_2; ... ; a_9]

Логически, a_i будет ограничено неотрицательным значением, о чем я подробно расскажу ниже. Я определил A как вектор-столбец, потому что именно так его возвращает большинство кода в MATLAB.

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

Предполагая, что векторы столбцов для F и S_i имеют одинаковую длину, затем задайте матрицу n на 9 S, где столбцы S являются 9-компонентными подспектрами.

S = [S_1,S_2,S_3,S_4,S_5,S_6,S_7,S_8,S_9];

Тогда, если F также является вектор-столбцом длины n,

A = S\F;

Это простая линейная регрессия (мало чем отличающаяся от той, которую вернула бы регрессия), и она будет приемлемо работать в НЕКОТОРЫХ случаях, но иногда она будет ужасно давать сбои, потому что не использует неотрицательных ограничений на коэффициенты в A.

Дело в том, что отрицательная составляющая не имеет физического смысла. У вас не может быть отрицательного количества некоторых подспектров в смеси, но простая линейная регрессия, вероятно, даст именно это. Это произойдет из-за того, что в процессе измерения есть некоторый шум, из-за того, что ваши измеренные спектры не были точно измерены, или из-за того, что вы можете внести некоторый вклад в то, что вы на самом деле не измеряли (часто описывается как несоответствие), или из-за несоответствия. несколько других проблем, о которых я забыл упомянуть. Дело в том, что это произойдет.

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

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

A = lsqnonneg(S,F);

Теперь A будет вектором с неотрицательными компонентами, которые дают наилучшее возможное решение с учетом ограничений неотрицательности. На самом деле, иногда некоторые из компонентов A могут содержать МАЛЕНЬКИЕ отрицательные числа порядка

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ