Fitting a convolution
Show older comments
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.
Answers (2)
Andrei Bobrov
on 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);
1 Comment
Niles Martinsen
on 8 Jun 2012
Niles Martinsen
on 8 Jun 2012
0 votes
Categories
Find more on Correlation and Convolution in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!