How to define fittype object from custom function?
5 views (last 30 days)
Show older comments
Dear all,
I'm trying to define a fittype object from the function y = fun(x,c1,c2,c3,c4,c5,c6,P), where c1,c2,c3,c4,c5,c6 are the variable fitting parameters and P is a constant struct:
ft = fittype(@(c1,c2,c3,c4,c5,c6,x) fun(x,c1,c2,c3,c4,c5,c6,P), 'independent', {'x'}, 'dependent', {'y'});
but get the following errors:
Error using fittype>iTestCustomModelEvaluation (line 730) Custom equations must produce an output vector, matrix, or array that is the same size and shape as the input data. This custom equation fails to meet that requirement:
Error in fittype>iCreateFittype (line 367) iTestCustomModelEvaluation( obj );
Error in fittype (line 324) obj = iCreateFittype( obj, varargin{:} );
The function works fine producing same size x & y data so I have no clue why defining the fittype fails.
Thanks for any help.
0 Comments
Answers (1)
Aditya
on 3 Mar 2025
HI Fotaras,
When defining a fittype object in MATLAB, it's crucial to ensure that your custom function returns an output of the same size and shape as the input data. The error you're encountering suggests that this condition might not be satisfied when using your function fun.
% Example input
x_test = linspace(0, 10, 100); % Example x data
c1 = 1; c2 = 2; c3 = 3; c4 = 4; c5 = 5; c6 = 6; % Example parameters
P = struct('param1', value1, 'param2', value2); % Define P with your specific fields
% Evaluate the function
y_test = fun(x_test, c1, c2, c3, c4, c5, c6, P);
% Check size
disp(size(x_test));
disp(size(y_test));
% Define the fittype
ft = fittype(@(c1, c2, c3, c4, c5, c6, x) fun(x, c1, c2, c3, c4, c5, c6, P), ...
'independent', {'x'}, 'dependent', {'y'}, ...
'coefficients', {'c1', 'c2', 'c3', 'c4', 'c5', 'c6'});
function y = fun(x, c1, c2, c3, c4, c5, c6, P)
% Your function implementation
% Ensure y is the same size as x
end
0 Comments
See Also
Categories
Find more on Linear and Nonlinear Regression 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!