How to define fittype object from custom function?

5 vues (au cours des 30 derniers jours)
Fotaras Sitof
Fotaras Sitof le 24 Nov 2015
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.

Réponses (1)

Aditya
Aditya le 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

Catégories

En savoir plus sur Linear and Nonlinear Regression dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by