MATLAB: “Input argument is undefined” when using nlinfit

argumentinputnlinfitStatistics and Machine Learning Toolboxundefined

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.

Best Answer

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)