Ok, a very simple way to do it is the following.
You can use the function fminunc, that finds the minimum value of something. What is this something? You want your model to predict very well the y value, so the mean square error between y and the model is what you want to minimize. Let's define this function as errFunc depending on a vector param:
errFunc=@(param) mean((y - k1(x1)*(param(1)*x2)*(param(2)*x3.^(1/param(3)))).^2);
This works if you already have in your environment the data x1, x2,x3,y and also the function k1 that returns the right coefficient based on k1.
Then, you just need to call fminunc with the function you just created and a guess of the 3 values you are searching (let's just put random numbers as guess)
fminunc(errFunc,randn(3,1))
this will output the value of param you are searching for.
Probably you'll need to add another another coefficient, let's call it param(4), that is summed to your model to better fit the data.
Best Answer