How to use the function 'fit' on array of data and create an array of 'fit objects'

39 views (last 30 days)
The 'fit' function does not seem to be friendly with arrays / matrices / variables.
for ii = 1:size(Y,2)
fitVar(ii)=fit(X,Y(:,ii),'exp1');
end
returns
Error using cfit/subsasgn (line 7)
Can't assign to an empty FIT.
while
for ii = 1:size(Y,2)
fit(X,Y(:,ii),'exp1');
end
works fine.
However, I can't do
fit(X,Y,'exp1')
if X is a dependent vector [10 x 1] which and Y is an independent matrix [10 x nSamples].
What is the solution?

Answers (1)

Philip Caplan
Philip Caplan on 17 Apr 2015
Hi Eric - you cannot have arrays of "cfit" or "sfit" objects, which is the type returned by "fit". As such, you cannot index into this array because MATLAB thinks you are assigning (via subscripting) to an empty fit object. Instead, you can hold your "fit" objects in a cell array. The only change you need to make to your code is to use curly braces {} to index into "fitVar":
for ii = 1:size(Y,2)
fitVar{ii} = fit(X,Y(:,ii),'exp1');
end
  1 Comment
Eric Diaz
Eric Diaz on 17 Apr 2015
Thank you for you're reply. This only partially solves the problem. Is there no way for "cfit" or "sfit" "fit" family of functions to do perform their job on matrices? Like other linear algebra matrix functions in MATLAB?

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!