How to perform nonlinear regression accross multiple datasets

11 ビュー (過去 30 日間)
Jack Nolan
Jack Nolan 2021 年 2 月 19 日
コメント済み: Jack Nolan 2021 年 2 月 25 日
Appolgies in advance as I am new to MATLAB.
I am trying to fit a model to mutiple data sets at once using non linear regression. I have found similiar examples but I am unable to modify them to suit my needs.
The model contains 3 unkown paramaters that must be tuned to satsifty (or give best model fit) accross 4 data sets at once.However, the model also contains 1 known paramater which is different for each of the 4 datasets.
Model to fit:
  • ΔRon/Ron are the data set y values
  • t is the data set x values
  • A1, A2, γ are unkown paramaters (common to all data sets) which must be found
  • tau is a kown paramaer whcih differs accross all data sets
I have attached an m-file with relevant data and information. If sombody could provide guidance or a commented solution I would be very grateful. Thanks.
  8 件のコメント
Alex Sha
Alex Sha 2021 年 2 月 21 日
Matlab should be OK, but need you to do more work.



Deepak Meena
Deepak Meena 2021 年 2 月 24 日
Hi Jack,
The following post on MATLAB Answers discusses a similar case:
In that question , there were 2 unknown shared parameters and 1 parameter was different for all the dataset but was also unknown. In this question we have 3 unknown shared parameters and 1 known parameters whose value will be different for each dataset.So I modified that to illustrate that :
function sharedparams
t = (0:10)';
T = [t; t; t;t];
Y = 3 + [exp(-t/2); 2*exp(-t/2); 3*exp(-t/2);4*exp(-t/2)] + randn(44,1)/10;
dsid = [ones(11,1); 2*ones(11,1); 3*ones(11,1);4*ones(11,1)];
X = [T dsid];
A3 = [-5;1;3;4];
b = nlinfit(X,Y,@subfun,ones(1,3))
function yfit = subfun(param,X)
T = X(:,1); % time
dsid = X(:,2); % dataset id
A0 = param(1);
A1 = param(2);
A2 = param(3);
A3 = [-5;1;3;4]; %known paramter
yfit = A0 + A1+ A2*T + A3(dsid);
  7 件のコメント
Jack Nolan
Jack Nolan 2021 年 2 月 25 日
Thanks alot @Tom Lane, it's working now


その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by