matlab - приближение функции наименьших квадратов двух переменных - PullRequest
4 голосов
/ 28 декабря 2010

У меня есть функция двух переменных типа: y = f (x1, x2) для аппроксимации, и я хотел бы использовать для этого метод наименьших квадратов.

Polyval и Polyfit работают с двумя-мерная функция, здесь мне нужно решить трехмерную функцию.

Заранее спасибо.

GB

Ответы [ 2 ]

3 голосов
/ 28 декабря 2010

Я решил это следующим образом

A = [x1. ^ 2, x1. * X2, x2. ^ 2, x1, x2, единицы (длина (x1), 1)];c = A \ y;

yEval = c (1) * x1. ^ 2 + c (2) * x1. * x2 + c (3) * x2. ^ 2 + c (4) * x1+ c (5) * x2 + c (6);

В любом случае, спасибо за вашу помощь.

С уважением, GB

0 голосов
/ 28 декабря 2010

Глядя на вашу функцию, вы видите, что вы используете полную квадратичную поверхность отклика, чтобы соответствовать ей. Вы можете использовать функцию x2fx для генерации всех терминов. Здесь нет ничего революционного, но может быть немного чище. Вы также можете использовать его не только для подгонки OLS, но и для использования надежных методов. Вот код, который я написал:

% set up terms for the variables, linear, quadratic, interactive, and constant
paramVEcomponents= x2fx([MAPkpa,RPM],'quadratic');
% robust fit using a Talwar weighting function
[coefs,robuststats]= robustfit(paramVEcomponents(2:6),(CAM2.*TEMPd./MAPkpa),'talwar');
% generating points for all the data we have based on the new parameters of the response surface
GMVEhat= paramVEcomponents * coefs;
...