using nonlinearmodek fit for the first time
2 views (last 30 days)
Show older comments
Hi,
I wanted to fit a nonlinear model to my data but I keep getting an error.
This is the error:
>> untitled2
Unable to resolve the name NonLinearModel.fit.
Error in untitled2 (line 17)
myFit = NonLinearModel.fit(X,Y, 'y ~ b0 + b1*cos(b2*x1 + b3)*exp(-b4*x1)', [B0, B1, B2, B3,B4]);
This is my code:
X=table2array(X);
Y=table2array(Y);
% Note that we need to pass three sets of input arguments to NonLinearModel
% # The X and Y data
% # A string describing our model
% # Starting conditions for the optimization solvers
% Generate some good starting conditions for the solvers
scatter(X, Y)
hold on
B0 = mean(Y); % Vertical shift
B1 = (max(Y) - min(Y))/2; % Amplitude
B2 = 2; % Phase (Number of peaks)
B3 = 0; % Phase shift (eyeball the Curve)
B4 = 5;
myFit = NonLinearModel.fit(X,Y, 'y ~ b0 + b1*cos(b2*x1 + b3)*exp(-b4*x1)', [B0, B1, B2, B3,B4]);
% Note that all the coefficient estimates are very good except for b3 where
% any even integer is equally valid
%%look at the complete set of methods
methods(myFit)
%%Generate a plot
hold on
plot(X, myFit.Fitted)
hold off
Do I need to define the nonlinearmodel? or download another extent?
Thank you so much in advanced!
0 Comments
Answers (1)
Star Strider
on 24 Apr 2022
4 Comments
Star Strider
on 25 Apr 2022
Change ‘B4’ to something smaller (perhaps 2). It may also be necessary to subtract ‘X(1)’ from the rest of ‘X’ so that the record begins at 0. That should not affect the parameter estimates.
It may be necessary to experiment a bit, especially with ‘B4’.
It would help to have your data, preferably as a spreadsheet or text file since the online Run feature does not work well with .mat files.
That aside, my code works!
Running your data with the code from How to filter noise from time-frequency data and find natural frequency of a cantilever? could help with estimating the parameters. Then use those as the initial parameter estimates for fitnlm. It will improve on the initial estimates, and give all the necessary statistics.
See Also
Categories
Find more on Biological and Health Sciences 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!