Мне нужно построить точки, которые имеют координаты:Как входных значений, построить их и найти наилучшее соответствие
(0.8,825.5)
(1.1,1096)
(1.3,1293)
(1.5,1404)
то мне нужно, чтобы найти наиболее подходящую кривую к следующему уравнению:
y = x*(a1*x + a2)*(1 – a12*25)
Возврат a1
, a2
и a12
.
вот что я пытался до сих пор не повезло:
Fzn = [0.8 1.1 1.3 1.4];
Dy = [825.5 1096 1293 1404];
x = Fzn;
y = Dy;
expr = 'x * (a1 * x + a2) * (1 - a12 * 25)';
ft = fittype(expr, 'independent', 'x', 'dependent','y');
opts = fitoptions('Method', 'NonlinearLeastSquares');
opts.StartPoint = [1 1 1]; %[a1 a2 a12]
[fitresult, gof] = fit(x, y, ft, opts)
% plot
LFit = feval(fitresult, x);
figure(1);
h = plot(x,LFit,'r-', x, y,'g.');
set(h, 'LineWidth',2)
legend({'Fit Line', 'data points'}, 'Location','SouthEast')
grid on
я получаю эту ошибку:
Error using fit>iFit (line 127)
X must be a matrix with one or two columns.
Error in fit (line 108)
[fitobj, goodness, output, convmsg] = iFit(xdatain, ydatain,
fittypeobj, ...
Error in HatcherTireTest2 (line 113)
[fitresult, gof] = fit(x, y, ft, opts)
Для создания нескольких точек используйте 'hold on'. Проверьте http://stackoverflow.com/questions/36667545/custom-equation-curve-fitting-in-matlab/36668335#36668335 для подгонки кривой – xvan
, но как я могу ввести эти значения/построить их? – Vbasic4now
У вас это есть в MATLAB? Почему вы не делаете простой регресс с помощью Excel? – 16per9