我正在使用Matlab的曲線擬合工具,cftool
,以適應我有的一組點。我面臨的問題是生成代碼函數不會給我與cftool
中生成的相同的結果。Matlab的曲線擬合工具,cftool,生成的代碼函數並沒有給出相同的擬合
這不是我想要的,因爲我希望能夠從殘差圖中檢索數據。我也可以從cftool
複製功能並手動完成。但我不明白爲什麼生成的代碼不會給我相同的曲線擬合。
的cftool
會議文件:http://dl.dropbox.com/u/20782274/test.sfit
從MATLAB生成的代碼:
function [fitresult, gof] = createFit1(Velocity, kWhPerkm)
%CREATEFIT1(VELOCITY,KWHPERKM)
% Create a fit.
%
% Data for 'untitled fit 3' fit:
% X Input : Velocity
% Y Output: kWhPerkm
% 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 02-Dec-2012 16:36:19
%% Fit: 'untitled fit 3'.
[xData, yData] = prepareCurveData(Velocity, kWhPerkm);
% Set up fittype and options.
ft = fittype('a/(0.008*x) + c*x^2 + d*90', 'independent', 'x', 'dependent', 'y');
opts = fitoptions(ft);
opts.DiffMaxChange = 0.01;
opts.Display = 'Off';
opts.Lower = [-Inf -Inf -Inf];
opts.MaxFunEvals = 1000;
opts.MaxIter = 1000;
opts.StartPoint = [0 0 0];
opts.Upper = [Inf Inf Inf];
% Fit model to data.
[fitresult, gof] = fit(xData, yData, ft, opts);
% Create a figure for the plots.
figure('Name', 'untitled fit 3');
% Plot fit with data.
subplot(2, 1, 1);
plot(fitresult, xData, yData, 'predobs');
% Label axes
xlabel('Velocity');
ylabel('kWhPerkm');
grid on
% Plot residuals.
subplot(2, 1, 2);
plot(fitresult, xData, yData, 'residuals');
% Label axes
xlabel('Velocity');
ylabel('kWhPerkm');
grid on
曲線I與生成的代碼獲得: http://i.stack.imgur.com/65d1P.jpg
的曲線,我需要: http://i.stack.imgur.com/p3Egp.jpg
所以呢任何人都知道哪裏出了問題?
CNC中 和速度和WhPerkm數據文件:http://dl.dropbox.com/u/20782274/data.mat
當我使用從CFTOOL http://dl.dropbox.com/u/20782274/data.mat的數據,我得到什麼樣子非常適合:http://i.stack.imgur.com/DnUND.png。 當我使用會話中的數據(http://dl.dropbox.com/u/20782274/test.sfit)和生成的代碼時,我得到了另一個不錯的結果:http://i.stack.imgur。 COM/O9USJ.png。 你可以檢查你使用的數據與生成的代碼? – ManWithSleeve