130 views (last 30 days)

Show older comments

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.

Deepak Meena
on 24 Feb 2021

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)];

gscatter(T,Y,dsid)

X = [T dsid];

A3 = [-5;1;3;4];

b = nlinfit(X,Y,@subfun,ones(1,3))

line(t,b(1)+b(2)+b(3)*t+A3(1),'color','r');

line(t,b(1)+b(2)+b(3)*t+A3(2),'color','g');

line(t,b(1)+b(2)+b(3)*t+A3(3),'color','b');

line(t,b(1)+b(2)+b(3)*t+A3(4),'color','c');

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);

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

Start Hunting!