Одна великая вещь, что вы можете сделать, это использовать «Curve фитинг» App в Matlab. вы можете найти его в APPS, в разделе «Математика, статистика и оптимизация».
там вы можете выбрать свои данные x и y и функцию, которую вы хотите поместить над ними (экспоненциально или даже обычай).
Затем вы можете увидеть результаты фитинга на графике, а также параметры подгонки.
Если вы были удовлетворены результатами и хотите использовать их внутри кода, просто нажмите на код генерации под вкладкой «Файл». Curve fitting app
вы можете увидеть подробности на этом скриншоте, который я взял. после нажатия кнопки генерации кода, Matlab создаст fuction, который даст тот же результат. то, что я хотел бы сделать, это просто скопировать части мне нужно в этом случае:
enter code here
[xData, yData] = prepareCurveData(x, y);
% Set up fittype and options.
ft = fittype('a +(b-a)*exp(-c*x)', 'independent', 'x', 'dependent', 'y');
opts = fitoptions('Method', 'NonlinearLeastSquares');
opts.Display = 'Off';
opts.StartPoint = [0.957166948242946 0.485375648722841 0.8002804688888];
% Fit model to data.
[fitresult, gof] = fit(xData, yData, ft, opts);
, как вы можете увидеть MATLAB добавляет необходимые детали, и теперь вы можете получить доступ к подгоночным параметрам с помощью fitresult. например-> fitresult.a
Спасибо! Я сделал это, но получил предупреждение о начальной точке, которая выбрана случайным образом! Это сообщение: Внимание: стартовая точка не указана, выбор случайного запуска пункт. > Предупреждение> Warning.throw at 30 In fit> iFit at 299 В соответствии с 108 – Amir
@Amir Вы прочитали связанную документацию? вы можете указать начальную точку, используя 'fit (x, y, 'a + (b-a) * exp (-c * x)', 'StartPoint', [x0, y0])' –
Да. Но я не уверен в выборе точки или какой точки моего набора данных. Это просто полезный момент для ускорения интерполяции (как первоначальное предположение для итераций)? Или это может повлиять на приведенную функцию и важно? – Amir