Fitting a convolution
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi
I have the following piece of code:
------------------------------------------------------------------------------------------
dataX = -4:1:4;
dataY = [0 -1 -10 -40 -55 10 40 10 1];
figure(1)
plot(dataX, dataY, '*');
x = -2:0.01:2;
plot(-4:0.01:4, 1*conv(exp(-x).*heaviside(x),sin(x)), dataX, dataY, '*')
mdl = @(a, x)(a(1)*conv(exp(-x).*heaviside(x),sin(x)));
par=[1];
[fitted_par, r, J, cov, mse] = nlinfit(dataX, dataY, mdl, par);
------------------------------------------------------------------------------------------
What I am trying to do is to fit the function (a convolution) to the data set. However, I get an error due to vector size mismatch. I'm not sure what is going on here: The fitting routine should not care about how many data points I have?
Regards, Niels.
0 Kommentare
Antworten (2)
Andrei Bobrov
am 8 Jun. 2012
Try
mdl = @(a, x)a*conv(exp(-x).*heaviside(x),sin(x),'same');
[fitted_par, r, J, cov, mse] = nlinfit(dataX, dataY, mdl, 1);
Siehe auch
Kategorien
Mehr zu Statistics and Machine Learning Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!