curve fit error question
이전 댓글 표시
I'm getting an error saying error using lsqcurvefit: function value and YDATA sizes are not equal. (line 11)
I've checked the number of elements in TR and S and it says they are equal, I have no idea what I'm doing wrong.
Can anyone help?
nativeP = load ('npcaa_t1w.mat');
funT1 = @(x, t) x(1).*(1 - exp(-t./x(2)));
x0 = [50, 1000];
lb = [0, 0];
ub = [500, 10000];
TR = nativeP.dataset.methodparx.MultiRepTime;
S = squeeze(nativeP.dataset.data(128, 128, :));
[x, resnorm, residual, exitflag, output] = lsqcurvefit(funT1, x0, TR, S, lb, ub);
S0 = x(1);
T1 = x(2);
Sfit = funT1(x, TR);
figure(5)
plot(TR, S, 'o')
hold on
plot(TR, Sfit)
xlabel('TR [ms]')
ylabel('S [A.U.] ')
title('Curve-fitting with lsqcurvefit')
legend('Measurement', 'Fitted Model')
댓글 수: 5
So if you insert the lines
size(TR)
size(S)
after the lines
TR = nativeP.dataset.methodparx.MultiRepTime;
S = squeeze(nativeP.dataset.data(128, 128, :));
in your code, you get really identical results ? Not transposed ? Not an additional dimension 1 ?
Torsten
2023년 2월 12일
Then you must transpose one of the data arrays, e.g.
[x, resnorm, residual, exitflag, output] = lsqcurvefit(funT1, x0, TR, S.', lb, ub);
Donal Walsh
2023년 2월 12일
Torsten
2023년 2월 12일
I showed you in the modified call to the integrator above.
Donal Walsh
2023년 2월 12일
답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!