필터 지우기
필터 지우기

nlinfit: problem with global and local variables and input data matrix

조회 수: 5 (최근 30일)
Julie
Julie 2014년 5월 14일
댓글: Star Strider 2014년 5월 28일
I am trying to use nlinfit to fit 14 sets of data to obtain a common exchange rate while a second scaling variable is also allowed to vary during the fit and should be different for each data set. I load a data file (f1) where the first row contains a 0 followed by my independent variables (24 of them) and each subsequent row has in column 1 a variable corresponding to the data in that row (ligand concentration) followed by the dependant variable (intensity) for the corresponding independent variables in row 1. I am getting the following error:
Error using nlinfit (line 122) Requires a vector second input argument.
Error in fit_lineshape_exchange (line 42) [beta,R]=nlinfit(x,y,@lineshape_exchange, beta0);
my function is below:
function f = lineshape_exchange(a)
%a(1) is k (the rate), a(2) is c (the weighting function allowing each
%spectrum to vary in intensity)
global K L v1 v2 Tp1 Tp2 w n
K=0.0000033;
Tp1=4.96;
Tp2=7.25;
v1=12.212;
v2=13.114;
f=0; for j=1:n
t=1/(a(1*L*(1+K)));
p1=K*a(1)*L*t;
p2=1-p1;
W=v1-v2;
P=t*((1/Tp1*Tp2)-4*pi^2*w^2+pi^2*W^2)+(p1/Tp1)+(p2/Tp2);
Q=t*(2*pi*w-pi*W*(p1-p2));
R=2*pi*w*(1+t*((1/Tp1)+(1/Tp2)))+pi*W*t*((1/Tp1)-(1/Tp2)+pi*W*(p1-p2));
f=a(2)*(P*(1+t*(p2/Tp1 + p1/Tp2))+Q*R)/(P^2+R^2);
end

답변 (1개)

Star Strider
Star Strider 2014년 5월 14일
First, from the documentation, modelfun must accept two input arguments, a coefficient vector and an array X—in that order—and return a vector of fitted response values. ’ So your function statement should be:
function f = lineshape_exchange(a,x)
Second, what sizes are your x and y arrays? I get the impression they’re matrices and not vectors. The nlinfit function can take matrix x values, but must return a vector of estimated function values, and y must be a vector as well. (The lsqcurvefit function in the Optimization Toolbox can take matrix independent variables and fit them to matrix dependent variables.)
  댓글 수: 16
Star Strider
Star Strider 2014년 5월 28일
I found a different paper by one of the same authors in PNAS that explained the equations more clearly. I’m having problems understanding the NMR equations. That technology is definitely not my area of expertise, and I need to understand at least some of it in order to understand what you’re doing. It will be easier with a bit more information that I’m still not clear on:
  • What parameters do you have and what are they?
  • Do any of them change in the various data you posted, or are they constant across all?
  • If any of them change, which ones? What values do they take for each run?
  • What parameters do you want to estimate?
When I get the opportunity to read a bit more about NMR, I’ll probably go ahead and code the function myself. If it works, I’ll post it here.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Dimensionality Reduction and Feature Extraction에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by