我正在做一个有关弥散MRI的项目。我一直在尝试应用一个方程Sb = s0 * exp((-1)* bd),其中b是与磁场的方向和大小相关的一组对称3x3张量,d是与之相关的3x3张量根据扩散的方向和幅度,s0是没有扩散的图像,而'。'是Frobenius内积(相应条目的乘积之和)。
然后,我尝试通过计算b.d = -ln(Sb / s0)来反转操作以返回d来验证我的方法。由于b是对称的,所以我假设
b(1,1)d(1,1)+ b(2,2)d(2,2)+ b(3,3)d(3,3)+ 2 * b(1,2) d(1,2)+ 2 * b(1,3)d(1,3)+ 2 * b(2,3)d(2,3)= -ln(Sb / s0)
如果我至少有6个张量,我应该能够通过仅对扩展矩阵进行行缩减或将ln(Sb / s0)乘以包含来自张量系数的矩阵的逆来求解d系数。 / p>
除了我在代码中进行编码时,它说d系数是不确定的。
这是代码,它是我正在使用的代码的简化:
% Get b values:
G = [-0.049 -0.996 -0.074;
-0.996 0.043 0.080;
0.078 -0.078 0.994;
0.498 -0.556 -0.665;
-0.524 -0.663 0.535;
0.708 0.344 0.617;];
B1 = zeros(3,3,6);
for i = 1:6
B1(:,:,i) = G(i,:)'*G(i,:);
end
% Get btensors
btensor = cell(1,6);
for j = 1:6
btensor{1,j} = 1000.*(B1(:,:,j)./sum(diag(B1(:,:,j))));
end
% Set up a test matrix, D.
D = [1 2 3; 2 4 5; 3 5 6];
s0 = 2;
Sb = zeros(6,1);
track=zeros(6,1);
% Solve Sb = S0*exp(-dot(b,D)) for the 32 b-matrices
for i=1:6
track(i,1) = (-1)*sum(dot(D, btensor{1,i}));
Sb(i,1) = exp((-1)*sum(dot(D, btensor{1,i})));
end
disp(track);
disp(Sb);
% Now work backwards using Sb to solve for D.
bCoefficients = zeros(6,6);
for i=1:6
bCoefficients(i,:) = [btensor{1,i}(1,1), btensor{1,i}(2,2), btensor{1,i}(3,3), btensor{1,i}(1,2), btensor{1,i}(1,3), btensor{1,i}(2,3)];
end
delta = inv(bCoefficients);
dc = delta*(-log(Sb/s0));
disp(dc);
这是我的-ln(Sb / s0),exp(-ln(Sb / s0))和D ...的值的输出,这些值不在原始矩阵中:
-4957.86349139358
-422.707982384668
-5623.0249029198
-4743.73827380387
89.2069934124379
-8973.85255661114
0
2.63181764233683e-184
0
0
5.52210914427115e+38
0
NaN
NaN
NaN
NaN
NaN
NaN
非常感谢您的帮助,非常感谢您的时间和专业知识。