"Input argument is undefined" when using nlinfit
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Gautam
el 27 de Mayo de 2014
Comentada: Gautam
el 28 de Mayo de 2014
Despite the variables all being defined in the workspace, implementation of the nlinfit function returns the error "Input argument p is undefined". The code I used follows:
fun = @(b,x,y,p) b(1).*x.*p.*((y/x).^b(2) - 1) + b(3)
b0 = [1 1 1];
mdl = nlinfit([x y p],q,fun, b0)
b0 gives the initial values for the coefficients to be determined - b1,b2,b3. fun is an anonymous function according to which the data is to be fit. x,y,p,q are all column vectors, which are visible in the workspace. Any help as to what is going on here would be greatly appreciated. Thank you very much in advance.
2 comentarios
Mahdi
el 27 de Mayo de 2014
It looks like you don't have the variable p defined at all in your work space.
Mahdi
el 27 de Mayo de 2014
If you already have y and p defined, why not simplify the problem and make it
fun=@(b,x) b(1).*x.*p.*((y/x).^b(2) - 1) + b(3)
b0=[1 1 1];
mdl=nlinfit(x,q,fun,b0)
Respuesta aceptada
the cyclist
el 27 de Mayo de 2014
Something like this?
x = rand(100,1);
y = rand(100,1);
p = rand(100,1);
q = rand(100,1);
M = [x y p];
fun = @(b,M) b(1).*M(:,1).*M(:,3).*((M(:,2)./M(:,1)).^b(2) - 1) + b(3)
b0 = [1 1 1];
mdl = nlinfit(M,q,fun, b0)
3 comentarios
the cyclist
el 27 de Mayo de 2014
Editada: the cyclist
el 27 de Mayo de 2014
Because nlinfit is only passing one variable [the matrix I defined as M, (called "X" in the documentation)] to fun(). In the syntax you used, MATLAB has no way of knowing that the array
[x,y,p]
should be parsed into the three separate variables of your function.
Más respuestas (0)
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!