Subscripted assignment dimension mismatch in for loop

Does anyone know what's wrong with this? I have tdatas and tissdatas with size (225x4). Every time I run this, I get the following error: Subscripted assignment dimension mismatch. Where am I wrong in this code? I just don't understand it or find it.
for i=1:length(tdatas(1,:))
fun = @(p,tdatas) objfunction(p,tdatas,tu);
z(i)=lsqcurvefit(fun,param0,tdatas(:,i),...
tissdatas(:,i),[0 0 0 0],[1 1 1 1],options);
end

1 Comment

Or the following: In an assignment A(:) = B, the number of elements in A and B must be the same.

Sign in to comment.

 Accepted Answer

You are estimating and returning 4 parameters, and assigning them to a 1 dimensional scalar. I do not know whether you are returning row or column vectors, so the easiest way is to use ‘z’ as a cell array:
z{i} = lsqcurvefit(fun,param0,tdatas(:,i),...
tissdatas(:,i),[0 0 0 0],[1 1 1 1],options);
Note the curly brackets ‘{}’ denoting cell array indexing.

4 Comments

Arbol
Arbol on 11 Jun 2017
Edited: Arbol on 11 Jun 2017
This work, I don't know why. But it should return a scalar value? since I index tdatas(:,1)? Or is it because of my anonymous function? So it looks like it doesn't return a scalar value then. Hmm weird.
It should not return a scalar value in your code. (It would if you were only fitting one parameter.) The lsqcurvefit function estimates (and returns) the best-fit parameter vector for your model and data (and other outputs if you ask for them).
The lsqcurvefit function returns a vector because your anonymous function fits 4 parameters. There is nothing wrong with your code or with lsqcurvefit.
Please see the documentation on lsqcurvefit for an explanation of what it returns.
Arbol
Arbol on 11 Jun 2017
Edited: Arbol on 11 Jun 2017
Oh sorry, yes, you are right! It will return 4 parameters. You are the best man! haha

Sign in to comment.

More Answers (0)

Tags

Asked:

on 11 Jun 2017

Commented:

on 11 Jun 2017

Community Treasure Hunt

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

Start Hunting!