Hi There,
Since in my last question it was mentioned that i can't use Multistart for 'Fit', i would have to run the Multi combination process manually. Hence, the following….
I have
- single pixel data in X and Y
- My model is 'fparam'
- Lower bound 'lb'
- Upper bound 'ub'
- custom starting points in 'custmPt' here attached as startpoints.mat
- size of the custmPt is (584497 x 4) means i have 584497 different combinations that i need to run 'fit' process on.
Since, i need to repeat the whole combination process for each pixel of my mask as shown in fig.1, running fitting process for each combination of startingpoint will be very time consuming, i want to use 'parfor' and run the fitting procedure.
However, as per the MATLAB documentation Fit in Matlab , 'fit' generates 'struct' as output, i am not sure how i can SAVE them while running PARFOR. This structures will have several fields which i will use them later to select best solution of the process.
So, in terms of algorithm, i want to do the following…
-> for each pixel of the mask
create custom startpoints within bound
parfor (try different startpoint combinations and FIT process) % parallel process
save output of FIT process (structures) from each combination
end
select best solution
repeat the for loop.
end
fparam = fittype(@(a,b,c,d,x)(a)*exp(-(1/b)*x)+abs(1-a)*(exp(-(1/c)*x))+d); lb = [0,0,0,0]; ub = [1,30,200,80]; x = [3.39,8.59,13.8,19,24.2,29.4,34.6,39.81,45.0,50.21]; y = [1,0.2905,0.0894,0.0838,0.1173,0.1006,0.0782,0.0894,0.1061,0.0726] custmPt = load('startpoints.mat');parfor Yt = 1:size(custmPt,1) aL2 = custmPt(Yt); opts = fitoptions('Display','Off','Method','NonlinearLeastSquares','Normalize','Off',... 'Startpoint',aL2, 'Robust', 'On', 'Lower',lb,'Upper',ub,... 'TolFun',1e-3); [estTmp,Goft,Out] = fit(x,y,fparam,opts); % /\ /\ /\
% || || ||
%
%
% /\
% || This arrows show that they are structures containing output of the fit process
%%%%%%%%%%%%%%%%%%%%%%% Still need to implement the saving of parameters to use them outside PARFOR loop %%%%%%%%%%%%%%%%%%%%%%%%%%%
end
So, how can i implement saving of 'Struct' in 'PARFOR' so i can access them later for further processing ?
Thank you for your help
Best Answer