Обратная проблема Matlab - данные fmri - алгоритм частичной корреляции

Я использую следующий код, чтобы получить матрицу частичной корреляции (исходный код из http://www.fmrib.ox.ac.uk/analysis/netsim/)

ic=-inv(cov(ts1)); % raw negative inverse covariance matrix
r=(ic ./ repmat(sqrt(diag(ic)),1,Nnodes)) ./ repmat(sqrt(diag(ic))',Nnodes,1); % use diagonal to get normalised coefficients
r=r+eye(Nnodes); % remove diagonal 

Моя исходная матрица (ts1) представляет собой активность мозга с течением времени (переменная X) в нескольких вокселях-объемных пикселях 3X3 (переменная Y).

Проблема в том, что у меня больше зависимых переменных (y - воксели), чем независимых переменных (x - временной ход). Я получаю следующее предупреждение:

Предупреждение: матрица близка к единственной или плохо масштабируется. Результаты могут быть неточными. RCOND = 4,998365e-022.

Любые мысли о том, как исправить код, чтобы я получил частичную корреляцию между всеми вокселями?


person Gidon    schedule 06.09.2011    source источник
comment
Вы должны бегло прочитать о линейной алгебре, чтобы понять это предупреждение: по сравнению с обратным   -  person reve_etrange    schedule 24.10.2011


Ответы (1)


Предупреждение исходит от Matlab, у которого возникла проблема с инвертированием ковариационной матрицы.

Одним из решений может быть использование функции pinv() http://www.mathworks.com/help/techdoc/ref/pinv.html

person neuromusic    schedule 23.10.2011