Error using cfit/subsref when trying to fit a smoothingspline
12 views (last 30 days)
Show older comments
According to documentation, if a fittype is specified, the output becomes [curve,gof] = fit(x,y,fttype)
My code is shown as follows:
A = importdata('exp65_C1.SS');
[x,y] = prepareCurveData(A(:,1),A(:,2));
[fit_o,~] = fit(x,y,'smoothingspline');
I get the error:
Error using cfit/subsref
Too many output arguments.
When I execute the fit line. I checked that x and y are both single column vectors of size 12776x1, and both have the same dimensions. The data goes from 0 to 0.83 for x, and 0 to 726 for y.
When I remove the ~ since it said I have too many output arguments, it gives this error instead:
Error using cfit/subsref>iParenthesesReference (line 36)
Too many inputs to CFIT/SUBSREF.
Error in cfit/subsref (line 15)
out = iParenthesesReference( obj, currsubs );
Which makes sense since fttype requires more than one output. Same error if I don't specify an output at all.
What is going on?
1 Comment
Walter Roberson
on 13 Feb 2025 at 19:43
Edited: Walter Roberson
on 13 Feb 2025 at 19:44
Which MATLAB release are you using?
R2015aSP1 is the oldest MATLAB version I have easy access to. The gof output is defined by R2015aSP1.
Answers (1)
Riya
on 13 Feb 2025 at 10:00
Hi Zhangxi,
I understand that you are encountering an error while trying to fit a "smoothingspline" to your dataset. I tried reproducing the issue with the following sample code:
clc; clear; close all;
% Generate synthetic data similar to yours
x = linspace(0, 0.83, 12776)'; % Column vector
y = linspace(0, 726, 12776)'.^1.5 + randn(12776,1)*10;
% Prepare curve data
[xData, yData] = prepareCurveData(x, y);
% Attempt to fit with smoothingspline
[fit_o, gof] = fit(xData, yData, 'smoothingspline');
% Display outputs
disp('Fitted Model:');
disp(fit_o);
disp('Goodness of Fit:');
disp(gof);
% Plot results
figure;
plot(fit_o, xData, yData);
title('Smoothing Spline Fit');
xlabel('x');
ylabel('y');
grid on;
This code is running successfully without any errors. It might be the case that there is some issue related to the dataset file “exp65_C1.SS” that you are using. You can try the following commands to make sure it contains numeric data and has the expected dimensions.
A = importdata('exp65_C1.SS');
size(A)
whos A
You can also try running the provided sample code to verify that the functions are working fine. If the problem still exists, please share the “exp65_C1.SS” file that you are using so that I can further debug the issue.
For more information about fitting a smoothing spline curve, please refer the following documentation:
Thanks!
0 Comments
See Also
Categories
Find more on Interpolation 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!