Applying logic to Curve Fitter Output
Show older comments
I am trying to use Curve Fitter and generating the code to help teach myself how to process my data without Curve Fitter.
Is there a way to apply a logic that a certain data point should be lower/higher than another certain data point, and have the coefficients adjust accordingly?
%CREATEFIT(TWOSOUSANDTQSPK,TWOSOUSANDTQAPC,TWOSOUSANDTQNM)
% Create a fit.
%
% Data for '2000 copy 1' fit:
% X Input: twosousandTQSPK
% Y Input: twosousandTQAPC
% Z Output: twosousandTQnm
% Output:
% fitresult : a fit object representing the fit.
% gof : structure with goodness-of fit info.
%
% See also FIT, CFIT, SFIT.
% Auto-generated by MATLAB on 18-Jul-2024 20:43:50
%% Fit: '2000 copy 1'.
[xData, yData, zData] = prepareSurfaceData( twosousandTQSPK, twosousandTQAPC, twosousandTQnm );
% Set up fittype and options.
ft = fittype( 'A+(x*B)+(C*x*x)+(y*x*D)+(y*x*x*E)+(y*F)', 'independent', {'x', 'y'}, 'dependent', 'z' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.MaxFunEvals = 60000;
opts.MaxIter = 40000;
opts.StartPoint = [0.0526769976807926 0.737858095516997 0.269119426398556 0.422835615008808 0.547870901214845 0.942736984276934];
opts.TolFun = 0.1;
opts.TolX = 0.1;
% Fit model to data.
[fitresult, gof] = fit( [xData, yData], zData, ft, opts );
% Plot fit with data.
figure( 'Name', '2000 copy 1' );
h = plot( fitresult, [xData, yData], zData );
legend( h, '2000 copy 1', 'twosousandTQnm vs. twosousandTQSPK, twosousandTQAPC', 'Location', 'NorthEast', 'Interpreter', 'none' );
% Label axes
xlabel( 'twosousandTQSPK', 'Interpreter', 'none' );
ylabel( 'twosousandTQAPC', 'Interpreter', 'none' );
zlabel( 'twosousandTQnm', 'Interpreter', 'none' );
grid off
view( -2.9, 15.3 );
I am looking to apply that the output data should follow the 'twosousandTQSPK' axis relative. I reserached the weighting function, but I I don't know how I could accurately match the data inputs I have to weight it.
This is an example of what I am expecting with a different set of variables, but the results above in question should resemble this outcome to some degree.
%CREATEFIT(SIXTEENTQSPK,SIXTEENTQAPC,SIXTEENTQNM)
% Create a fit.
%
% Data for '1600 copy 2' fit:
% X Input: sixteenTQSPK
% Y Input: sixteenTQAPC
% Z Output: sixteenTQnm
% Output:
% fitresult : a fit object representing the fit.
% gof : structure with goodness-of fit info.
%
% See also FIT, CFIT, SFIT.
% Auto-generated by MATLAB on 18-Jul-2024 20:55:15
%% Fit: '1600 copy 2'.
[xData, yData, zData] = prepareSurfaceData( sixteenTQSPK, sixteenTQAPC, sixteenTQnm );
% Set up fittype and options.
ft = fittype( '(y*A)+B+(x*C)+(D*x*x)+(y*x*E)+(y*x*x*F)', 'independent', {'x', 'y'}, 'dependent', 'z' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.MaxFunEvals = 60000;
opts.MaxIter = 40000;
opts.StartPoint = [0.0430238016578078 0.168990029462704 0.649115474956452 0.73172238565867 0.647745963136307 0.450923706430945];
opts.TolFun = 0.1;
opts.TolX = 0.1;
% Fit model to data.
[fitresult, gof] = fit( [xData, yData], zData, ft, opts );
% Plot fit with data.
figure( 'Name', '1600 copy 2' );
h = plot( fitresult, [xData, yData], zData );
legend( h, '1600 copy 2', 'sixteenTQnm vs. sixteenTQSPK, sixteenTQAPC', 'Location', 'NorthEast', 'Interpreter', 'none' );
% Label axes
xlabel( 'sixteenTQSPK', 'Interpreter', 'none' );
ylabel( 'sixteenTQAPC', 'Interpreter', 'none' );
zlabel( 'sixteenTQnm', 'Interpreter', 'none' );
grid off
view( -0.5, -13.0 );
3 Comments
Steven Lord
on 19 Jul 2024
I am looking to apply that the output data should follow the 'twosousandTQSPK' axis relative.
I'm not quite sure I understand what you mean. Do you mean that if the value in twosousandTQSPK corresponding to one point P1 is greater than the value in twosousandTQSPK corresponding to another point P2 that the value of the fitted surface at point P1 must also be greater than the value of the fitted surface at point P2? Or do you have something else in mind for "follow the axis relative"?
Can you upload (or post code to create) a small sample data set (let's say points on a 20-by-20 or smaller grid) and show us exactly what you're hoping to achieve using that smaller data set?
Eric
on 20 Jul 2024
Eric
on 20 Jul 2024
Moved: Walter Roberson
on 20 Jul 2024
Accepted Answer
More Answers (0)
Categories
Find more on Get Started with Curve Fitting Toolbox 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!